From 0f2bcee8e8bda6c66bd78cdbf55d36e7cc0dba06 Mon Sep 17 00:00:00 2001 From: Zwifi Date: Mon, 11 May 2026 16:28:16 +0200 Subject: [PATCH 1/7] Upgrade jose to v6 (#4267) * Bump jose to v6 * Adjust Jest config for ESM-only jose * Adjust to latest jose version * Temporary type bridge until cleaner openid-client migration * Fix windows CI config --- jest.config.ts | 14 +++- package-lock.json | 49 ++++-------- packages/browser/package.json | 2 +- .../AuthCodeRedirectHandler.spec.ts | 5 +- .../login/oidc/refresh/TokenRefresher.spec.ts | 5 +- packages/core/package.json | 2 +- .../src/authenticatedFetch/dpopUtils.spec.ts | 10 +-- .../core/src/authenticatedFetch/dpopUtils.ts | 4 +- .../authenticatedFetch/fetchFactory.spec.ts | 18 +++-- .../core/src/storage/StorageUtility.spec.ts | 14 ++-- packages/core/src/util/token.spec.ts | 78 +++++++++---------- packages/node/package.json | 2 +- packages/node/src/Session.static.spec.ts | 10 ++- .../AuthCodeRedirectHandler.ts | 7 +- .../ClientCredentialsOidcHandler.ts | 4 +- .../RefreshTokenOidcHandler.spec.ts | 4 +- .../oidcHandlers/RefreshTokenOidcHandler.ts | 6 +- .../login/oidc/refresh/TokenRefresher.spec.ts | 5 +- .../src/login/oidc/refresh/TokenRefresher.ts | 8 +- .../node/src/multiSession.fromTokens.spec.ts | 10 ++- packages/node/src/util/dpopInput.ts | 32 ++++++++ packages/oidc-browser/package.json | 2 +- .../src/__mocks__/issuer.mocks.ts | 4 +- tests/environment/customEnvironment.ts | 3 + 24 files changed, 162 insertions(+), 136 deletions(-) create mode 100644 packages/node/src/util/dpopInput.ts diff --git a/jest.config.ts b/jest.config.ts index 98298471af..cac914f4c2 100644 --- a/jest.config.ts +++ b/jest.config.ts @@ -25,6 +25,7 @@ import { createJsWithTsPreset, type JestConfigWithTsJest, } from "ts-jest"; +import { join } from "node:path"; // Jest 30 loads .ts config files as ESM via Node's native TypeScript support, // so `require` is not available. Use createRequire for require.resolve calls. @@ -40,11 +41,20 @@ const baseConfig: ArrayElement> = { ...defaultPreset, roots: [""], testMatch: ["**/*.spec.ts"], - modulePathIgnorePatterns: ["dist/", "/examples/"], + modulePathIgnorePatterns: ["dist", join("", "examples")], coveragePathIgnorePatterns: [".*.spec.ts", "dist/"], clearMocks: true, injectGlobals: false, - setupFilesAfterEnv: ["/jest.setup.ts"], + setupFilesAfterEnv: [join("", "jest.setup.ts")], + transform: { + ...defaultPreset.transform, + // [\\\\/] expands to [\\/], which makes the regex Windows-compatible. + "node_modules[\\\\/]jose.+\\.js$": [ + "ts-jest", + { tsconfig: { allowJs: true } }, + ], + }, + transformIgnorePatterns: ["node_modules[\\\\/](?!jose)"], moduleNameMapper: { "^jose": esmRequire.resolve("jose"), }, diff --git a/package-lock.json b/package-lock.json index a6ede1158e..87b592a156 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14994,7 +14994,9 @@ } }, "node_modules/jose": { - "version": "4.15.9", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.3.tgz", + "integrity": "sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/panva" @@ -18266,6 +18268,15 @@ "url": "https://github.com/sponsors/panva" } }, + "node_modules/openid-client/node_modules/jose": { + "version": "4.15.9", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.9.tgz", + "integrity": "sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, "node_modules/openid-client/node_modules/lru-cache": { "version": "6.0.0", "license": "ISC", @@ -22732,7 +22743,7 @@ "@inrupt/oidc-client-ext": "^4.0.0", "@inrupt/solid-client-authn-core": "^4.0.0", "events": "^3.3.0", - "jose": "^5.1.3", + "jose": "^6.2.3", "uuid": "^11.1.0" }, "devDependencies": { @@ -22771,20 +22782,13 @@ "express": "^5.1.0" } }, - "packages/browser/node_modules/jose": { - "version": "5.1.3", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/panva" - } - }, "packages/core": { "name": "@inrupt/solid-client-authn-core", "version": "4.0.0", "license": "MIT", "dependencies": { "events": "^3.3.0", - "jose": "^5.1.3", + "jose": "^6.2.3", "uuid": "^11.1.0" }, "devDependencies": { @@ -22794,20 +22798,13 @@ "node": "^22.0.0 || ^24.0.0" } }, - "packages/core/node_modules/jose": { - "version": "5.1.3", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/panva" - } - }, "packages/node": { "name": "@inrupt/solid-client-authn-node", "version": "4.0.0", "license": "MIT", "dependencies": { "@inrupt/solid-client-authn-core": "^4.0.0", - "jose": "^5.1.3", + "jose": "^6.2.3", "openid-client": "^5.7.1", "uuid": "^11.1.0" }, @@ -22844,20 +22841,13 @@ "@types/express": "^5.0.5" } }, - "packages/node/node_modules/jose": { - "version": "5.1.3", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/panva" - } - }, "packages/oidc-browser": { "name": "@inrupt/oidc-client-ext", "version": "4.0.0", "license": "MIT", "dependencies": { "@inrupt/solid-client-authn-core": "^4.0.0", - "jose": "^5.1.3", + "jose": "^6.2.3", "oidc-client-ts": "^3.5.0", "uuid": "^11.1.0" }, @@ -23080,13 +23070,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "packages/oidc-browser/node_modules/jose": { - "version": "5.1.3", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/panva" - } - }, "packages/oidc-browser/node_modules/picomatch": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", diff --git a/packages/browser/package.json b/packages/browser/package.json index d9cf1570f5..5a00b5aeac 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -33,7 +33,7 @@ "@inrupt/oidc-client-ext": "^4.0.0", "@inrupt/solid-client-authn-core": "^4.0.0", "events": "^3.3.0", - "jose": "^5.1.3", + "jose": "^6.2.3", "uuid": "^11.1.0" }, "publishConfig": { diff --git a/packages/browser/src/login/oidc/incomingRedirectHandler/AuthCodeRedirectHandler.spec.ts b/packages/browser/src/login/oidc/incomingRedirectHandler/AuthCodeRedirectHandler.spec.ts index a84312a233..3c2a6c0b46 100644 --- a/packages/browser/src/login/oidc/incomingRedirectHandler/AuthCodeRedirectHandler.spec.ts +++ b/packages/browser/src/login/oidc/incomingRedirectHandler/AuthCodeRedirectHandler.spec.ts @@ -34,9 +34,8 @@ import { } from "@inrupt/solid-client-authn-core/mocks"; import { jest, it, describe, expect } from "@jest/globals"; import type * as OidcClientExt from "@inrupt/oidc-client-ext"; -import type { JWK } from "jose"; +import type { JWK, CryptoKey } from "jose"; import { importJWK } from "jose"; -import type { KeyObject } from "crypto"; import { AuthCodeRedirectHandler } from "./AuthCodeRedirectHandler"; import { SessionInfoManagerMock } from "../../../sessionInfo/__mocks__/SessionInfoManager"; import { LocalStorageMock } from "../../../storage/__mocks__/LocalStorage"; @@ -126,7 +125,7 @@ const mockTokenEndpointDpopResponse = webId: mockWebId(), clientId: "some client", dpopKey: { - privateKey: (await importJWK(mockJwk())) as KeyObject, + privateKey: (await importJWK(mockJwk())) as CryptoKey, // Note that here for convenience the private key is also used as public key. // Obviously, this should never be done in non-test code. publicKey: mockJwk(), diff --git a/packages/browser/src/login/oidc/refresh/TokenRefresher.spec.ts b/packages/browser/src/login/oidc/refresh/TokenRefresher.spec.ts index 688098ab58..e4e240f04c 100644 --- a/packages/browser/src/login/oidc/refresh/TokenRefresher.spec.ts +++ b/packages/browser/src/login/oidc/refresh/TokenRefresher.spec.ts @@ -29,11 +29,10 @@ import { mockStorageUtility, // eslint-disable-next-line import/no-unresolved } from "@inrupt/solid-client-authn-core/mocks"; -import type { JWK } from "jose"; +import type { JWK, CryptoKey } from "jose"; import { importJWK } from "jose"; import type { refresh } from "@inrupt/oidc-client-ext"; import { EventEmitter } from "events"; -import type { KeyObject } from "crypto"; import TokenRefresher from "./TokenRefresher"; import { mockDefaultIssuerConfigFetcher, @@ -70,7 +69,7 @@ const mockJwk = (): JWK => { const mockKeyPair = async (): Promise => { return { - privateKey: (await importJWK(mockJwk())) as KeyObject, + privateKey: (await importJWK(mockJwk())) as CryptoKey, // Use the same JWK for public and private key out of convenience, don't do // this in real life. publicKey: mockJwk(), diff --git a/packages/core/package.json b/packages/core/package.json index e8dc1e733c..f25a6e8d48 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -37,7 +37,7 @@ }, "dependencies": { "events": "^3.3.0", - "jose": "^5.1.3", + "jose": "^6.2.3", "uuid": "^11.1.0" }, "publishConfig": { diff --git a/packages/core/src/authenticatedFetch/dpopUtils.spec.ts b/packages/core/src/authenticatedFetch/dpopUtils.spec.ts index a6d657757f..0691aeb53d 100644 --- a/packages/core/src/authenticatedFetch/dpopUtils.spec.ts +++ b/packages/core/src/authenticatedFetch/dpopUtils.spec.ts @@ -19,16 +19,16 @@ // import { it, describe, expect } from "@jest/globals"; -import type { KeyLike } from "jose"; +import type { CryptoKey } from "jose"; import { generateKeyPair, exportJWK, jwtVerify } from "jose"; import { createDpopHeader, generateDpopKeyPair } from "./dpopUtils"; -let publicKey: KeyLike | undefined; -let privateKey: KeyLike | undefined; +let publicKey: CryptoKey | undefined; +let privateKey: CryptoKey | undefined; const mockJwk = async (): Promise<{ - publicKey: KeyLike; - privateKey: KeyLike; + publicKey: CryptoKey; + privateKey: CryptoKey; }> => { if (typeof publicKey === "undefined" || typeof privateKey === "undefined") { const generatedPair = await generateKeyPair("ES256"); diff --git a/packages/core/src/authenticatedFetch/dpopUtils.ts b/packages/core/src/authenticatedFetch/dpopUtils.ts index 0ac454c56a..f90a7dd45c 100644 --- a/packages/core/src/authenticatedFetch/dpopUtils.ts +++ b/packages/core/src/authenticatedFetch/dpopUtils.ts @@ -18,7 +18,7 @@ // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // -import type { JWK, KeyLike } from "jose"; +import type { JWK, CryptoKey } from "jose"; import { SignJWT, generateKeyPair, exportJWK } from "jose"; import { v4 } from "uuid"; import { PREFERRED_SIGNING_ALG } from "../constant"; @@ -36,7 +36,7 @@ function normalizeHTU(audience: string): string { } export type KeyPair = { - privateKey: KeyLike; + privateKey: CryptoKey; publicKey: JWK; }; diff --git a/packages/core/src/authenticatedFetch/fetchFactory.spec.ts b/packages/core/src/authenticatedFetch/fetchFactory.spec.ts index 2ca4e0484d..1469242c7f 100644 --- a/packages/core/src/authenticatedFetch/fetchFactory.spec.ts +++ b/packages/core/src/authenticatedFetch/fetchFactory.spec.ts @@ -22,7 +22,7 @@ /* eslint-disable no-shadow */ import { jest, it, describe, expect, afterEach } from "@jest/globals"; -import type { KeyLike } from "jose"; +import type { CryptoKey } from "jose"; import { jwtVerify, generateKeyPair, exportJWK } from "jose"; import { EventEmitter } from "events"; import { @@ -55,15 +55,17 @@ const mockNotRedirectedResponse = () => { return mockedResponse; }; -let publicKey: KeyLike | undefined; -let privateKey: KeyLike | undefined; +let publicKey: CryptoKey | undefined; +let privateKey: CryptoKey | undefined; const mockJwk = async (): Promise<{ - publicKey: KeyLike; - privateKey: KeyLike; + publicKey: CryptoKey; + privateKey: CryptoKey; }> => { if (typeof publicKey === "undefined" || typeof privateKey === "undefined") { - const generatedPair = await generateKeyPair("ES256"); + const generatedPair = await generateKeyPair("ES256", { + extractable: true, + }); publicKey = generatedPair.publicKey; privateKey = generatedPair.privateKey; } @@ -159,7 +161,7 @@ describe("buildAuthenticatedFetch", () => { const headers = new Headers(mockedFetch.mock.calls[0][1]?.headers); const { payload } = await jwtVerify( headers.get("DPoP") as string, - (await mockKeyPair()).privateKey, + (await mockJwk()).publicKey, ); expect(payload.htu).toBe("http://some.url/"); expect(payload.htm).toBe("POST"); @@ -198,7 +200,7 @@ describe("buildAuthenticatedFetch", () => { const headers = new Headers(mockedFetch.mock.calls[1][1]?.headers); const { payload } = await jwtVerify( headers.get("DPoP") as string, - (await mockKeyPair()).privateKey, + (await mockJwk()).publicKey, ); expect(payload.htu).toBe("https://my.pod/container/"); }); diff --git a/packages/core/src/storage/StorageUtility.spec.ts b/packages/core/src/storage/StorageUtility.spec.ts index 39e83e2446..b6f05d9d6c 100644 --- a/packages/core/src/storage/StorageUtility.spec.ts +++ b/packages/core/src/storage/StorageUtility.spec.ts @@ -18,7 +18,7 @@ // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // -import type { KeyLike } from "jose"; +import type { CryptoKey } from "jose"; import { exportJWK, generateKeyPair } from "jose"; import { jest, describe, it, expect } from "@jest/globals"; import { mockIssuerConfig } from "../login/oidc/__mocks__/IssuerConfig"; @@ -531,15 +531,17 @@ describe("saveSessionInfoToStorage", () => { ).resolves.toBe("true"); }); - let publicKey: KeyLike | undefined; - let privateKey: KeyLike | undefined; + let publicKey: CryptoKey | undefined; + let privateKey: CryptoKey | undefined; const mockJwk = async (): Promise<{ - publicKey: KeyLike; - privateKey: KeyLike; + publicKey: CryptoKey; + privateKey: CryptoKey; }> => { if (typeof publicKey === "undefined" || typeof privateKey === "undefined") { - const generatedPair = await generateKeyPair("ES256"); + const generatedPair = await generateKeyPair("ES256", { + extractable: true, + }); publicKey = generatedPair.publicKey; privateKey = generatedPair.privateKey; } diff --git a/packages/core/src/util/token.spec.ts b/packages/core/src/util/token.spec.ts index 08c62cd775..04c10181f1 100644 --- a/packages/core/src/util/token.spec.ts +++ b/packages/core/src/util/token.spec.ts @@ -33,12 +33,12 @@ jest.mock("jose", () => { describe("getWebidFromTokenPayload", () => { // Singleton keys generated on the first call to mockJwk - let publicKey: Jose.KeyLike | undefined; - let privateKey: Jose.KeyLike | undefined; + let publicKey: Jose.CryptoKey | undefined; + let privateKey: Jose.CryptoKey | undefined; const mockJwk = async (): Promise<{ - publicKey: Jose.KeyLike; - privateKey: Jose.KeyLike; + publicKey: Jose.CryptoKey; + privateKey: Jose.CryptoKey; }> => { if (typeof publicKey === "undefined" || typeof privateKey === "undefined") { const generatedPair = await generateKeyPair("ES256"); @@ -55,7 +55,7 @@ describe("getWebidFromTokenPayload", () => { claims: Jose.JWTPayload, issuer: string, audience: string, - signingKey?: Jose.KeyLike, + signingKey?: Jose.CryptoKey, ): Promise => { return new SignJWT(claims) .setProtectedHeader({ alg: "ES256" }) @@ -68,11 +68,9 @@ describe("getWebidFromTokenPayload", () => { it("throws if the JWKS retrieval fails", async () => { const mockJose = jest.requireMock("jose") as jest.Mocked; - mockJose.createRemoteJWKSet.mockReturnValue( - jest - .fn>() - .mockRejectedValue("Maformed JWKS"), - ); + mockJose.createRemoteJWKSet.mockReturnValue((async () => { + throw new Error("Maformed JWKS"); + }) as unknown as ReturnType<(typeof Jose)["createRemoteJWKSet"]>); const jwt = await mockJwt( { someClaim: true }, "https://some.issuer", @@ -91,9 +89,9 @@ describe("getWebidFromTokenPayload", () => { it("throws if the ID token signature verification fails", async () => { const mockJose = jest.requireMock("jose") as jest.Mocked; mockJose.createRemoteJWKSet.mockReturnValue( - jest - .fn>() - .mockResolvedValue((await mockJwk()).publicKey), + (async () => (await mockJwk()).publicKey) as unknown as ReturnType< + (typeof Jose)["createRemoteJWKSet"] + >, ); const { privateKey: anotherKey } = await generateKeyPair("ES256"); // Sign the returned JWT with a private key unrelated to the public key in the JWKS @@ -118,9 +116,9 @@ describe("getWebidFromTokenPayload", () => { it("throws if the ID token issuer verification fails", async () => { const mockJose = jest.requireMock("jose") as jest.Mocked; mockJose.createRemoteJWKSet.mockReturnValue( - jest - .fn>() - .mockResolvedValue((await mockJwk()).publicKey), + (async () => (await mockJwk()).publicKey) as unknown as ReturnType< + (typeof Jose)["createRemoteJWKSet"] + >, ); const jwt = await mockJwt( { someClaim: true }, @@ -142,9 +140,9 @@ describe("getWebidFromTokenPayload", () => { it("throws if the ID token audience verification fails", async () => { const mockJose = jest.requireMock("jose") as jest.Mocked; mockJose.createRemoteJWKSet.mockReturnValue( - jest - .fn>() - .mockResolvedValue((await mockJwk()).publicKey), + (async () => (await mockJwk()).publicKey) as unknown as ReturnType< + (typeof Jose)["createRemoteJWKSet"] + >, ); const jwt = await mockJwt( { someClaim: true }, @@ -166,9 +164,9 @@ describe("getWebidFromTokenPayload", () => { it("throws if the 'webid' and the 'sub' claims are missing", async () => { const mockJose = jest.requireMock("jose") as jest.Mocked; mockJose.createRemoteJWKSet.mockReturnValue( - jest - .fn>() - .mockResolvedValue((await mockJwk()).publicKey), + (async () => (await mockJwk()).publicKey) as unknown as ReturnType< + (typeof Jose)["createRemoteJWKSet"] + >, ); const jwt = await mockJwt( { someClaim: true }, @@ -188,9 +186,9 @@ describe("getWebidFromTokenPayload", () => { it("throws if the 'webid' claims is missing and the 'sub' claim is not an IRI", async () => { const mockJose = jest.requireMock("jose") as jest.Mocked; mockJose.createRemoteJWKSet.mockReturnValue( - jest - .fn>() - .mockResolvedValue((await mockJwk()).publicKey), + (async () => (await mockJwk()).publicKey) as unknown as ReturnType< + (typeof Jose)["createRemoteJWKSet"] + >, ); const jwt = await mockJwt( { sub: "some user ID" }, @@ -213,9 +211,9 @@ describe("getWebidFromTokenPayload", () => { it("returns the WebID if the 'webid' and 'azp' claims exist", async () => { const mockJose = jest.requireMock("jose") as jest.Mocked; mockJose.createRemoteJWKSet.mockReturnValue( - jest - .fn>() - .mockResolvedValue((await mockJwk()).publicKey), + (async () => (await mockJwk()).publicKey) as unknown as ReturnType< + (typeof Jose)["createRemoteJWKSet"] + >, ); const jwt = await mockJwt( { webid: "https://some.webid#me", azp: "some client" }, @@ -234,9 +232,9 @@ describe("getWebidFromTokenPayload", () => { it("returns the clientID if the 'webid' and 'azp' claims exist", async () => { const mockJose = jest.requireMock("jose") as jest.Mocked; mockJose.createRemoteJWKSet.mockReturnValue( - jest - .fn>() - .mockResolvedValue((await mockJwk()).publicKey), + (async () => (await mockJwk()).publicKey) as unknown as ReturnType< + (typeof Jose)["createRemoteJWKSet"] + >, ); const jwt = await mockJwt( { webid: "https://some.webid#me", azp: "some client" }, @@ -255,9 +253,9 @@ describe("getWebidFromTokenPayload", () => { it("returns the WebID if the 'sub' and 'azp' claims exist and 'sub' is IRI-like", async () => { const mockJose = jest.requireMock("jose") as jest.Mocked; mockJose.createRemoteJWKSet.mockReturnValue( - jest - .fn>() - .mockResolvedValue((await mockJwk()).publicKey), + (async () => (await mockJwk()).publicKey) as unknown as ReturnType< + (typeof Jose)["createRemoteJWKSet"] + >, ); const jwt = await mockJwt( { sub: "https://some.webid#me", azp: "some client" }, @@ -276,9 +274,9 @@ describe("getWebidFromTokenPayload", () => { it("returns the webID if the 'sub' claim exists and it is IRI-like but 'azp' does not exist", async () => { const mockJose = jest.requireMock("jose") as jest.Mocked; mockJose.createRemoteJWKSet.mockReturnValue( - jest - .fn>() - .mockResolvedValue((await mockJwk()).publicKey), + (async () => (await mockJwk()).publicKey) as unknown as ReturnType< + (typeof Jose)["createRemoteJWKSet"] + >, ); const jwt = await mockJwt( { sub: "https://some.webid#me" }, @@ -297,9 +295,9 @@ describe("getWebidFromTokenPayload", () => { it("clientID is undefined if the 'azp' claim does not exist", async () => { const mockJose = jest.requireMock("jose") as jest.Mocked; mockJose.createRemoteJWKSet.mockReturnValue( - jest - .fn>() - .mockResolvedValue((await mockJwk()).publicKey), + (async () => (await mockJwk()).publicKey) as unknown as ReturnType< + (typeof Jose)["createRemoteJWKSet"] + >, ); const jwt = await mockJwt( { sub: "https://some.webid#me" }, diff --git a/packages/node/package.json b/packages/node/package.json index 4414259c44..dde1d66b0e 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -29,7 +29,7 @@ }, "dependencies": { "@inrupt/solid-client-authn-core": "^4.0.0", - "jose": "^5.1.3", + "jose": "^6.2.3", "openid-client": "^5.7.1", "uuid": "^11.1.0" }, diff --git a/packages/node/src/Session.static.spec.ts b/packages/node/src/Session.static.spec.ts index ec415e9f93..06cbc291f2 100644 --- a/packages/node/src/Session.static.spec.ts +++ b/packages/node/src/Session.static.spec.ts @@ -102,9 +102,9 @@ const mockIdToken = async (payload: Jose.JWTPayload) => { // Mock the issuer JWKS. const mockJose = jest.requireMock("jose") as jest.Mocked; mockJose.createRemoteJWKSet.mockReturnValue( - jest - .fn>() - .mockResolvedValue(issuerKeyPair.publicKey), + (async () => issuerKeyPair.publicKey) as unknown as ReturnType< + (typeof Jose)["createRemoteJWKSet"] + >, ); return new SignJWT({ sub: "user123", @@ -200,7 +200,9 @@ describe("Session static functions", () => { }); it("creates a session with DPoP token if dpopKey is provided", async () => { - const dpopKeyPair = await generateKeyPair("ES256"); + const dpopKeyPair = await generateKeyPair("ES256", { + extractable: true, + }); const dpopKey = { privateKey: dpopKeyPair.privateKey, diff --git a/packages/node/src/login/oidc/incomingRedirectHandler/AuthCodeRedirectHandler.ts b/packages/node/src/login/oidc/incomingRedirectHandler/AuthCodeRedirectHandler.ts index 6f1b41662f..7d271c8518 100644 --- a/packages/node/src/login/oidc/incomingRedirectHandler/AuthCodeRedirectHandler.ts +++ b/packages/node/src/login/oidc/incomingRedirectHandler/AuthCodeRedirectHandler.ts @@ -49,9 +49,9 @@ import { import { URL } from "url"; import { Issuer } from "openid-client"; -import type { KeyObject } from "crypto"; import type { EventEmitter } from "events"; import { configToIssuerMetadata } from "../IssuerConfigFetcher"; +import { asDPoPInput } from "../../../util/dpopInput"; // Camelcase identifiers are required in the OIDC specification. /* eslint-disable camelcase*/ @@ -151,10 +151,7 @@ export class AuthCodeRedirectHandler implements IIncomingRedirectHandler { removeOpenIdParams(inputRedirectUrl).href, params, { code_verifier: oidcContext.codeVerifier, state: oauthState }, - // The KeyLike type is dynamically bound to either KeyObject or CryptoKey - // at runtime depending on the environment. Here, we know we are in a NodeJS - // context. - { DPoP: dpopKey?.privateKey as KeyObject }, + { DPoP: dpopKey ? asDPoPInput(dpopKey.privateKey) : undefined }, ); if ( diff --git a/packages/node/src/login/oidc/oidcHandlers/ClientCredentialsOidcHandler.ts b/packages/node/src/login/oidc/oidcHandlers/ClientCredentialsOidcHandler.ts index 8af292eef7..466f9343aa 100644 --- a/packages/node/src/login/oidc/oidcHandlers/ClientCredentialsOidcHandler.ts +++ b/packages/node/src/login/oidc/oidcHandlers/ClientCredentialsOidcHandler.ts @@ -41,9 +41,9 @@ import { buildAuthenticatedFetch, EVENTS, } from "@inrupt/solid-client-authn-core"; -import type { KeyObject } from "crypto"; import { Issuer } from "openid-client"; import { configToIssuerMetadata } from "../IssuerConfigFetcher"; +import { asDPoPInput } from "../../../util/dpopInput"; // Camelcase identifiers are required in the OIDC specification. /* eslint-disable camelcase*/ @@ -93,7 +93,7 @@ export default class ClientCredentialsOidcHandler implements IOidcHandler { { DPoP: oidcLoginOptions.dpop && dpopKey !== undefined - ? (dpopKey.privateKey as KeyObject) + ? asDPoPInput(dpopKey.privateKey) : undefined, }, ); diff --git a/packages/node/src/login/oidc/oidcHandlers/RefreshTokenOidcHandler.spec.ts b/packages/node/src/login/oidc/oidcHandlers/RefreshTokenOidcHandler.spec.ts index b0a0827fe1..1e62dad737 100644 --- a/packages/node/src/login/oidc/oidcHandlers/RefreshTokenOidcHandler.spec.ts +++ b/packages/node/src/login/oidc/oidcHandlers/RefreshTokenOidcHandler.spec.ts @@ -33,7 +33,7 @@ import { } from "@inrupt/solid-client-authn-core"; import type * as SolidClientAuthnCore from "@inrupt/solid-client-authn-core"; import { randomUUID } from "crypto"; -import { jwtVerify, exportJWK } from "jose"; +import { jwtVerify, exportJWK, importJWK } from "jose"; import { EventEmitter } from "events"; import { mockDefaultOidcOptions, @@ -215,7 +215,7 @@ describe("RefreshTokenOidcHandler", () => { const dpopProof = headers.get("DPoP"); // This checks that the refreshed access token is bound to the initial DPoP key. await expect( - jwtVerify(dpopProof!, dpopKeyPair.privateKey), + jwtVerify(dpopProof!, await importJWK(dpopKeyPair.publicKey)), ).resolves.not.toThrow(); }); diff --git a/packages/node/src/login/oidc/oidcHandlers/RefreshTokenOidcHandler.ts b/packages/node/src/login/oidc/oidcHandlers/RefreshTokenOidcHandler.ts index 3a243be2d8..c63d5d55c3 100644 --- a/packages/node/src/login/oidc/oidcHandlers/RefreshTokenOidcHandler.ts +++ b/packages/node/src/login/oidc/oidcHandlers/RefreshTokenOidcHandler.ts @@ -45,10 +45,9 @@ import { buildAuthenticatedFetch, maybeBuildRpInitiatedLogout, } from "@inrupt/solid-client-authn-core"; -import type { JWK } from "jose"; +import type { JWK, CryptoKey as JoseCryptoKey } from "jose"; import { importJWK } from "jose"; import type { EventEmitter } from "events"; -import type { KeyObject } from "crypto"; function validateOptions( oidcLoginOptions: IOidcOptions, @@ -178,7 +177,8 @@ export default class RefreshTokenOidcHandler implements IOidcHandler { privateKey: (await importJWK( JSON.parse(privateKey), PREFERRED_SIGNING_ALG[0], - )) as KeyObject, + { extractable: true }, + )) as JoseCryptoKey, }; } diff --git a/packages/node/src/login/oidc/refresh/TokenRefresher.spec.ts b/packages/node/src/login/oidc/refresh/TokenRefresher.spec.ts index 026b74d449..7d41d5a266 100644 --- a/packages/node/src/login/oidc/refresh/TokenRefresher.spec.ts +++ b/packages/node/src/login/oidc/refresh/TokenRefresher.spec.ts @@ -25,11 +25,10 @@ import { StorageUtilityMock, EVENTS, } from "@inrupt/solid-client-authn-core"; -import type { JWK } from "jose"; +import type { JWK, CryptoKey } from "jose"; import { importJWK } from "jose"; import type { IdTokenClaims, TokenSet } from "openid-client"; import { EventEmitter } from "events"; -import type { KeyObject } from "crypto"; import TokenRefresher from "./TokenRefresher"; import { mockClientRegistrar, @@ -75,7 +74,7 @@ const mockJwk = (): JWK => { const mockKeyPair = async (): Promise => { return { - privateKey: (await importJWK(mockJwk())) as KeyObject, + privateKey: (await importJWK(mockJwk())) as CryptoKey, // Use the same JWK for public and private key out of convenience, don't do // this in real life. publicKey: mockJwk(), diff --git a/packages/node/src/login/oidc/refresh/TokenRefresher.ts b/packages/node/src/login/oidc/refresh/TokenRefresher.ts index f9afd139c6..7dc7482694 100644 --- a/packages/node/src/login/oidc/refresh/TokenRefresher.ts +++ b/packages/node/src/login/oidc/refresh/TokenRefresher.ts @@ -40,10 +40,10 @@ import { } from "@inrupt/solid-client-authn-core"; import type { IssuerMetadata, TokenSet } from "openid-client"; import { Issuer } from "openid-client"; -import type { KeyObject } from "crypto"; import type { EventEmitter } from "events"; import { configToIssuerMetadata } from "../IssuerConfigFetcher"; import { negotiateClientSigningAlg } from "../ClientRegistrar"; +import { asDPoPInput } from "../../../util/dpopInput"; // Camelcase identifiers are required in the OIDC specification. /* eslint-disable camelcase*/ @@ -151,11 +151,7 @@ export default class TokenRefresher implements ITokenRefresher { const tokenSet = await tokenSetToTokenEndpointResponse( await client.refresh(refreshToken, { - // openid-client does not support yet jose@3.x, and expects - // type definitions that are no longer present. However, the JWK - // type that we pass here is compatible with the API, hence the type - // assertion. - DPoP: dpopKey ? (dpopKey.privateKey as KeyObject) : undefined, + DPoP: dpopKey ? asDPoPInput(dpopKey.privateKey) : undefined, }), issuer.metadata, clientInfo, diff --git a/packages/node/src/multiSession.fromTokens.spec.ts b/packages/node/src/multiSession.fromTokens.spec.ts index 78b34dac59..0489614dfa 100644 --- a/packages/node/src/multiSession.fromTokens.spec.ts +++ b/packages/node/src/multiSession.fromTokens.spec.ts @@ -139,8 +139,8 @@ describe("logout", () => { }; // Singleton keys generated for tests - let mockPublicKey: Jose.KeyLike; - let mockPrivateKey: Jose.KeyLike; + let mockPublicKey: Jose.CryptoKey; + let mockPrivateKey: Jose.CryptoKey; // Generate a valid ID token const createMockIdToken = async ( @@ -174,7 +174,11 @@ describe("logout", () => { // Setup the mocked jwtVerify to succeed by default const mockJose = jest.requireMock("jose") as jest.Mocked; // Setup createRemoteJWKSet to return a key lookup function - mockJose.createRemoteJWKSet.mockReturnValue(async () => mockPublicKey); + mockJose.createRemoteJWKSet.mockReturnValue( + (async () => mockPublicKey) as unknown as ReturnType< + (typeof Jose)["createRemoteJWKSet"] + >, + ); }); it("throws an error if idToken is not provided", async () => { diff --git a/packages/node/src/util/dpopInput.ts b/packages/node/src/util/dpopInput.ts new file mode 100644 index 0000000000..0945ab8c00 --- /dev/null +++ b/packages/node/src/util/dpopInput.ts @@ -0,0 +1,32 @@ +// Copyright Inrupt Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to use, +// copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the +// Software, and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +// PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// + +import type { CryptoKey } from "jose"; +import type { KeyObject } from "node:crypto"; + +// FIXME: Remove this helper when openid-client is upgraded to v6. +// openid-client v5's DPoPInput type is `KeyObject | Parameters[0]`, +// but at runtime it also accepts a Web Crypto `CryptoKey` (verified via the +// `Symbol.toStringTag === 'CryptoKey'` check in its `dpopProof` method). +// jose v6's `generateKeyPair` returns a `CryptoKey`, so we need to bridge the +// type mismatch. openid-client v6 uses jose v6 natively and accepts `CryptoKey` +// directly, so this helper becomes unnecessary after that upgrade. +export const asDPoPInput = (key: CryptoKey): KeyObject => + key as unknown as KeyObject; diff --git a/packages/oidc-browser/package.json b/packages/oidc-browser/package.json index 07e1444ef4..2621e794e6 100644 --- a/packages/oidc-browser/package.json +++ b/packages/oidc-browser/package.json @@ -26,7 +26,7 @@ }, "dependencies": { "@inrupt/solid-client-authn-core": "^4.0.0", - "jose": "^5.1.3", + "jose": "^6.2.3", "oidc-client-ts": "^3.5.0", "uuid": "^11.1.0" }, diff --git a/packages/oidc-browser/src/__mocks__/issuer.mocks.ts b/packages/oidc-browser/src/__mocks__/issuer.mocks.ts index e953ed7fcb..08567335c3 100644 --- a/packages/oidc-browser/src/__mocks__/issuer.mocks.ts +++ b/packages/oidc-browser/src/__mocks__/issuer.mocks.ts @@ -26,7 +26,7 @@ import type { IIssuerConfig, KeyPair, } from "@inrupt/solid-client-authn-core"; -import type { KeyObject } from "crypto"; +import type { CryptoKey } from "jose"; import type { TokenEndpointInput } from "../dpop/tokenExchange"; // Camelcase identifiers are required in the OIDC specification. @@ -48,7 +48,7 @@ export const mockKeyPair = async (): Promise => { const publicKey = mockJwk(); delete publicKey.d; return { - privateKey: (await importJWK(mockJwk())) as KeyObject, + privateKey: (await importJWK(mockJwk())) as CryptoKey, publicKey, }; }; diff --git a/tests/environment/customEnvironment.ts b/tests/environment/customEnvironment.ts index 1e077fda9a..865ff9c131 100644 --- a/tests/environment/customEnvironment.ts +++ b/tests/environment/customEnvironment.ts @@ -23,6 +23,9 @@ import Environment from "jest-environment-jsdom"; export default class CustomTestEnvironment extends Environment { async setup() { await super.setup(); + if (typeof this.global.structuredClone === "undefined") { + this.global.structuredClone = structuredClone; + } if (typeof this.global.TextEncoder === "undefined") { // The following doesn't work from jest-jsdom-polyfills. // TextEncoder (global or via 'util') references a Uint8Array constructor From 3dbe22c7b4f1cbc097a7c27eed0dc87dca362bb5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 May 2026 12:30:14 -0500 Subject: [PATCH 2/7] Bump @types/node in the external-types group across 1 directory (#4269) Bumps the external-types group with 1 update in the / directory: [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node). Updates `@types/node` from 25.6.0 to 25.6.2 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-version: 25.6.2 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: external-types ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../test-app/package.json | 2 +- package-lock.json | 32 ++++--------------- packages/browser/package.json | 2 +- packages/node/package.json | 2 +- 4 files changed, 9 insertions(+), 29 deletions(-) diff --git a/e2e/browser/solid-client-authn-browser/test-app/package.json b/e2e/browser/solid-client-authn-browser/test-app/package.json index d017efec63..55103c9236 100644 --- a/e2e/browser/solid-client-authn-browser/test-app/package.json +++ b/e2e/browser/solid-client-authn-browser/test-app/package.json @@ -19,7 +19,7 @@ "devDependencies": { "@inrupt/eslint-config-lib": "^3.2.7", "@playwright/test": "^1.59.1", - "@types/node": "^25.6.0", + "@types/node": "^25.6.2", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "esbuild": "^0.28.0", diff --git a/package-lock.json b/package-lock.json index 87b592a156..d7fe708388 100644 --- a/package-lock.json +++ b/package-lock.json @@ -72,7 +72,7 @@ "devDependencies": { "@inrupt/eslint-config-lib": "^3.2.7", "@playwright/test": "^1.59.1", - "@types/node": "^25.6.0", + "@types/node": "^25.6.2", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "esbuild": "^0.28.0", @@ -278,7 +278,6 @@ "version": "7.28.5", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -809,7 +808,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=18" }, @@ -833,7 +831,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=18" } @@ -2660,7 +2657,6 @@ "version": "8.57.1", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -5523,7 +5519,6 @@ "integrity": "sha512-/g2d4sW9nUDJOMz3mabVQvOGhVa4e/BN/Um7yca9Bb2XTzPPnfTWHWQg+IsEYO7M3Vx+EXvaM/I2pJWIMun1bg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@octokit/auth-token": "^4.0.0", "@octokit/graphql": "^7.1.0", @@ -5746,7 +5741,6 @@ "integrity": "sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==", "devOptional": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "playwright": "1.59.1" }, @@ -6718,9 +6712,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.6.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.6.0.tgz", - "integrity": "sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==", + "version": "25.6.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.6.2.tgz", + "integrity": "sha512-sokuT28dxf9JT5Kady1fsXOvI4HVpjZa95NKT5y9PNTIrs2AsobR4GFAA90ZG8M+nxVRLysCXsVj6eGC7Vbrlw==", "dev": true, "license": "MIT", "dependencies": { @@ -6761,7 +6755,6 @@ "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "csstype": "^3.2.2" } @@ -6855,7 +6848,6 @@ "integrity": "sha512-NZZgp0Fm2IkD+La5PR81sd+g+8oS6JwJje+aRWsDocxHkjyRw0J5L5ZTlN3LI1LlOcGL7ph3eaIUmTXMIjLk0w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/regexpp": "^4.12.2", "@typescript-eslint/scope-manager": "8.57.2", @@ -7567,7 +7559,6 @@ "version": "8.15.0", "dev": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -8376,7 +8367,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001726", "electron-to-chromium": "^1.5.173", @@ -10372,7 +10362,6 @@ "version": "2.32.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.9", @@ -13216,7 +13205,6 @@ "integrity": "sha512-AkXIIFcaazymvey2i/+F94XRnM6TsVLZDhBMLsd1Sf/W0wzsvvpjeyUrCZD6HGG4SDYPgDJDBKeiJTBb10WzMg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/core": "30.3.0", "@jest/types": "30.3.0", @@ -15026,7 +15014,6 @@ "integrity": "sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "cssstyle": "^4.2.1", "data-urls": "^5.0.0", @@ -17891,7 +17878,6 @@ "dev": true, "hasInstallScript": true, "license": "MIT", - "peer": true, "dependencies": { "@ltd/j-toml": "^1.38.0", "@napi-rs/wasm-runtime": "0.2.4", @@ -19085,7 +19071,6 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, @@ -19158,7 +19143,6 @@ "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", "dev": true, "license": "MIT", - "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -19483,7 +19467,6 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.2.5.tgz", "integrity": "sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -19493,7 +19476,6 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.5.tgz", "integrity": "sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==", "license": "MIT", - "peer": true, "dependencies": { "scheduler": "^0.27.0" }, @@ -20084,7 +20066,6 @@ "version": "4.22.4", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/estree": "1.0.5" }, @@ -22710,7 +22691,6 @@ "version": "4.1.12", "dev": true, "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } @@ -22747,7 +22727,7 @@ "uuid": "^11.1.0" }, "devDependencies": { - "@types/node": "^25.6.0", + "@types/node": "^25.6.2", "@types/uuid": "^10.0.0" } }, @@ -22809,7 +22789,7 @@ "uuid": "^11.1.0" }, "devDependencies": { - "@types/node": "^25.6.0", + "@types/node": "^25.6.2", "@types/uuid": "^10.0.0" }, "engines": { diff --git a/packages/browser/package.json b/packages/browser/package.json index 5a00b5aeac..23e395e294 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -26,7 +26,7 @@ "build-docs-preview-site": "npm run build-api-docs; cd docs/api; make html" }, "devDependencies": { - "@types/node": "^25.6.0", + "@types/node": "^25.6.2", "@types/uuid": "^10.0.0" }, "dependencies": { diff --git a/packages/node/package.json b/packages/node/package.json index dde1d66b0e..0e7b7fec39 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -24,7 +24,7 @@ "build-docs-preview-site": "npm run build-api-docs; cd docs/api; make html" }, "devDependencies": { - "@types/node": "^25.6.0", + "@types/node": "^25.6.2", "@types/uuid": "^10.0.0" }, "dependencies": { From 4fddb058ee36907d0df494f13033ad182799d7f6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 May 2026 17:33:25 +0000 Subject: [PATCH 3/7] Bump axios from 1.15.0 to 1.16.0 (#4266) Bumps [axios](https://github.com/axios/axios) from 1.15.0 to 1.16.0. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v1.15.0...v1.16.0) --- updated-dependencies: - dependency-name: axios dependency-version: 1.16.0 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index d7fe708388..a6ac22b85b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7953,13 +7953,13 @@ } }, "node_modules/axios": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.15.0.tgz", - "integrity": "sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.16.0.tgz", + "integrity": "sha512-6hp5CwvTPlN2A31g5dxnwAX0orzM7pmCRDLnZSX772mv8WDqICwFjowHuPs04Mc8deIld1+ejhtaMn5vp6b+1w==", "dev": true, "license": "MIT", "dependencies": { - "follow-redirects": "^1.15.11", + "follow-redirects": "^1.16.0", "form-data": "^4.0.5", "proxy-from-env": "^2.1.0" } From 7c163db2142ae4db8804e5c784d2cfa515f53265 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 May 2026 17:37:05 +0000 Subject: [PATCH 4/7] Bump ip-address from 10.1.0 to 10.2.0 (#4265) Bumps [ip-address](https://github.com/beaugunderson/ip-address) from 10.1.0 to 10.2.0. - [Commits](https://github.com/beaugunderson/ip-address/commits) --- updated-dependencies: - dependency-name: ip-address dependency-version: 10.2.0 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index a6ac22b85b..f0ce77f7e0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12491,9 +12491,9 @@ } }, "node_modules/ip-address": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", - "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.2.0.tgz", + "integrity": "sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==", "dev": true, "license": "MIT", "engines": { From a10ae1b1bed6ad73f132362372408ca9d9062945 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 May 2026 21:58:41 +0000 Subject: [PATCH 5/7] Bump jest and @types/jest (#4270) * Bump jest and @types/jest Bumps [jest](https://github.com/jestjs/jest/tree/HEAD/packages/jest) and [@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest). These dependencies needed to be updated together. Updates `jest` from 30.3.0 to 30.4.2 - [Release notes](https://github.com/jestjs/jest/releases) - [Changelog](https://github.com/jestjs/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/jestjs/jest/commits/v30.4.2/packages/jest) Updates `@types/jest` from 29.5.14 to 30.0.0 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest) --- updated-dependencies: - dependency-name: "@types/jest" dependency-version: 30.0.0 dependency-type: direct:development update-type: version-update:semver-major - dependency-name: jest dependency-version: 30.4.2 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * Bump jest and @types/jest Bumps [jest](https://github.com/jestjs/jest/tree/HEAD/packages/jest) and [@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest). These dependencies needed to be updated together. Updates `jest` from 30.3.0 to 30.4.2 - [Release notes](https://github.com/jestjs/jest/releases) - [Changelog](https://github.com/jestjs/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/jestjs/jest/commits/v30.4.2/packages/jest) Updates `@types/jest` from 29.5.14 to 30.0.0 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest) --- updated-dependencies: - dependency-name: jest dependency-version: 30.4.2 dependency-type: direct:development update-type: version-update:semver-minor - dependency-name: "@types/jest" dependency-version: 30.0.0 dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * Bump jest-jsdom --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicolas Ayral Seydoux --- package-lock.json | 961 +++++++++++------------------ package.json | 4 +- packages/oidc-browser/package.json | 2 +- 3 files changed, 347 insertions(+), 620 deletions(-) diff --git a/package-lock.json b/package-lock.json index f0ce77f7e0..15fc60ec09 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37,8 +37,8 @@ "eslint-config-next": "^16.2.1", "express": "^5.2.1", "http-link-header": "^1.1.3", - "jest": "^30.3.0", - "jest-environment-jsdom": "^30.3.0", + "jest": "^30.4.2", + "jest-environment-jsdom": "^30.4.1", "jest-mock-console": "^1.2.3", "lerna": "^9.0.7", "lerna-audit": "^1.3.3", @@ -3331,17 +3331,17 @@ } }, "node_modules/@jest/console": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.3.0.tgz", - "integrity": "sha512-PAwCvFJ4696XP2qZj+LAn1BWjZaJ6RjG6c7/lkMaUJnkyMS34ucuIsfqYvfskVNvUI27R/u4P1HMYFnlVXG/Ww==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.4.1.tgz", + "integrity": "sha512-v3bhyxUh9Hgmo5p6hAOXe14/R3ZxZDOsvHleh4B07z3m/x4/ngPUXEm9XwK4sF4u+f+P2ORb0Ge+MgpaqRMVDA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.3.0", + "@jest/types": "30.4.1", "@types/node": "*", "chalk": "^4.1.2", - "jest-message-util": "30.3.0", - "jest-util": "30.3.0", + "jest-message-util": "30.4.1", + "jest-util": "30.4.1", "slash": "^3.0.0" }, "engines": { @@ -3425,38 +3425,39 @@ } }, "node_modules/@jest/core": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-30.3.0.tgz", - "integrity": "sha512-U5mVPsBxLSO6xYbf+tgkymLx+iAhvZX43/xI1+ej2ZOPnPdkdO1CzDmFKh2mZBn2s4XZixszHeQnzp1gm/DIxw==", + "version": "30.4.2", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-30.4.2.tgz", + "integrity": "sha512-TZJA6cPJUFxoWhxaLo8t0VX/MZX2wPWr0uIDvLSHIvN4gu9h02vSzqI2kBADG1ExqQlC+cY09xKMSreivvrChQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/console": "30.3.0", - "@jest/pattern": "30.0.1", - "@jest/reporters": "30.3.0", - "@jest/test-result": "30.3.0", - "@jest/transform": "30.3.0", - "@jest/types": "30.3.0", + "@jest/console": "30.4.1", + "@jest/pattern": "30.4.0", + "@jest/reporters": "30.4.1", + "@jest/test-result": "30.4.1", + "@jest/transform": "30.4.1", + "@jest/types": "30.4.1", "@types/node": "*", "ansi-escapes": "^4.3.2", "chalk": "^4.1.2", "ci-info": "^4.2.0", "exit-x": "^0.2.2", + "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.11", - "jest-changed-files": "30.3.0", - "jest-config": "30.3.0", - "jest-haste-map": "30.3.0", - "jest-message-util": "30.3.0", - "jest-regex-util": "30.0.1", - "jest-resolve": "30.3.0", - "jest-resolve-dependencies": "30.3.0", - "jest-runner": "30.3.0", - "jest-runtime": "30.3.0", - "jest-snapshot": "30.3.0", - "jest-util": "30.3.0", - "jest-validate": "30.3.0", - "jest-watcher": "30.3.0", - "pretty-format": "30.3.0", + "jest-changed-files": "30.4.1", + "jest-config": "30.4.2", + "jest-haste-map": "30.4.1", + "jest-message-util": "30.4.1", + "jest-regex-util": "30.4.0", + "jest-resolve": "30.4.1", + "jest-resolve-dependencies": "30.4.2", + "jest-runner": "30.4.2", + "jest-runtime": "30.4.2", + "jest-snapshot": "30.4.1", + "jest-util": "30.4.1", + "jest-validate": "30.4.1", + "jest-watcher": "30.4.1", + "pretty-format": "30.4.1", "slash": "^3.0.0" }, "engines": { @@ -3564,9 +3565,9 @@ } }, "node_modules/@jest/diff-sequences": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.3.0.tgz", - "integrity": "sha512-cG51MVnLq1ecVUaQ3fr6YuuAOitHK1S4WUJHnsPFE/quQr33ADUx1FfrTCpMCRxvy0Yr9BThKpDjSlcTi91tMA==", + "version": "30.4.0", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.4.0.tgz", + "integrity": "sha512-zOpzlfUs45l6u7jm39qr87JCHUDsaeCtvL+kQe/Vn9jSnRB4/5IPXISm0h9I1vZW/o00Kn4UTJ2MOlhnUGwv3g==", "dev": true, "license": "MIT", "engines": { @@ -3574,35 +3575,35 @@ } }, "node_modules/@jest/environment": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.3.0.tgz", - "integrity": "sha512-SlLSF4Be735yQXyh2+mctBOzNDx5s5uLv88/j8Qn1wH679PDcwy67+YdADn8NJnGjzlXtN62asGH/T4vWOkfaw==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.4.1.tgz", + "integrity": "sha512-AK9yNRqgKxiabqMoe4oW+3/TSSeV8vkdC7BGaxZdU0AFXfOpofTLqdru2GXKZghP3sdgwE9XXpnVwfZ8JnFV4w==", "dev": true, "license": "MIT", "dependencies": { - "@jest/fake-timers": "30.3.0", - "@jest/types": "30.3.0", + "@jest/fake-timers": "30.4.1", + "@jest/types": "30.4.1", "@types/node": "*", - "jest-mock": "30.3.0" + "jest-mock": "30.4.1" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/environment-jsdom-abstract": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/environment-jsdom-abstract/-/environment-jsdom-abstract-30.3.0.tgz", - "integrity": "sha512-0hNFs5N6We3DMCwobzI0ydhkY10sT1tZSC0AAiy+0g2Dt/qEWgrcV5BrMxPczhe41cxW4qm6X+jqZaUdpZIajA==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/environment-jsdom-abstract/-/environment-jsdom-abstract-30.4.1.tgz", + "integrity": "sha512-dSlKrqug3siYNHVnjwIldShY12wAH3spwRltO/+8VOjg0X+xEq7vOs3DbBs4LRKsu7OH+NUb9kuZUNBF9Ho3TA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "30.3.0", - "@jest/fake-timers": "30.3.0", - "@jest/types": "30.3.0", + "@jest/environment": "30.4.1", + "@jest/fake-timers": "30.4.1", + "@jest/types": "30.4.1", "@types/jsdom": "^21.1.7", "@types/node": "*", - "jest-mock": "30.3.0", - "jest-util": "30.3.0" + "jest-mock": "30.4.1", + "jest-util": "30.4.1" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -3618,23 +3619,23 @@ } }, "node_modules/@jest/expect": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.3.0.tgz", - "integrity": "sha512-76Nlh4xJxk2D/9URCn3wFi98d2hb19uWE1idLsTt2ywhvdOldbw3S570hBgn25P4ICUZ/cBjybrBex2g17IDbg==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.4.1.tgz", + "integrity": "sha512-ginrj6TMgh2GshLUGCjO94Ptx9HhdZA/I6A9iUfyeLKFtdAjnKzHDgzgP9HYQgbxM1lbXScQ2eUBz2lGeVDPWA==", "dev": true, "license": "MIT", "dependencies": { - "expect": "30.3.0", - "jest-snapshot": "30.3.0" + "expect": "30.4.1", + "jest-snapshot": "30.4.1" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/expect-utils": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.3.0.tgz", - "integrity": "sha512-j0+W5iQQ8hBh7tHZkTQv3q2Fh/M7Je72cIsYqC4OaktgtO7v1So9UTjp6uPBHIaB6beoF/RRsCgMJKvti0wADA==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.4.1.tgz", + "integrity": "sha512-ZBn5CglH8fBsQsvs4VWNzD4aWfUYks+IdOOQU3MEK71ol/BcVm+P+rtb1KpiFBpSWSCE27uOahyyf1vfqOVbcQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3645,18 +3646,18 @@ } }, "node_modules/@jest/fake-timers": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.3.0.tgz", - "integrity": "sha512-WUQDs8SOP9URStX1DzhD425CqbN/HxUYCTwVrT8sTVBfMvFqYt/s61EK5T05qnHu0po6RitXIvP9otZxYDzTGQ==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.4.1.tgz", + "integrity": "sha512-iW5umdmfPeWzehrVhugFQZqCchSCud5S1l2YT0O9ZhjRR0ExclANDZkiSBwzqtnlOn0J1JXvO+HZ6rkuyOVOgQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.3.0", - "@sinonjs/fake-timers": "^15.0.0", + "@jest/types": "30.4.1", + "@sinonjs/fake-timers": "^15.4.0", "@types/node": "*", - "jest-message-util": "30.3.0", - "jest-mock": "30.3.0", - "jest-util": "30.3.0" + "jest-message-util": "30.4.1", + "jest-mock": "30.4.1", + "jest-util": "30.4.1" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -3671,47 +3672,47 @@ } }, "node_modules/@jest/globals": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.3.0.tgz", - "integrity": "sha512-+owLCBBdfpgL3HU+BD5etr1SvbXpSitJK0is1kiYjJxAAJggYMRQz5hSdd5pq1sSggfxPbw2ld71pt4x5wwViA==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.4.1.tgz", + "integrity": "sha512-ZbuY4cmXC8DkxYjfvT2DbcHWL2T6vmsMhXCDcmTB2T0y0gaezBI77ufq5ZAIdcRkYZ7NEQEDg1xFeKbxUJ5v5Q==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "30.3.0", - "@jest/expect": "30.3.0", - "@jest/types": "30.3.0", - "jest-mock": "30.3.0" + "@jest/environment": "30.4.1", + "@jest/expect": "30.4.1", + "@jest/types": "30.4.1", + "jest-mock": "30.4.1" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/pattern": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", - "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", + "version": "30.4.0", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.4.0.tgz", + "integrity": "sha512-RAWn3+f9u8BsHijKJ71uHcFp6vmyEt6VvoWXkl6hKF3qVIuWNmudVjg12DlBPGup/frIl5UcUlH5HfEuvHpEXg==", "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", - "jest-regex-util": "30.0.1" + "jest-regex-util": "30.4.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/reporters": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.3.0.tgz", - "integrity": "sha512-a09z89S+PkQnL055bVj8+pe2Caed2PBOaczHcXCykW5ngxX9EWx/1uAwncxc/HiU0oZqfwseMjyhxgRjS49qPw==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.4.1.tgz", + "integrity": "sha512-/SnkPCzEQpUaBH81kjdEdDdo2WZl5hxw+BmLDGWjRkm8o7XlhjwsU36cqwe5PGBE5WYpBvDzRSdXx9rbGuJtNA==", "dev": true, "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "30.3.0", - "@jest/test-result": "30.3.0", - "@jest/transform": "30.3.0", - "@jest/types": "30.3.0", + "@jest/console": "30.4.1", + "@jest/test-result": "30.4.1", + "@jest/transform": "30.4.1", + "@jest/types": "30.4.1", "@jridgewell/trace-mapping": "^0.3.25", "@types/node": "*", "chalk": "^4.1.2", @@ -3724,9 +3725,9 @@ "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^5.0.0", "istanbul-reports": "^3.1.3", - "jest-message-util": "30.3.0", - "jest-util": "30.3.0", - "jest-worker": "30.3.0", + "jest-message-util": "30.4.1", + "jest-util": "30.4.1", + "jest-worker": "30.4.1", "slash": "^3.0.0", "string-length": "^4.0.2", "v8-to-istanbul": "^9.0.1" @@ -3820,9 +3821,9 @@ } }, "node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.4.1.tgz", + "integrity": "sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==", "dev": true, "license": "MIT", "dependencies": { @@ -3833,13 +3834,13 @@ } }, "node_modules/@jest/snapshot-utils": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.3.0.tgz", - "integrity": "sha512-ORbRN9sf5PP82v3FXNSwmO1OTDR2vzR2YTaR+E3VkSBZ8zadQE6IqYdYEeFH1NIkeB2HIGdF02dapb6K0Mj05g==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.4.1.tgz", + "integrity": "sha512-ObY4ljvQ95mt6iwKtVLetR/4yXiAgl3H4nJxhztr0MTjrN97TwDYrnCp/kF60Ec9HdhkWTHSu+Hg05aXfngpOA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.3.0", + "@jest/types": "30.4.1", "chalk": "^4.1.2", "graceful-fs": "^4.2.11", "natural-compare": "^1.4.0" @@ -3940,14 +3941,14 @@ } }, "node_modules/@jest/test-result": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.3.0.tgz", - "integrity": "sha512-e/52nJGuD74AKTSe0P4y5wFRlaXP0qmrS17rqOMHeSwm278VyNyXE3gFO/4DTGF9w+65ra3lo3VKj0LBrzmgdQ==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.4.1.tgz", + "integrity": "sha512-/ZG7pgEiOmmWkN9TplKbOu4id2N5lh7FHwRwlkgBVAzGdRH+OkkQ8wX/kIxg4zmd3ZQvAL1RwL2yWsvNYYECTw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/console": "30.3.0", - "@jest/types": "30.3.0", + "@jest/console": "30.4.1", + "@jest/types": "30.4.1", "@types/istanbul-lib-coverage": "^2.0.6", "collect-v8-coverage": "^1.0.2" }, @@ -3956,15 +3957,15 @@ } }, "node_modules/@jest/test-sequencer": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.3.0.tgz", - "integrity": "sha512-dgbWy9b8QDlQeRZcv7LNF+/jFiiYHTKho1xirauZ7kVwY7avjFF6uTT0RqlgudB5OuIPagFdVtfFMosjVbk1eA==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.4.1.tgz", + "integrity": "sha512-PeYE+4td5rKjoRPxztObrXU+H8hsjZfxKMXOcmrr34JerSyB/ROOxbbicz8B7A5j9R9VayDnVPvBmedqCsFCdw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/test-result": "30.3.0", + "@jest/test-result": "30.4.1", "graceful-fs": "^4.2.11", - "jest-haste-map": "30.3.0", + "jest-haste-map": "30.4.1", "slash": "^3.0.0" }, "engines": { @@ -3972,23 +3973,23 @@ } }, "node_modules/@jest/transform": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.3.0.tgz", - "integrity": "sha512-TLKY33fSLVd/lKB2YI1pH69ijyUblO/BQvCj566YvnwuzoTNr648iE0j22vRvVNk2HsPwByPxATg3MleS3gf5A==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.4.1.tgz", + "integrity": "sha512-Wz0LyktlTvRefoymh+n64hQ84KNXsRGcwdoZ8CSa0Ea+fgYcHZlnk+hDP7v2MS7il2bQ5uTEIxf4/NNfhMN4KQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.27.4", - "@jest/types": "30.3.0", + "@jest/types": "30.4.1", "@jridgewell/trace-mapping": "^0.3.25", "babel-plugin-istanbul": "^7.0.1", "chalk": "^4.1.2", "convert-source-map": "^2.0.0", "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.11", - "jest-haste-map": "30.3.0", - "jest-regex-util": "30.0.1", - "jest-util": "30.3.0", + "jest-haste-map": "30.4.1", + "jest-regex-util": "30.4.0", + "jest-util": "30.4.1", "pirates": "^4.0.7", "slash": "^3.0.0", "write-file-atomic": "^5.0.1" @@ -4062,14 +4063,14 @@ } }, "node_modules/@jest/types": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.3.0.tgz", - "integrity": "sha512-JHm87k7bA33hpBngtU8h6UBub/fqqA9uXfw+21j5Hmk7ooPHlboRNxHq0JcMtC+n8VJGP1mcfnD3Mk+XKe1oSw==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.4.1.tgz", + "integrity": "sha512-f1x/vJXIfjOlEmejYpbkbgw1gOqpPECwMvMEtBqe47j7H2Hg8h8w3o3ikhSXq3MI15kg+oQ0exWO0uCtTNJLoQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", + "@jest/pattern": "30.4.0", + "@jest/schemas": "30.4.1", "@types/istanbul-lib-coverage": "^2.0.6", "@types/istanbul-reports": "^3.0.4", "@types/node": "*", @@ -7973,16 +7974,16 @@ } }, "node_modules/babel-jest": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.3.0.tgz", - "integrity": "sha512-gRpauEU2KRrCox5Z296aeVHR4jQ98BCnu0IO332D/xpHNOsIH/bgSRk9k6GbKIbBw8vFeN6ctuu6tV8WOyVfYQ==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.4.1.tgz", + "integrity": "sha512-fATAbM8piYxkiXQp3RBXmZHxZVNJZAVXXfyeyCN2Tida3+qJ8ea9UxhiJ2y4fLO90ZImKt6k9FlcH2+rLkJGhw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/transform": "30.3.0", + "@jest/transform": "30.4.1", "@types/babel__core": "^7.20.5", "babel-plugin-istanbul": "^7.0.1", - "babel-preset-jest": "30.3.0", + "babel-preset-jest": "30.4.0", "chalk": "^4.1.2", "graceful-fs": "^4.2.11", "slash": "^3.0.0" @@ -8079,9 +8080,9 @@ } }, "node_modules/babel-plugin-jest-hoist": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.3.0.tgz", - "integrity": "sha512-+TRkByhsws6sfPjVaitzadk1I0F5sPvOVUH5tyTSzhePpsGIVrdeunHSw/C36QeocS95OOk8lunc4rlu5Anwsg==", + "version": "30.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.4.0.tgz", + "integrity": "sha512-9EdtWM/sSfXLOGLwSn+GS6pIXyBnL07/8gyJlwFXjWy4DxMOyItqyUT29d4lQiS380EZwYlX7/At4PgBS+m2aA==", "dev": true, "license": "MIT", "dependencies": { @@ -8117,13 +8118,13 @@ } }, "node_modules/babel-preset-jest": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.3.0.tgz", - "integrity": "sha512-6ZcUbWHC+dMz2vfzdNwi87Z1gQsLNK2uLuK1Q89R11xdvejcivlYYwDlEv0FHX3VwEXpbBQ9uufB/MUNpZGfhQ==", + "version": "30.4.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.4.0.tgz", + "integrity": "sha512-lBY4jxsNmCnSiu7kquw8ZC9F4+XLMOKypT3RnNHPvU2Kpd4W0xaPuLr5ZkRyOsvLYAY4yaW1ZwTW4xB7NIiZzg==", "dev": true, "license": "MIT", "dependencies": { - "babel-plugin-jest-hoist": "30.3.0", + "babel-plugin-jest-hoist": "30.4.0", "babel-preset-current-node-syntax": "^1.2.0" }, "engines": { @@ -9688,16 +9689,6 @@ "node": ">=0.3.1" } }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/doctrine": { "version": "3.0.0", "dev": true, @@ -10962,18 +10953,18 @@ } }, "node_modules/expect": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-30.3.0.tgz", - "integrity": "sha512-1zQrciTiQfRdo7qJM1uG4navm8DayFa2TgCSRlzUyNkhcJ6XUZF3hjnpkyr3VhAqPH7i/9GkG7Tv5abz6fqz0Q==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.4.1.tgz", + "integrity": "sha512-PMARsyh/JtqC20HoGqlFcIlQAyqUtW4PlI1rup1uhYJtKuwAjbvWi3GQMAn+STdHum/dk8xrKfUM1+5SAwpolA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/expect-utils": "30.3.0", + "@jest/expect-utils": "30.4.1", "@jest/get-type": "30.1.0", - "jest-matcher-utils": "30.3.0", - "jest-message-util": "30.3.0", - "jest-mock": "30.3.0", - "jest-util": "30.3.0" + "jest-matcher-utils": "30.4.1", + "jest-message-util": "30.4.1", + "jest-mock": "30.4.1", + "jest-util": "30.4.1" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -13200,16 +13191,16 @@ } }, "node_modules/jest": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-30.3.0.tgz", - "integrity": "sha512-AkXIIFcaazymvey2i/+F94XRnM6TsVLZDhBMLsd1Sf/W0wzsvvpjeyUrCZD6HGG4SDYPgDJDBKeiJTBb10WzMg==", + "version": "30.4.2", + "resolved": "https://registry.npmjs.org/jest/-/jest-30.4.2.tgz", + "integrity": "sha512-Yi1jqNC/Oq0N4hBgNH/YvBpP1P57QqundgytzYqy3yqAa7NZPNjSoi4SGbRAXDMdBzNE6xBCi5U7RgfrvMEUVQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/core": "30.3.0", - "@jest/types": "30.3.0", + "@jest/core": "30.4.2", + "@jest/types": "30.4.1", "import-local": "^3.2.0", - "jest-cli": "30.3.0" + "jest-cli": "30.4.2" }, "bin": { "jest": "bin/jest.js" @@ -13227,14 +13218,14 @@ } }, "node_modules/jest-changed-files": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.3.0.tgz", - "integrity": "sha512-B/7Cny6cV5At6M25EWDgf9S617lHivamL8vl6KEpJqkStauzcG4e+WPfDgMMF+H4FVH4A2PLRyvgDJan4441QA==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.4.1.tgz", + "integrity": "sha512-IuctmYrxi21iOSOaIXpJWalHyPAsVv0GeBHKDn8C1CA4W5htHn7INL+wdnL4Bo0+olEndvAFkmb++tIQJG+vvg==", "dev": true, "license": "MIT", "dependencies": { "execa": "^5.1.1", - "jest-util": "30.3.0", + "jest-util": "30.4.1", "p-limit": "^3.1.0" }, "engines": { @@ -13242,29 +13233,29 @@ } }, "node_modules/jest-circus": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.3.0.tgz", - "integrity": "sha512-PyXq5szeSfR/4f1lYqCmmQjh0vqDkURUYi9N6whnHjlRz4IUQfMcXkGLeEoiJtxtyPqgUaUUfyQlApXWBSN1RA==", + "version": "30.4.2", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.4.2.tgz", + "integrity": "sha512-rvHH7VlY6LgbJXJTQ87GW62g1FntOtbhh0zT+v04kC+pgL6aBKyYINXxWukCpj3dcIBMw5/XUbtDS9dU9JTXeQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "30.3.0", - "@jest/expect": "30.3.0", - "@jest/test-result": "30.3.0", - "@jest/types": "30.3.0", + "@jest/environment": "30.4.1", + "@jest/expect": "30.4.1", + "@jest/test-result": "30.4.1", + "@jest/types": "30.4.1", "@types/node": "*", "chalk": "^4.1.2", "co": "^4.6.0", "dedent": "^1.6.0", "is-generator-fn": "^2.1.0", - "jest-each": "30.3.0", - "jest-matcher-utils": "30.3.0", - "jest-message-util": "30.3.0", - "jest-runtime": "30.3.0", - "jest-snapshot": "30.3.0", - "jest-util": "30.3.0", + "jest-each": "30.4.1", + "jest-matcher-utils": "30.4.1", + "jest-message-util": "30.4.1", + "jest-runtime": "30.4.2", + "jest-snapshot": "30.4.1", + "jest-util": "30.4.1", "p-limit": "^3.1.0", - "pretty-format": "30.3.0", + "pretty-format": "30.4.1", "pure-rand": "^7.0.0", "slash": "^3.0.0", "stack-utils": "^2.0.6" @@ -13365,21 +13356,21 @@ } }, "node_modules/jest-cli": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.3.0.tgz", - "integrity": "sha512-l6Tqx+j1fDXJEW5bqYykDQQ7mQg+9mhWXtnj+tQZrTWYHyHoi6Be8HPumDSA+UiX2/2buEgjA58iJzdj146uCw==", + "version": "30.4.2", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.4.2.tgz", + "integrity": "sha512-jfA2ocvVHMXS2QijrJ0d31ektP+d/W0T5RpcTX2Pq+3sVqHlsXVCM2+FmwpL+bdY8OfHpIg9xMxLF17Zg0U49Q==", "dev": true, "license": "MIT", "dependencies": { - "@jest/core": "30.3.0", - "@jest/test-result": "30.3.0", - "@jest/types": "30.3.0", + "@jest/core": "30.4.2", + "@jest/test-result": "30.4.1", + "@jest/types": "30.4.1", "chalk": "^4.1.2", "exit-x": "^0.2.2", "import-local": "^3.2.0", - "jest-config": "30.3.0", - "jest-util": "30.3.0", - "jest-validate": "30.3.0", + "jest-config": "30.4.2", + "jest-util": "30.4.1", + "jest-validate": "30.4.1", "yargs": "^17.7.2" }, "bin": { @@ -13494,33 +13485,33 @@ } }, "node_modules/jest-config": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.3.0.tgz", - "integrity": "sha512-WPMAkMAtNDY9P/oKObtsRG/6KTrhtgPJoBTmk20uDn4Uy6/3EJnnaZJre/FMT1KVRx8cve1r7/FlMIOfRVWL4w==", + "version": "30.4.2", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.4.2.tgz", + "integrity": "sha512-rNHAShJQqQwFNoL0hbf3BphSBOWnpOUAKvidLS/AjNVLPfoj5mSf4jQMfW3cYOs6hXeZC7nF7mDHaBnbxELOzg==", "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.27.4", "@jest/get-type": "30.1.0", - "@jest/pattern": "30.0.1", - "@jest/test-sequencer": "30.3.0", - "@jest/types": "30.3.0", - "babel-jest": "30.3.0", + "@jest/pattern": "30.4.0", + "@jest/test-sequencer": "30.4.1", + "@jest/types": "30.4.1", + "babel-jest": "30.4.1", "chalk": "^4.1.2", "ci-info": "^4.2.0", "deepmerge": "^4.3.1", "glob": "^10.5.0", "graceful-fs": "^4.2.11", - "jest-circus": "30.3.0", - "jest-docblock": "30.2.0", - "jest-environment-node": "30.3.0", - "jest-regex-util": "30.0.1", - "jest-resolve": "30.3.0", - "jest-runner": "30.3.0", - "jest-util": "30.3.0", - "jest-validate": "30.3.0", + "jest-circus": "30.4.2", + "jest-docblock": "30.4.0", + "jest-environment-node": "30.4.1", + "jest-regex-util": "30.4.0", + "jest-resolve": "30.4.1", + "jest-runner": "30.4.2", + "jest-util": "30.4.1", + "jest-validate": "30.4.1", "parse-json": "^5.2.0", - "pretty-format": "30.3.0", + "pretty-format": "30.4.1", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" }, @@ -13637,16 +13628,16 @@ } }, "node_modules/jest-diff": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.3.0.tgz", - "integrity": "sha512-n3q4PDQjS4LrKxfWB3Z5KNk1XjXtZTBwQp71OP0Jo03Z6V60x++K5L8k6ZrW8MY8pOFylZvHM0zsjS1RqlHJZQ==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.4.1.tgz", + "integrity": "sha512-CRpFK0RtLriVDGcPPAnR6HMVI8bSR2jnUIgralhauzYQZIb4RH9AtEInTuQr65LmmGggGcRT6HIASxwqsVsmlA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/diff-sequences": "30.3.0", + "@jest/diff-sequences": "30.4.0", "@jest/get-type": "30.1.0", "chalk": "^4.1.2", - "pretty-format": "30.3.0" + "pretty-format": "30.4.1" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -13729,9 +13720,9 @@ } }, "node_modules/jest-docblock": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz", - "integrity": "sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==", + "version": "30.4.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.4.0.tgz", + "integrity": "sha512-ZPMabUZCx5MpbZ2eBYSvZ0J8fvo3dR9oM+eeUpb3aKNQFuS2tu3Duw1TNlMoP8k3WQgKGJuhcMFvwcVuq6T7oA==", "dev": true, "license": "MIT", "dependencies": { @@ -13742,17 +13733,17 @@ } }, "node_modules/jest-each": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.3.0.tgz", - "integrity": "sha512-V8eMndg/aZ+3LnCJgSm13IxS5XSBM22QSZc9BtPK8Dek6pm+hfUNfwBdvsB3d342bo1q7wnSkC38zjX259qZNA==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.4.1.tgz", + "integrity": "sha512-/8MJbH6fuj48TstjrMf+u/pd06Qezz5xOXvZA6442heNOWr8bdeoGZX2d9fCn028CoMgYmroH9//zky5GfyYmA==", "dev": true, "license": "MIT", "dependencies": { "@jest/get-type": "30.1.0", - "@jest/types": "30.3.0", + "@jest/types": "30.4.1", "chalk": "^4.1.2", - "jest-util": "30.3.0", - "pretty-format": "30.3.0" + "jest-util": "30.4.1", + "pretty-format": "30.4.1" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -13835,14 +13826,14 @@ } }, "node_modules/jest-environment-jsdom": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-30.3.0.tgz", - "integrity": "sha512-RLEOJy6ip1lpw0yqJ8tB3i88FC7VBz7i00Zvl2qF71IdxjS98gC9/0SPWYIBVXHm5hgCYK0PAlSlnHGGy9RoMg==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-30.4.1.tgz", + "integrity": "sha512-o3nfaN4zej7qgk2X0j8Jhq/S9nAVKs2xK3QeQxeHVvpkEPxaA1yxDGydR+iVI7zPy7Cp62Aq2h3Ja46QvfWHGA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "30.3.0", - "@jest/environment-jsdom-abstract": "30.3.0", + "@jest/environment": "30.4.1", + "@jest/environment-jsdom-abstract": "30.4.1", "jsdom": "^26.1.0" }, "engines": { @@ -13858,49 +13849,39 @@ } }, "node_modules/jest-environment-node": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.3.0.tgz", - "integrity": "sha512-4i6HItw/JSiJVsC5q0hnKIe/hbYfZLVG9YJ/0pU9Hz2n/9qZe3Rhn5s5CUZA5ORZlcdT/vmAXRMyONXJwPrmYQ==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.4.1.tgz", + "integrity": "sha512-4FZYVOk85hz2AyT6BbarKy9u37g6DbrDyCdFhsnDdXqyrueYQvB+0zO4f/kqLCRD0BsPRXPMNJeQwihKZV8naw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "30.3.0", - "@jest/fake-timers": "30.3.0", - "@jest/types": "30.3.0", + "@jest/environment": "30.4.1", + "@jest/fake-timers": "30.4.1", + "@jest/types": "30.4.1", "@types/node": "*", - "jest-mock": "30.3.0", - "jest-util": "30.3.0", - "jest-validate": "30.3.0" + "jest-mock": "30.4.1", + "jest-util": "30.4.1", + "jest-validate": "30.4.1" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/jest-haste-map": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.3.0.tgz", - "integrity": "sha512-mMi2oqG4KRU0R9QEtscl87JzMXfUhbKaFqOxmjb2CKcbHcUGFrJCBWHmnTiUqi6JcnzoBlO4rWfpdl2k/RfLCA==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.4.1.tgz", + "integrity": "sha512-rFrcONd8jeFsyw+Z9CrScJgglRf2+NFmNam8dKu7n+SoHqNYT47mn0DdEcVUZJpvh7Iz6/si7f7yUH7GJHVgnw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.3.0", + "@jest/types": "30.4.1", "@types/node": "*", "anymatch": "^3.1.3", "fb-watchman": "^2.0.2", "graceful-fs": "^4.2.11", - "jest-regex-util": "30.0.1", - "jest-util": "30.3.0", - "jest-worker": "30.3.0", + "jest-regex-util": "30.4.0", + "jest-util": "30.4.1", + "jest-worker": "30.4.1", "picomatch": "^4.0.3", "walker": "^1.0.8" }, @@ -13912,30 +13893,30 @@ } }, "node_modules/jest-leak-detector": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.3.0.tgz", - "integrity": "sha512-cuKmUUGIjfXZAiGJ7TbEMx0bcqNdPPI6P1V+7aF+m/FUJqFDxkFR4JqkTu8ZOiU5AaX/x0hZ20KaaIPXQzbMGQ==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.4.1.tgz", + "integrity": "sha512-IpmyiioeHxiWDhesHnUFmOxcTzwCwKpgACgWajtAP+nYQXiY7DakTxB6Bx9JFiRMljr0AX1PvnQdaU1KFoz6NQ==", "dev": true, "license": "MIT", "dependencies": { "@jest/get-type": "30.1.0", - "pretty-format": "30.3.0" + "pretty-format": "30.4.1" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-matcher-utils": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.3.0.tgz", - "integrity": "sha512-HEtc9uFQgaUHkC7nLSlQL3Tph4Pjxt/yiPvkIrrDCt9jhoLIgxaubo1G+CFOnmHYMxHwwdaSN7mkIFs6ZK8OhA==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.4.1.tgz", + "integrity": "sha512-zvYfX5CaeEkFrrLS9suWe9rvJrm9J1Iv3ua8kIBv9GEPzcnsfBf0bob37la7s67fs0nlBC3EuvkOLnXQKxtx4A==", "dev": true, "license": "MIT", "dependencies": { "@jest/get-type": "30.1.0", "chalk": "^4.1.2", - "jest-diff": "30.3.0", - "pretty-format": "30.3.0" + "jest-diff": "30.4.1", + "pretty-format": "30.4.1" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -14018,19 +13999,20 @@ } }, "node_modules/jest-message-util": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.3.0.tgz", - "integrity": "sha512-Z/j4Bo+4ySJ+JPJN3b2Qbl9hDq3VrXmnjjGEWD/x0BCXeOXPTV1iZYYzl2X8c1MaCOL+ewMyNBcm88sboE6YWw==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.4.1.tgz", + "integrity": "sha512-kwCKIvq0MCW1HzLoGola9Te6JUdzgV0loyKJ3Qghrkz9i5/RRIHsL95BMQc2HBBhlBKC4j22K9p11TGHH8RBpQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", - "@jest/types": "30.3.0", + "@jest/types": "30.4.1", "@types/stack-utils": "^2.0.3", "chalk": "^4.1.2", "graceful-fs": "^4.2.11", + "jest-util": "30.4.1", "picomatch": "^4.0.3", - "pretty-format": "30.3.0", + "pretty-format": "30.4.1", "slash": "^3.0.0", "stack-utils": "^2.0.6" }, @@ -14115,15 +14097,15 @@ } }, "node_modules/jest-mock": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.3.0.tgz", - "integrity": "sha512-OTzICK8CpE+t4ndhKrwlIdbM6Pn8j00lvmSmq5ejiO+KxukbLjgOflKWMn3KE34EZdQm5RqTuKj+5RIEniYhog==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.4.1.tgz", + "integrity": "sha512-/i8SVb8/NSB7RfNi8gfqu8gxLV23KaL5EpAttyb9iz8qWRIqXRLflycz/32wXsYkOnaUlx8NAKnJYtpsmXUmfw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.3.0", + "@jest/types": "30.4.1", "@types/node": "*", - "jest-util": "30.3.0" + "jest-util": "30.4.1" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -14156,9 +14138,9 @@ } }, "node_modules/jest-regex-util": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", - "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "version": "30.4.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.4.0.tgz", + "integrity": "sha512-mWlvLviKIgIQ8VCuM1xRdD0TWp3zlzionlmDBjuXVBs+VkmXq6FgW9T4Emr7oGz/Rk6feDCGyiugolcQEyp3mg==", "dev": true, "license": "MIT", "engines": { @@ -14166,18 +14148,18 @@ } }, "node_modules/jest-resolve": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.3.0.tgz", - "integrity": "sha512-NRtTAHQlpd15F9rUR36jqwelbrDV/dY4vzNte3S2kxCKUJRYNd5/6nTSbYiak1VX5g8IoFF23Uj5TURkUW8O5g==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.4.1.tgz", + "integrity": "sha512-Zry8Yq/yJcNAZ7dJ5F2heic8AheXvbFZ7XI5V+h28nrYZ7Qoyy4dItq8OodjnYD270mvX+ZudmrNV9cysqhW5Q==", "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.1.2", "graceful-fs": "^4.2.11", - "jest-haste-map": "30.3.0", + "jest-haste-map": "30.4.1", "jest-pnp-resolver": "^1.2.3", - "jest-util": "30.3.0", - "jest-validate": "30.3.0", + "jest-util": "30.4.1", + "jest-validate": "30.4.1", "slash": "^3.0.0", "unrs-resolver": "^1.7.11" }, @@ -14186,14 +14168,14 @@ } }, "node_modules/jest-resolve-dependencies": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.3.0.tgz", - "integrity": "sha512-9ev8s3YN6Hsyz9LV75XUwkCVFlwPbaFn6Wp75qnI0wzAINYWY8Fb3+6y59Rwd3QaS3kKXffHXsZMziMavfz/nw==", + "version": "30.4.2", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.4.2.tgz", + "integrity": "sha512-gDiVh1I+GxYzz9oXlyw+1wv6VOYX1WYxMOfjsA3iGKePV2oxmbHhwxfkALxNxYy1ciw6APWwkW2zZONwP97aEQ==", "dev": true, "license": "MIT", "dependencies": { - "jest-regex-util": "30.0.1", - "jest-snapshot": "30.3.0" + "jest-regex-util": "30.4.0", + "jest-snapshot": "30.4.1" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -14276,32 +14258,32 @@ } }, "node_modules/jest-runner": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.3.0.tgz", - "integrity": "sha512-gDv6C9LGKWDPLia9TSzZwf4h3kMQCqyTpq+95PODnTRDO0g9os48XIYYkS6D236vjpBir2fF63YmJFtqkS5Duw==", + "version": "30.4.2", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.4.2.tgz", + "integrity": "sha512-2dw0PslVYXxffXGpLo+Ejad+KcI1Qkjn7f4X4619gf21oCUmL+SPfjqIa/losUem3yEOvfNZe/F1HWUcNpODcg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/console": "30.3.0", - "@jest/environment": "30.3.0", - "@jest/test-result": "30.3.0", - "@jest/transform": "30.3.0", - "@jest/types": "30.3.0", + "@jest/console": "30.4.1", + "@jest/environment": "30.4.1", + "@jest/test-result": "30.4.1", + "@jest/transform": "30.4.1", + "@jest/types": "30.4.1", "@types/node": "*", "chalk": "^4.1.2", "emittery": "^0.13.1", "exit-x": "^0.2.2", "graceful-fs": "^4.2.11", - "jest-docblock": "30.2.0", - "jest-environment-node": "30.3.0", - "jest-haste-map": "30.3.0", - "jest-leak-detector": "30.3.0", - "jest-message-util": "30.3.0", - "jest-resolve": "30.3.0", - "jest-runtime": "30.3.0", - "jest-util": "30.3.0", - "jest-watcher": "30.3.0", - "jest-worker": "30.3.0", + "jest-docblock": "30.4.0", + "jest-environment-node": "30.4.1", + "jest-haste-map": "30.4.1", + "jest-leak-detector": "30.4.1", + "jest-message-util": "30.4.1", + "jest-resolve": "30.4.1", + "jest-runtime": "30.4.2", + "jest-util": "30.4.1", + "jest-watcher": "30.4.1", + "jest-worker": "30.4.1", "p-limit": "^3.1.0", "source-map-support": "0.5.13" }, @@ -14386,32 +14368,32 @@ } }, "node_modules/jest-runtime": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.3.0.tgz", - "integrity": "sha512-CgC+hIBJbuh78HEffkhNKcbXAytQViplcl8xupqeIWyKQF50kCQA8J7GeJCkjisC6hpnC9Muf8jV5RdtdFbGng==", + "version": "30.4.2", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.4.2.tgz", + "integrity": "sha512-3/5e8iPz2k/VLqlr8DgTftYyLUv8Su3FkCAO2/Od81UsUTpSxOrS6O5x5KkoQwyUjmpYyDJKeyAvg2T2nvpNkQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "30.3.0", - "@jest/fake-timers": "30.3.0", - "@jest/globals": "30.3.0", + "@jest/environment": "30.4.1", + "@jest/fake-timers": "30.4.1", + "@jest/globals": "30.4.1", "@jest/source-map": "30.0.1", - "@jest/test-result": "30.3.0", - "@jest/transform": "30.3.0", - "@jest/types": "30.3.0", + "@jest/test-result": "30.4.1", + "@jest/transform": "30.4.1", + "@jest/types": "30.4.1", "@types/node": "*", "chalk": "^4.1.2", "cjs-module-lexer": "^2.1.0", "collect-v8-coverage": "^1.0.2", "glob": "^10.5.0", "graceful-fs": "^4.2.11", - "jest-haste-map": "30.3.0", - "jest-message-util": "30.3.0", - "jest-mock": "30.3.0", - "jest-regex-util": "30.0.1", - "jest-resolve": "30.3.0", - "jest-snapshot": "30.3.0", - "jest-util": "30.3.0", + "jest-haste-map": "30.4.1", + "jest-message-util": "30.4.1", + "jest-mock": "30.4.1", + "jest-regex-util": "30.4.0", + "jest-resolve": "30.4.1", + "jest-snapshot": "30.4.1", + "jest-util": "30.4.1", "slash": "^3.0.0", "strip-bom": "^4.0.0" }, @@ -14496,9 +14478,9 @@ } }, "node_modules/jest-snapshot": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.3.0.tgz", - "integrity": "sha512-f14c7atpb4O2DeNhwcvS810Y63wEn8O1HqK/luJ4F6M4NjvxmAKQwBUWjbExUtMxWJQ0wVgmCKymeJK6NZMnfQ==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.4.1.tgz", + "integrity": "sha512-tEOkkfOMppUyeiHwjZswOQ3lcnoTnws/q5FnGIaeIh/jmoU0ZlgMYRR8sTlTj+nNGCoJ0RDq6SfxGxCsyMTPmw==", "dev": true, "license": "MIT", "dependencies": { @@ -14507,20 +14489,20 @@ "@babel/plugin-syntax-jsx": "^7.27.1", "@babel/plugin-syntax-typescript": "^7.27.1", "@babel/types": "^7.27.3", - "@jest/expect-utils": "30.3.0", + "@jest/expect-utils": "30.4.1", "@jest/get-type": "30.1.0", - "@jest/snapshot-utils": "30.3.0", - "@jest/transform": "30.3.0", - "@jest/types": "30.3.0", + "@jest/snapshot-utils": "30.4.1", + "@jest/transform": "30.4.1", + "@jest/types": "30.4.1", "babel-preset-current-node-syntax": "^1.2.0", "chalk": "^4.1.2", - "expect": "30.3.0", + "expect": "30.4.1", "graceful-fs": "^4.2.11", - "jest-diff": "30.3.0", - "jest-matcher-utils": "30.3.0", - "jest-message-util": "30.3.0", - "jest-util": "30.3.0", - "pretty-format": "30.3.0", + "jest-diff": "30.4.1", + "jest-matcher-utils": "30.4.1", + "jest-message-util": "30.4.1", + "jest-util": "30.4.1", + "pretty-format": "30.4.1", "semver": "^7.7.2", "synckit": "^0.11.8" }, @@ -14592,9 +14574,9 @@ } }, "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", + "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==", "dev": true, "license": "ISC", "bin": { @@ -14618,13 +14600,13 @@ } }, "node_modules/jest-util": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.3.0.tgz", - "integrity": "sha512-/jZDa00a3Sz7rdyu55NLrQCIrbyIkbBxareejQI315f/i8HjYN+ZWsDLLpoQSiUIEIyZF/R8fDg3BmB8AtHttg==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.4.1.tgz", + "integrity": "sha512-vjQb1sACEiv13DKJMDToJpzVW0joCsIQrmbg0fi7CyOOt+g9jTuQl2A216pWRBYhOVt53XbL/2LbMKg1BECWOw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.3.0", + "@jest/types": "30.4.1", "@types/node": "*", "chalk": "^4.1.2", "ci-info": "^4.2.0", @@ -14716,18 +14698,18 @@ } }, "node_modules/jest-validate": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.3.0.tgz", - "integrity": "sha512-I/xzC8h5G+SHCb2P2gWkJYrNiTbeL47KvKeW5EzplkyxzBRBw1ssSHlI/jXec0ukH2q7x2zAWQm7015iusg62Q==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.4.1.tgz", + "integrity": "sha512-PDWi4SOwLnwqNDfHZjOcsEFyZ4fc/2W2gVL3DEoyqnB6jCQMLRtfBong8s6omIw3lI0HWOus12xfnFmQtjW3fw==", "dev": true, "license": "MIT", "dependencies": { "@jest/get-type": "30.1.0", - "@jest/types": "30.3.0", + "@jest/types": "30.4.1", "camelcase": "^6.3.0", "chalk": "^4.1.2", "leven": "^3.1.0", - "pretty-format": "30.3.0" + "pretty-format": "30.4.1" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -14823,19 +14805,19 @@ } }, "node_modules/jest-watcher": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.3.0.tgz", - "integrity": "sha512-PJ1d9ThtTR8aMiBWUdcownq9mDdLXsQzJayTk4kmaBRHKvwNQn+ANveuhEBUyNI2hR1TVhvQ8D5kHubbzBHR/w==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.4.1.tgz", + "integrity": "sha512-/l9UonmvCwjHH7d2h3iAwIloLc1H0S8mJZ/LNK3i86hqwPAz8otUJjP9MfYtz9Tt77Su5FD2xGjZn8d31IZHlw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/test-result": "30.3.0", - "@jest/types": "30.3.0", + "@jest/test-result": "30.4.1", + "@jest/types": "30.4.1", "@types/node": "*", "ansi-escapes": "^4.3.2", "chalk": "^4.1.2", "emittery": "^0.13.1", - "jest-util": "30.3.0", + "jest-util": "30.4.1", "string-length": "^4.0.2" }, "engines": { @@ -14919,15 +14901,15 @@ } }, "node_modules/jest-worker": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.3.0.tgz", - "integrity": "sha512-DrCKkaQwHexjRUFTmPzs7sHQe0TSj9nvDALKGdwmK5mW9v7j90BudWirKAJHt3QQ9Dhrg1F7DogPzhChppkJpQ==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.4.1.tgz", + "integrity": "sha512-SHynN/q/QD++iNyvMdy+WMmbCGk8jIsNcRxycXbWubSOhvo6T+j2afcfUSl+3hYsiBebOTo0cT7c2H7CXugu1g==", "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", "@ungap/structured-clone": "^1.3.0", - "jest-util": "30.3.0", + "jest-util": "30.4.1", "merge-stream": "^2.0.0", "supports-color": "^8.1.1" }, @@ -15978,9 +15960,9 @@ } }, "node_modules/make-dir/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", + "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==", "dev": true, "license": "ISC", "bin": { @@ -19165,15 +19147,16 @@ } }, "node_modules/pretty-format": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.3.0.tgz", - "integrity": "sha512-oG4T3wCbfeuvljnyAzhBvpN45E8iOTXCU/TD3zXW80HA3dQ4ahdqMkWGiPWZvjpQwlbyHrPTWUAqUzGzv4l1JQ==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.4.1.tgz", + "integrity": "sha512-K6KiKMHTL4jjX4u3Kir2EW07nRfcqVTXIImx50wbjHQTcZPgg+gjVeNTIT3l3L1Rd4UefxfogquC9J37SoFyyw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "30.0.5", + "@jest/schemas": "30.4.1", "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" + "react-is-18": "npm:react-is@^18.3.1", + "react-is-19": "npm:react-is@^19.2.5" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -19483,8 +19466,19 @@ "react": "^19.2.5" } }, - "node_modules/react-is": { + "node_modules/react-is-18": { + "name": "react-is", "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/react-is-19": { + "name": "react-is", + "version": "19.2.6", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.6.tgz", + "integrity": "sha512-XjBR15BhXuylgWGuslhDKqlSayuqvqBX91BP8pauG8kd1zY8kotkNWbXksTCNRarse4kuGbe2kIY05ARtwNIvw==", "dev": true, "license": "MIT" }, @@ -22832,277 +22826,10 @@ "uuid": "^11.1.0" }, "devDependencies": { - "@types/jest": "^29.5.14", + "@types/jest": "^30.0.0", "@types/uuid": "^10.0.0", "ts-node": "^10.9.2" } - }, - "packages/oidc-browser/node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "jest-get-type": "^29.6.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "packages/oidc-browser/node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "packages/oidc-browser/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "packages/oidc-browser/node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", - "dev": true, - "license": "MIT" - }, - "packages/oidc-browser/node_modules/@types/jest": { - "version": "29.5.14", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", - "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" - } - }, - "packages/oidc-browser/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "packages/oidc-browser/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "packages/oidc-browser/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "packages/oidc-browser/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "packages/oidc-browser/node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "packages/oidc-browser/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "packages/oidc-browser/node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "packages/oidc-browser/node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "packages/oidc-browser/node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "packages/oidc-browser/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "packages/oidc-browser/node_modules/picomatch": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "packages/oidc-browser/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "packages/oidc-browser/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "packages/oidc-browser/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } } } } diff --git a/package.json b/package.json index a31892838b..b448437b4d 100644 --- a/package.json +++ b/package.json @@ -64,8 +64,8 @@ "eslint-config-next": "^16.2.1", "express": "^5.2.1", "http-link-header": "^1.1.3", - "jest": "^30.3.0", - "jest-environment-jsdom": "^30.3.0", + "jest": "^30.4.2", + "jest-environment-jsdom": "^30.4.1", "jest-mock-console": "^1.2.3", "lerna": "^9.0.7", "lerna-audit": "^1.3.3", diff --git a/packages/oidc-browser/package.json b/packages/oidc-browser/package.json index 2621e794e6..7616364cc6 100644 --- a/packages/oidc-browser/package.json +++ b/packages/oidc-browser/package.json @@ -20,7 +20,7 @@ }, "license": "MIT", "devDependencies": { - "@types/jest": "^29.5.14", + "@types/jest": "^30.0.0", "@types/uuid": "^10.0.0", "ts-node": "^10.9.2" }, From af2e6d21eb263dc0a981f8f98c83d45f81952592 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 May 2026 08:30:36 +0000 Subject: [PATCH 6/7] Bump @rollup/plugin-terser from 0.4.4 to 1.0.0 (#4224) Bumps [@rollup/plugin-terser](https://github.com/rollup/plugins/tree/HEAD/packages/terser) from 0.4.4 to 1.0.0. - [Changelog](https://github.com/rollup/plugins/blob/master/packages/terser/CHANGELOG.md) - [Commits](https://github.com/rollup/plugins/commits/beep-v1.0.0/packages/terser) --- updated-dependencies: - dependency-name: "@rollup/plugin-terser" dependency-version: 1.0.0 dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 26 +++++++++++--------------- package.json | 2 +- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index 15fc60ec09..7593e81c76 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,7 +25,7 @@ "@playwright/test": "^1.59.1", "@rollup/plugin-commonjs": "^29.0.2", "@rollup/plugin-node-resolve": "^16.0.3", - "@rollup/plugin-terser": "^0.4.4", + "@rollup/plugin-terser": "^1.0.0", "@types/cookie-session": "^2.0.49", "@types/dotenv-flow": "^3.3.3", "@types/express": "^5.0.6", @@ -5835,16 +5835,18 @@ } }, "node_modules/@rollup/plugin-terser": { - "version": "0.4.4", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-1.0.0.tgz", + "integrity": "sha512-FnCxhTBx6bMOYQrar6C8h3scPt8/JwIzw3+AJ2K++6guogH5fYaIFia+zZuhqv0eo1RN7W1Pz630SyvLbDjhtQ==", "dev": true, "license": "MIT", "dependencies": { - "serialize-javascript": "^6.0.1", + "serialize-javascript": "^7.0.3", "smob": "^1.0.0", "terser": "^5.17.4" }, "engines": { - "node": ">=14.0.0" + "node": ">=20.0.0" }, "peerDependencies": { "rollup": "^2.0.0||^3.0.0||^4.0.0" @@ -19399,14 +19401,6 @@ "node": ">=8" } }, - "node_modules/randombytes": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, "node_modules/range-parser": { "version": "1.2.1", "dev": true, @@ -20293,11 +20287,13 @@ } }, "node_modules/serialize-javascript": { - "version": "6.0.2", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-7.0.5.tgz", + "integrity": "sha512-F4LcB0UqUl1zErq+1nYEEzSHJnIwb3AF2XWB94b+afhrekOUijwooAYqFyRbjYkm2PAKBabx6oYv/xDxNi8IBw==", "dev": true, "license": "BSD-3-Clause", - "dependencies": { - "randombytes": "^2.1.0" + "engines": { + "node": ">=20.0.0" } }, "node_modules/serve-static": { diff --git a/package.json b/package.json index b448437b4d..d9ecfbbb05 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "@playwright/test": "^1.59.1", "@rollup/plugin-commonjs": "^29.0.2", "@rollup/plugin-node-resolve": "^16.0.3", - "@rollup/plugin-terser": "^0.4.4", + "@rollup/plugin-terser": "^1.0.0", "@types/cookie-session": "^2.0.49", "@types/dotenv-flow": "^3.3.3", "@types/express": "^5.0.6", From 060c489f4df758144159be8703c8f428137a06d0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 May 2026 11:33:31 +0200 Subject: [PATCH 7/7] Bump uuid from 11.1.0 to 14.0.0 (#4258) * Bump uuid from 11.1.0 to 14.0.0 Bumps [uuid](https://github.com/uuidjs/uuid) from 11.1.0 to 14.0.0. - [Release notes](https://github.com/uuidjs/uuid/releases) - [Changelog](https://github.com/uuidjs/uuid/blob/main/CHANGELOG.md) - [Commits](https://github.com/uuidjs/uuid/compare/v11.1.0...v14.0.0) --- updated-dependencies: - dependency-name: uuid dependency-version: 14.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * Adjust jest config to uuid being ESM * fixup! Adjust jest config to uuid being ESM --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicolas Ayral Seydoux --- jest.config.ts | 6 ++- package-lock.json | 61 ++++++++++++++++++++++++++++-- packages/browser/package.json | 2 +- packages/core/package.json | 2 +- packages/node/package.json | 2 +- packages/oidc-browser/package.json | 2 +- 6 files changed, 66 insertions(+), 9 deletions(-) diff --git a/jest.config.ts b/jest.config.ts index cac914f4c2..8c0b173de6 100644 --- a/jest.config.ts +++ b/jest.config.ts @@ -53,8 +53,12 @@ const baseConfig: ArrayElement> = { "ts-jest", { tsconfig: { allowJs: true } }, ], + "node_modules[\\\\/]uuid.+\\.js$": [ + "ts-jest", + { tsconfig: { allowJs: true } }, + ], }, - transformIgnorePatterns: ["node_modules[\\\\/](?!jose)"], + transformIgnorePatterns: ["node_modules[\\\\/](?!jose|uuid)"], moduleNameMapper: { "^jose": esmRequire.resolve("jose"), }, diff --git a/package-lock.json b/package-lock.json index 7593e81c76..d4d32c1d06 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22117,6 +22117,7 @@ }, "node_modules/uuid": { "version": "11.1.0", + "dev": true, "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" @@ -22714,7 +22715,7 @@ "@inrupt/solid-client-authn-core": "^4.0.0", "events": "^3.3.0", "jose": "^6.2.3", - "uuid": "^11.1.0" + "uuid": "^14.0.0" }, "devDependencies": { "@types/node": "^25.6.2", @@ -22752,6 +22753,19 @@ "express": "^5.1.0" } }, + "packages/browser/node_modules/uuid": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-14.0.0.tgz", + "integrity": "sha512-Qo+uWgilfSmAhXCMav1uYFynlQO7fMFiMVZsQqZRMIXp0O7rR7qjkj+cPvBHLgBqi960QCoo/PH2/6ZtVqKvrg==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist-node/bin/uuid" + } + }, "packages/core": { "name": "@inrupt/solid-client-authn-core", "version": "4.0.0", @@ -22759,7 +22773,7 @@ "dependencies": { "events": "^3.3.0", "jose": "^6.2.3", - "uuid": "^11.1.0" + "uuid": "^14.0.0" }, "devDependencies": { "@types/uuid": "^10.0.0" @@ -22768,6 +22782,19 @@ "node": "^22.0.0 || ^24.0.0" } }, + "packages/core/node_modules/uuid": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-14.0.0.tgz", + "integrity": "sha512-Qo+uWgilfSmAhXCMav1uYFynlQO7fMFiMVZsQqZRMIXp0O7rR7qjkj+cPvBHLgBqi960QCoo/PH2/6ZtVqKvrg==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist-node/bin/uuid" + } + }, "packages/node": { "name": "@inrupt/solid-client-authn-node", "version": "4.0.0", @@ -22776,7 +22803,7 @@ "@inrupt/solid-client-authn-core": "^4.0.0", "jose": "^6.2.3", "openid-client": "^5.7.1", - "uuid": "^11.1.0" + "uuid": "^14.0.0" }, "devDependencies": { "@types/node": "^25.6.2", @@ -22811,6 +22838,19 @@ "@types/express": "^5.0.5" } }, + "packages/node/node_modules/uuid": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-14.0.0.tgz", + "integrity": "sha512-Qo+uWgilfSmAhXCMav1uYFynlQO7fMFiMVZsQqZRMIXp0O7rR7qjkj+cPvBHLgBqi960QCoo/PH2/6ZtVqKvrg==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist-node/bin/uuid" + } + }, "packages/oidc-browser": { "name": "@inrupt/oidc-client-ext", "version": "4.0.0", @@ -22819,13 +22859,26 @@ "@inrupt/solid-client-authn-core": "^4.0.0", "jose": "^6.2.3", "oidc-client-ts": "^3.5.0", - "uuid": "^11.1.0" + "uuid": "^14.0.0" }, "devDependencies": { "@types/jest": "^30.0.0", "@types/uuid": "^10.0.0", "ts-node": "^10.9.2" } + }, + "packages/oidc-browser/node_modules/uuid": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-14.0.0.tgz", + "integrity": "sha512-Qo+uWgilfSmAhXCMav1uYFynlQO7fMFiMVZsQqZRMIXp0O7rR7qjkj+cPvBHLgBqi960QCoo/PH2/6ZtVqKvrg==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist-node/bin/uuid" + } } } } diff --git a/packages/browser/package.json b/packages/browser/package.json index 23e395e294..ef951622b7 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -34,7 +34,7 @@ "@inrupt/solid-client-authn-core": "^4.0.0", "events": "^3.3.0", "jose": "^6.2.3", - "uuid": "^11.1.0" + "uuid": "^14.0.0" }, "publishConfig": { "access": "public" diff --git a/packages/core/package.json b/packages/core/package.json index f25a6e8d48..74c4b86c00 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -38,7 +38,7 @@ "dependencies": { "events": "^3.3.0", "jose": "^6.2.3", - "uuid": "^11.1.0" + "uuid": "^14.0.0" }, "publishConfig": { "access": "public" diff --git a/packages/node/package.json b/packages/node/package.json index 0e7b7fec39..b74cda2b5a 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -31,7 +31,7 @@ "@inrupt/solid-client-authn-core": "^4.0.0", "jose": "^6.2.3", "openid-client": "^5.7.1", - "uuid": "^11.1.0" + "uuid": "^14.0.0" }, "publishConfig": { "access": "public" diff --git a/packages/oidc-browser/package.json b/packages/oidc-browser/package.json index 7616364cc6..bcc5534d14 100644 --- a/packages/oidc-browser/package.json +++ b/packages/oidc-browser/package.json @@ -28,7 +28,7 @@ "@inrupt/solid-client-authn-core": "^4.0.0", "jose": "^6.2.3", "oidc-client-ts": "^3.5.0", - "uuid": "^11.1.0" + "uuid": "^14.0.0" }, "publishConfig": { "access": "public"