diff --git a/.changeset/sixty-toys-enjoy.md b/.changeset/sixty-toys-enjoy.md new file mode 100644 index 00000000..21ec9254 --- /dev/null +++ b/.changeset/sixty-toys-enjoy.md @@ -0,0 +1,13 @@ +--- +'@asgardeo/tanstack-router': patch +'@asgardeo/react-router': patch +'@asgardeo/browser': patch +'@asgardeo/express': patch +'@asgardeo/nextjs': patch +'@asgardeo/react': patch +'@asgardeo/i18n': patch +'@asgardeo/node': patch +'@asgardeo/vue': patch +--- + +Fix failures in the CI diff --git a/package.json b/package.json index 6994e5bb..00d09fc7 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ }, "devDependencies": { "@changesets/changelog-github": "0.5.1", - "@changesets/cli": "2.29.4", + "@changesets/cli": "2.29.8", "@wso2/eslint-plugin": "catalog:", "@wso2/prettier-config": "catalog:", "eslint": "8.57.0", @@ -46,7 +46,18 @@ "test-exclude>glob": "10.5.0", "js-beautify>glob": "10.5.0", "@types/react": "19.1.5", - "@types/react-dom": "19.1.5" + "@types/react-dom": "19.1.5", + "js-yaml": "4.1.1", + "read-yaml-file": "2.1.0", + "brace-expansion": "2.0.2", + "@eslint/plugin-kit": "0.3.4", + "tmp": "0.2.4", + "min-document": "2.19.1", + "lodash": "4.17.23", + "tar": "7.5.4", + "seroval": "1.4.1", + "qs": "6.14.1", + "@vitejs/plugin-vue>vite": "7.1.12" } }, "publishConfig": { diff --git a/packages/browser/package.json b/packages/browser/package.json index 796a658c..bef000af 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -50,6 +50,7 @@ "esbuild-plugin-inline-worker": "0.1.1", "esbuild-plugins-node-modules-polyfill": "1.7.0", "eslint": "8.57.0", + "jsdom": "^27.4.0", "playwright": "1.55.1", "prettier": "2.6.2", "rimraf": "6.1.0", diff --git a/packages/browser/src/utils/__tests__/navigate.test.ts b/packages/browser/src/utils/__tests__/navigate.test.ts index 7f6e76c8..968b6dd9 100644 --- a/packages/browser/src/utils/__tests__/navigate.test.ts +++ b/packages/browser/src/utils/__tests__/navigate.test.ts @@ -16,7 +16,11 @@ * under the License. */ -import {vi} from 'vitest'; +/** + * @vitest-environment jsdom + */ + +import {vi, describe, it, expect, beforeEach, afterEach} from 'vitest'; import navigate from '../navigate'; describe('navigate', () => { @@ -28,8 +32,6 @@ describe('navigate', () => { // @ts-ignore window.dispatchEvent = vi.fn(); // @ts-ignore - window.location.assign = vi.fn(); - // @ts-ignore delete window.location; // @ts-ignore window.location = { diff --git a/packages/browser/vitest.config.ts b/packages/browser/vitest.config.ts index 6aff116e..44df54fb 100644 --- a/packages/browser/vitest.config.ts +++ b/packages/browser/vitest.config.ts @@ -20,12 +20,9 @@ import {defineConfig} from 'vitest/config'; export default defineConfig({ test: { - browser: { - enabled: true, - headless: true, - instances: [{browser: 'chromium'}], - provider: 'playwright', - }, + environment: 'jsdom', globals: true, + testTimeout: 10000, + hookTimeout: 10000, }, }); diff --git a/packages/express/.eslintignore b/packages/express/.eslintignore index 177586b6..ca1d662b 100644 --- a/packages/express/.eslintignore +++ b/packages/express/.eslintignore @@ -1,4 +1,5 @@ /dist /build /node_modules -/coverage \ No newline at end of file +/coverage +/src/__legacy__ diff --git a/packages/express/package.json b/packages/express/package.json index 5f914deb..4a17a836 100644 --- a/packages/express/package.json +++ b/packages/express/package.json @@ -37,7 +37,7 @@ "clean": "rimraf dist", "fix:lint": "eslint . --ext .js,.jsx,.ts,.tsx,.cjs,.mjs", "lint": "eslint . --ext .js,.jsx,.ts,.tsx,.cjs,.mjs", - "test": "vitest", + "test": "vitest --passWithNoTests", "typecheck": "tsc -p tsconfig.lib.json" }, "devDependencies": { @@ -46,7 +46,7 @@ "@wso2/prettier-config": "catalog:", "esbuild": "0.25.9", "eslint": "8.57.0", - "express": "5.1.0", + "express": "5.2.1", "prettier": "2.6.2", "rimraf": "6.1.0", "typescript": "5.7.2", diff --git a/packages/express/src/index.ts b/packages/express/src/index.ts index b1b4b03f..37600655 100644 --- a/packages/express/src/index.ts +++ b/packages/express/src/index.ts @@ -1,7 +1,7 @@ /** - * Copyright (c) 2022, WSO2 Inc. (http://www.wso2.com) All Rights Reserved. + * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com). * - * WSO2 Inc. licenses this file to you under the Apache License, + * WSO2 LLC. licenses this file to you under the Apache License, * Version 2.0 (the "License"); you may not use this file except * in compliance with the License. * You may obtain a copy of the License at @@ -16,7 +16,7 @@ * under the License. */ -export * from "./__legacy__/models"; -export * from "./__legacy__/client"; +export * from './__legacy__/models'; +export * from './__legacy__/client'; export * from '@asgardeo/node'; diff --git a/packages/express/vitest.config.ts b/packages/express/vitest.config.ts index 29a917d1..31c7e556 100644 --- a/packages/express/vitest.config.ts +++ b/packages/express/vitest.config.ts @@ -16,6 +16,7 @@ * under the License. */ +// eslint-disable-next-line import/no-extraneous-dependencies import {defineConfig} from 'vitest/config'; export default defineConfig({ diff --git a/packages/i18n/src/translations/hi-IN.ts b/packages/i18n/src/translations/hi-IN.ts index 0a3d78b4..b73dbe16 100644 --- a/packages/i18n/src/translations/hi-IN.ts +++ b/packages/i18n/src/translations/hi-IN.ts @@ -17,6 +17,7 @@ */ /* eslint-disable sort-keys */ +/* eslint-disable @typescript-eslint/naming-convention */ import {I18nTranslations, I18nMetadata, I18nBundle} from '../models/i18n'; diff --git a/packages/i18n/src/utils/__tests__/getDefaultI18nBundles.test.ts b/packages/i18n/src/utils/__tests__/getDefaultI18nBundles.test.ts index 1edf06a2..7c6a0cba 100644 --- a/packages/i18n/src/utils/__tests__/getDefaultI18nBundles.test.ts +++ b/packages/i18n/src/utils/__tests__/getDefaultI18nBundles.test.ts @@ -17,10 +17,10 @@ */ import {describe, expect, it} from 'vitest'; -import getDefaultI18nBundles from '../getDefaultI18nBundles'; import TranslationBundleConstants from '../../constants/TranslationBundleConstants'; import type {I18nBundle} from '../../models/i18n'; import {en_US} from '../../translations'; +import getDefaultI18nBundles from '../getDefaultI18nBundles'; describe('getDefaultI18nBundles', (): void => { it('should return a collection of i18n bundles', (): void => { @@ -86,7 +86,7 @@ describe('getDefaultI18nBundles', (): void => { const bundles: Record = getDefaultI18nBundles(); Object.values(bundles).forEach((bundle: I18nBundle) => { - const translations = bundle.translations; + const {translations} = bundle; expect(translations).toHaveProperty('elements.buttons.signin.text'); expect(translations).toHaveProperty('elements.buttons.signout.text'); diff --git a/packages/i18n/vitest.config.ts b/packages/i18n/vitest.config.ts index dbdd537b..6cf07d13 100644 --- a/packages/i18n/vitest.config.ts +++ b/packages/i18n/vitest.config.ts @@ -16,6 +16,7 @@ * under the License. */ +// eslint-disable-next-line import/no-extraneous-dependencies import {defineConfig} from 'vitest/config'; export default defineConfig({ diff --git a/packages/nextjs/package.json b/packages/nextjs/package.json index 1889eeab..fe2b18f2 100644 --- a/packages/nextjs/package.json +++ b/packages/nextjs/package.json @@ -62,7 +62,7 @@ "esbuild": "0.25.9", "esbuild-plugin-preserve-directives": "0.0.11", "eslint": "8.57.0", - "next": "15.3.8", + "next": "15.4.10", "prettier": "2.6.2", "react": "19.1.4", "rimraf": "6.1.0", diff --git a/packages/node/package.json b/packages/node/package.json index 280a9981..0ba8a367 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -37,7 +37,7 @@ "clean": "rimraf dist", "fix:lint": "eslint . --ext .js,.jsx,.ts,.tsx,.cjs,.mjs", "lint": "eslint . --ext .js,.jsx,.ts,.tsx,.cjs,.mjs", - "test": "vitest", + "test": "vitest --passWithNoTests", "typecheck": "tsc -p tsconfig.lib.json" }, "devDependencies": { diff --git a/packages/node/src/__legacy__/client.ts b/packages/node/src/__legacy__/client.ts index fb3a12e1..517a6977 100644 --- a/packages/node/src/__legacy__/client.ts +++ b/packages/node/src/__legacy__/client.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) {{year}}, WSO2 LLC. (https://www.wso2.com). + * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com). * * WSO2 LLC. licenses this file to you under the Apache License, * Version 2.0 (the "License"); you may not use this file except @@ -37,7 +37,7 @@ import {AuthURLCallback} from './models'; * @class AsgardeoNodeClient */ export class AsgardeoNodeClient { - private _authCore: AsgardeoNodeCore; + private authCore: AsgardeoNodeCore; /** * This is the constructor method that returns an instance of the `AsgardeoNodeClient` class. @@ -60,10 +60,11 @@ export class AsgardeoNodeClient { * @link https://github.com/asgardeo/asgardeo-auth-js-sdk/tree/master#constructor * @preserve */ + // eslint-disable-next-line @typescript-eslint/no-empty-function constructor() {} public async initialize(config: AuthClientConfig, store?: Storage): Promise { - this._authCore = new AsgardeoNodeCore(config, store); + this.authCore = new AsgardeoNodeCore(config, store); return Promise.resolve(true); } @@ -108,7 +109,7 @@ export class AsgardeoNodeClient { state?: string, signInConfig?: Record, ): Promise { - return this._authCore.signIn(authURLCallback, userId, authorizationCode, sessionState, state, signInConfig); + return this.authCore.signIn(authURLCallback, userId, authorizationCode, sessionState, state, signInConfig); } /** @@ -117,7 +118,7 @@ export class AsgardeoNodeClient { * @returns {Promise>} - A promise that resolves with the configuration data. */ public async getConfigData(): Promise> { - return this._authCore.getConfigData(); + return this.authCore.getConfigData(); } /** @@ -138,7 +139,7 @@ export class AsgardeoNodeClient { * */ public async signOut(userId: string): Promise { - return this._authCore.signOut(userId); + return this.authCore.signOut(userId); } /** @@ -159,7 +160,7 @@ export class AsgardeoNodeClient { * */ public async isSignedIn(userId: string): Promise { - return this._authCore.isSignedIn(userId); + return this.authCore.isSignedIn(userId); } /** @@ -180,7 +181,7 @@ export class AsgardeoNodeClient { * */ public async getIdToken(userId: string): Promise { - return this._authCore.getIdToken(userId); + return this.authCore.getIdToken(userId); } /** @@ -202,7 +203,7 @@ export class AsgardeoNodeClient { * */ public async getUser(userId: string): Promise { - return this._authCore.getUser(userId); + return this.authCore.getUser(userId); } /** @@ -221,7 +222,7 @@ export class AsgardeoNodeClient { * */ public async getOpenIDProviderEndpoints(): Promise { - return this._authCore.getOpenIDProviderEndpoints(); + return this.authCore.getOpenIDProviderEndpoints(); } /** @@ -243,7 +244,7 @@ export class AsgardeoNodeClient { * */ public async getDecodedIdToken(userId?: string, idToken?: string): Promise { - return this._authCore.getDecodedIdToken(userId, idToken); + return this.authCore.getDecodedIdToken(userId, idToken); } /** @@ -265,7 +266,7 @@ export class AsgardeoNodeClient { * */ public async getAccessToken(userId?: string): Promise { - return this._authCore.getAccessToken(userId); + return this.authCore.getAccessToken(userId); } /** @@ -309,7 +310,7 @@ export class AsgardeoNodeClient { * */ public async exchangeToken(config: TokenExchangeRequestConfig, userId?: string): Promise { - return this._authCore.exchangeToken(config, userId); + return this.authCore.exchangeToken(config, userId); } /** @@ -332,11 +333,11 @@ export class AsgardeoNodeClient { * */ public async reInitialize(config: Partial>): Promise { - return this._authCore.reInitialize(config); + return this.authCore.reInitialize(config); } public async getSignInUrl(requestConfig?: ExtendedAuthorizeRequestUrlParams, userId?: string): Promise { - return this._authCore.getAuthURL(userId, requestConfig); + return this.authCore.getAuthURL(userId, requestConfig); } /** @@ -357,7 +358,7 @@ export class AsgardeoNodeClient { * */ public async revokeAccessToken(userId?: string): Promise { - return this._authCore.revokeAccessToken(userId); + return this.authCore.revokeAccessToken(userId); } /** @@ -379,7 +380,7 @@ export class AsgardeoNodeClient { * @memberof AsgardeoNodeClient */ public refreshAccessToken(userId?: string): Promise { - return this._authCore.refreshAccessToken(userId); + return this.authCore.refreshAccessToken(userId); } /** @@ -425,6 +426,6 @@ export class AsgardeoNodeClient { } public async getStorageManager(): Promise> { - return this._authCore.getStorageManager(); + return this.authCore.getStorageManager(); } } diff --git a/packages/node/src/__legacy__/constants/index.ts b/packages/node/src/__legacy__/constants/index.ts index 4bb03a31..21a47a49 100644 --- a/packages/node/src/__legacy__/constants/index.ts +++ b/packages/node/src/__legacy__/constants/index.ts @@ -1,20 +1,20 @@ /** -* Copyright (c) 2022, WSO2 Inc. (http://www.wso2.com) All Rights Reserved. -* -* WSO2 Inc. licenses this file to you under the Apache License, -* Version 2.0 (the "License"); you may not use this file except -* in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, -* software distributed under the License is distributed on an -* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -* KIND, either express or implied. See the License for the -* specific language governing permissions and limitations -* under the License. -*/ + * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com). + * + * WSO2 LLC. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ -export * from "./uuid-config"; -export * from "./logger-config"; +export * from './uuid-config'; +export * from './logger-config'; diff --git a/packages/node/src/__legacy__/constants/logger-config.ts b/packages/node/src/__legacy__/constants/logger-config.ts index 3c4e1691..9c6559ba 100644 --- a/packages/node/src/__legacy__/constants/logger-config.ts +++ b/packages/node/src/__legacy__/constants/logger-config.ts @@ -1,7 +1,7 @@ /** - * Copyright (c) 2022, WSO2 Inc. (http://www.wso2.com) All Rights Reserved. + * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com). * - * WSO2 Inc. licenses this file to you under the Apache License, + * WSO2 LLC. licenses this file to you under the Apache License, * Version 2.0 (the "License"); you may not use this file except * in compliance with the License. * You may obtain a copy of the License at @@ -16,15 +16,28 @@ * under the License. */ -export const LOGGER_CONFIG = { - bgGreen: "\x1b[42m", - bgRed: "\x1b[41m", - bgWhite: "\x1b[47m", - bgYellow: "\x1b[43m", - fgBlack: "\x1b[30m", - fgGreen: "\x1b[32m", - fgRed: "\x1b[31m", - fgWhite: "\x1b[37m", - fgYellow: "\x1b[33m", - reset: "\x1b[0m" +interface LoggerConfig { + bgGreen: string; + bgRed: string; + bgWhite: string; + bgYellow: string; + fgBlack: string; + fgGreen: string; + fgRed: string; + fgWhite: string; + fgYellow: string; + reset: string; } + +export const LOGGER_CONFIG: LoggerConfig = { + bgGreen: '\x1b[42m', + bgRed: '\x1b[41m', + bgWhite: '\x1b[47m', + bgYellow: '\x1b[43m', + fgBlack: '\x1b[30m', + fgGreen: '\x1b[32m', + fgRed: '\x1b[31m', + fgWhite: '\x1b[37m', + fgYellow: '\x1b[33m', + reset: '\x1b[0m', +}; diff --git a/packages/node/src/__legacy__/constants/uuid-config.ts b/packages/node/src/__legacy__/constants/uuid-config.ts index f807f255..84b85da3 100644 --- a/packages/node/src/__legacy__/constants/uuid-config.ts +++ b/packages/node/src/__legacy__/constants/uuid-config.ts @@ -1,7 +1,7 @@ /** - * Copyright (c) 2022, WSO2 Inc. (http://www.wso2.com) All Rights Reserved. + * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com). * - * WSO2 Inc. licenses this file to you under the Apache License, + * WSO2 LLC. licenses this file to you under the Apache License, * Version 2.0 (the "License"); you may not use this file except * in compliance with the License. * You may obtain a copy of the License at @@ -16,4 +16,4 @@ * under the License. */ -export const UUID_VERSION = 4; +export const UUID_VERSION: number = 4; diff --git a/packages/node/src/__legacy__/core/authentication.ts b/packages/node/src/__legacy__/core/authentication.ts index 1ee2d657..7d99ba14 100644 --- a/packages/node/src/__legacy__/core/authentication.ts +++ b/packages/node/src/__legacy__/core/authentication.ts @@ -1,7 +1,7 @@ /** - * Copyright (c) 2022, WSO2 Inc. (http://www.wso2.com) All Rights Reserved. + * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com). * - * WSO2 Inc. licenses this file to you under the Apache License, + * WSO2 LLC. licenses this file to you under the Apache License, * Version 2.0 (the "License"); you may not use this file except * in compliance with the License. * You may obtain a copy of the License at @@ -36,22 +36,25 @@ import {Logger, SessionUtils} from '../utils'; import {NodeCryptoUtils} from '../utils/crypto-utils'; export class AsgardeoNodeCore { - private _auth: AsgardeoAuthClient; - private _cryptoUtils: Crypto; - private _store: Storage; - private _storageManager: StorageManager; + private auth: AsgardeoAuthClient; + + private cryptoUtils: Crypto; + + private store: Storage; + + private storageManager: StorageManager; constructor(config: AuthClientConfig, store?: Storage) { - //Initialize the default memory cache store if an external store is not passed. + // Initialize the default memory cache store if an external store is not passed. if (!store) { - this._store = new MemoryCacheStore(); + this.store = new MemoryCacheStore(); } else { - this._store = store; + this.store = store; } - this._cryptoUtils = new NodeCryptoUtils(); - this._auth = new AsgardeoAuthClient(); - this._auth.initialize(config, this._store, this._cryptoUtils); - this._storageManager = this._auth.getStorageManager(); + this.cryptoUtils = new NodeCryptoUtils(); + this.auth = new AsgardeoAuthClient(); + this.auth.initialize(config, this.store, this.cryptoUtils); + this.storageManager = this.auth.getStorageManager(); Logger.debug('Initialized AsgardeoAuthClient successfully'); } @@ -74,7 +77,7 @@ export class AsgardeoNodeCore { } if (await this.isSignedIn(userId)) { - const sessionData: SessionData = await this._storageManager.getSessionData(userId); + const sessionData: SessionData = await this.storageManager.getSessionData(userId); return Promise.resolve({ accessToken: sessionData.access_token, @@ -87,8 +90,8 @@ export class AsgardeoNodeCore { }); } - //Check if the authorization code or session state is there. - //If so, generate the access token, otherwise generate the auth URL and return with callback function. + // Check if the authorization code or session state is there. + // If so, generate the access token, otherwise generate the auth URL and return with callback function. if (!authorizationCode || !state) { if (!authURLCallback || typeof authURLCallback !== 'function') { return Promise.reject( @@ -99,7 +102,7 @@ export class AsgardeoNodeCore { ), ); } - const authURL = await this.getAuthURL(userId, signInConfig); + const authURL: string = await this.getAuthURL(userId, signInConfig); authURLCallback(authURL); return Promise.resolve({ @@ -118,19 +121,18 @@ export class AsgardeoNodeCore { } public async getAuthURL(userId: string, signInConfig?: Record): Promise { - const authURL = await this._auth.getSignInUrl(signInConfig, userId); + const authURL: string | undefined = await this.auth.getSignInUrl(signInConfig, userId); if (authURL) { return Promise.resolve(authURL.toString()); - } else { - return Promise.reject( - new AsgardeoAuthException( - 'NODE-AUTH_CORE-GAU-NF01', - 'Getting Authorization URL failed.', - 'No authorization URL was returned by the Asgardeo Auth JS SDK.', - ), - ); } + return Promise.reject( + new AsgardeoAuthException( + 'NODE-AUTH_CORE-GAU-NF01', + 'Getting Authorization URL failed.', + 'No authorization URL was returned by the Asgardeo Auth JS SDK.', + ), + ); } public async requestAccessToken( @@ -139,12 +141,12 @@ export class AsgardeoNodeCore { userId: string, state: string, ): Promise { - return this._auth.requestAccessToken(authorizationCode, sessionState, state, userId); + return this.auth.requestAccessToken(authorizationCode, sessionState, state, userId); } public async getIdToken(userId: string): Promise { - const is_logged_in = await this.isSignedIn(userId); - if (!is_logged_in) { + const isLoggedIn: boolean = await this.isSignedIn(userId); + if (!isLoggedIn) { return Promise.reject( new AsgardeoAuthException( 'NODE-AUTH_CORE-GIT-NF01', @@ -153,42 +155,41 @@ export class AsgardeoNodeCore { ), ); } - const idToken = await this._auth.getIdToken(userId); + const idToken: string = await this.auth.getIdToken(userId); if (idToken) { return Promise.resolve(idToken); - } else { - return Promise.reject( - new AsgardeoAuthException( - 'NODE-AUTH_CORE-GIT-NF02', - 'Requesting ID Token Failed', - 'No ID Token was returned by the Asgardeo Auth JS SDK.', - ), - ); } + return Promise.reject( + new AsgardeoAuthException( + 'NODE-AUTH_CORE-GIT-NF02', + 'Requesting ID Token Failed', + 'No ID Token was returned by the Asgardeo Auth JS SDK.', + ), + ); } public async refreshAccessToken(userId?: string): Promise { - return this._auth.refreshAccessToken(userId); + return this.auth.refreshAccessToken(userId); } public async isSignedIn(userId: string): Promise { try { - if (!(await this._auth.isSignedIn(userId))) { + if (!(await this.auth.isSignedIn(userId))) { return Promise.resolve(false); } - if (await SessionUtils.validateSession(await this._storageManager.getSessionData(userId))) { + if (await SessionUtils.validateSession(await this.storageManager.getSessionData(userId))) { return Promise.resolve(true); } - const refreshed_token = await this.refreshAccessToken(userId); + const refreshedToken: TokenResponse = await this.refreshAccessToken(userId); - if (refreshed_token) { + if (refreshedToken) { return Promise.resolve(true); } - this._storageManager.removeSessionData(userId); - this._storageManager.getTemporaryData(userId); + this.storageManager.removeSessionData(userId); + this.storageManager.getTemporaryData(userId); return Promise.resolve(false); } catch (error) { return Promise.reject(error); @@ -196,7 +197,7 @@ export class AsgardeoNodeCore { } public async signOut(userId: string): Promise { - const signOutURL = await this._auth.getSignOutUrl(userId); + const signOutURL: string = await this.auth.getSignOutUrl(userId); if (!signOutURL) { return Promise.reject( @@ -212,35 +213,35 @@ export class AsgardeoNodeCore { } public async getUser(userId: string): Promise { - return this._auth.getUser(userId); + return this.auth.getUser(userId); } public async getConfigData(): Promise> { - return this._storageManager.getConfigData(); + return this.storageManager.getConfigData(); } public async getOpenIDProviderEndpoints(): Promise { - return this._auth.getOpenIDProviderEndpoints() as Promise; + return this.auth.getOpenIDProviderEndpoints() as Promise; } public async getDecodedIdToken(userId?: string, idToken?: string): Promise { - return this._auth.getDecodedIdToken(userId, idToken); + return this.auth.getDecodedIdToken(userId, idToken); } public async getAccessToken(userId?: string): Promise { - return this._auth.getAccessToken(userId); + return this.auth.getAccessToken(userId); } public async exchangeToken(config: TokenExchangeRequestConfig, userId?: string): Promise { - return this._auth.exchangeToken(config, userId); + return this.auth.exchangeToken(config, userId); } public async reInitialize(config: Partial>): Promise { - return this._auth.reInitialize(config); + return this.auth.reInitialize(config); } public async revokeAccessToken(userId?: string): Promise { - return this._auth.revokeAccessToken(userId); + return this.auth.revokeAccessToken(userId); } public static didSignOutFail(afterSignOutUrl: string): boolean { @@ -252,6 +253,6 @@ export class AsgardeoNodeCore { } public getStorageManager(): StorageManager { - return this._storageManager; + return this.storageManager; } } diff --git a/packages/node/src/__legacy__/core/index.ts b/packages/node/src/__legacy__/core/index.ts index 96eda8f7..5ee2f252 100644 --- a/packages/node/src/__legacy__/core/index.ts +++ b/packages/node/src/__legacy__/core/index.ts @@ -1,7 +1,7 @@ /** - * Copyright (c) 2022, WSO2 Inc. (http://www.wso2.com) All Rights Reserved. + * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com). * - * WSO2 Inc. licenses this file to you under the Apache License, + * WSO2 LLC. licenses this file to you under the Apache License, * Version 2.0 (the "License"); you may not use this file except * in compliance with the License. * You may obtain a copy of the License at @@ -16,4 +16,4 @@ * under the License. */ -export * from "./authentication"; +export * from './authentication'; diff --git a/packages/node/src/__legacy__/models/index.ts b/packages/node/src/__legacy__/models/index.ts index bffb144d..8dc112a6 100644 --- a/packages/node/src/__legacy__/models/index.ts +++ b/packages/node/src/__legacy__/models/index.ts @@ -1,7 +1,7 @@ /** - * Copyright (c) 2022, WSO2 Inc. (http://www.wso2.com) All Rights Reserved. + * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com). * - * WSO2 Inc. licenses this file to you under the Apache License, + * WSO2 LLC. licenses this file to you under the Apache License, * Version 2.0 (the "License"); you may not use this file except * in compliance with the License. * You may obtain a copy of the License at @@ -16,5 +16,5 @@ * under the License. */ -export * from "./url-callback"; -export * from "./session-data"; +export * from './url-callback'; +export * from './session-data'; diff --git a/packages/node/src/__legacy__/models/session-data.ts b/packages/node/src/__legacy__/models/session-data.ts index 3ed2f3c1..62a08117 100644 --- a/packages/node/src/__legacy__/models/session-data.ts +++ b/packages/node/src/__legacy__/models/session-data.ts @@ -1,7 +1,7 @@ /** - * Copyright (c) 2022, WSO2 Inc. (http://www.wso2.com) All Rights Reserved. + * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com). * - * WSO2 Inc. licenses this file to you under the Apache License, + * WSO2 LLC. licenses this file to you under the Apache License, * Version 2.0 (the "License"); you may not use this file except * in compliance with the License. * You may obtain a copy of the License at diff --git a/packages/node/src/__legacy__/models/url-callback.ts b/packages/node/src/__legacy__/models/url-callback.ts index 43383a28..a5a7c7ed 100644 --- a/packages/node/src/__legacy__/models/url-callback.ts +++ b/packages/node/src/__legacy__/models/url-callback.ts @@ -1,20 +1,21 @@ /** -* Copyright (c) 2022, WSO2 Inc. (http://www.wso2.com) All Rights Reserved. -* -* WSO2 Inc. licenses this file to you under the Apache License, -* Version 2.0 (the "License"); you may not use this file except -* in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, -* software distributed under the License is distributed on an -* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -* KIND, either express or implied. See the License for the -* specific language governing permissions and limitations -* under the License. -*/ + * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com). + * + * WSO2 LLC. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + export interface AuthURLCallback { - (url: string): void; + (url: string): void; } diff --git a/packages/node/src/__legacy__/stores/index.ts b/packages/node/src/__legacy__/stores/index.ts index c3c41913..110552c2 100644 --- a/packages/node/src/__legacy__/stores/index.ts +++ b/packages/node/src/__legacy__/stores/index.ts @@ -1,19 +1,19 @@ /** -* Copyright (c) 2022, WSO2 Inc. (http://www.wso2.com) All Rights Reserved. -* -* WSO2 Inc. licenses this file to you under the Apache License, -* Version 2.0 (the "License"); you may not use this file except -* in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, -* software distributed under the License is distributed on an -* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -* KIND, either express or implied. See the License for the -* specific language governing permissions and limitations -* under the License. -*/ + * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com). + * + * WSO2 LLC. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ -export * from "./memory-cache-store"; +export * from './memory-cache-store'; diff --git a/packages/node/src/__legacy__/stores/memory-cache-store.ts b/packages/node/src/__legacy__/stores/memory-cache-store.ts index 295653a7..44c3667c 100644 --- a/packages/node/src/__legacy__/stores/memory-cache-store.ts +++ b/packages/node/src/__legacy__/stores/memory-cache-store.ts @@ -1,7 +1,7 @@ /** - * Copyright (c) 2022, WSO2 Inc. (http://www.wso2.com) All Rights Reserved. + * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com). * - * WSO2 Inc. licenses this file to you under the Apache License, + * WSO2 LLC. licenses this file to you under the Apache License, * Version 2.0 (the "License"); you may not use this file except * in compliance with the License. * You may obtain a copy of the License at @@ -20,14 +20,17 @@ import {Storage} from '@asgardeo/javascript'; import cache from 'memory-cache'; export class MemoryCacheStore implements Storage { + // eslint-disable-next-line class-methods-use-this public async setData(key: string, value: string): Promise { cache.put(key, value); } + // eslint-disable-next-line class-methods-use-this public async getData(key: string): Promise { return cache.get(key) ?? '{}'; } + // eslint-disable-next-line class-methods-use-this public async removeData(key: string): Promise { cache.del(key); } diff --git a/packages/node/src/__legacy__/utils/crypto-utils.ts b/packages/node/src/__legacy__/utils/crypto-utils.ts index 7a7fccfb..2fa5a924 100644 --- a/packages/node/src/__legacy__/utils/crypto-utils.ts +++ b/packages/node/src/__legacy__/utils/crypto-utils.ts @@ -1,7 +1,7 @@ /** - * Copyright (c) 2022, WSO2 Inc. (http://www.wso2.com) All Rights Reserved. + * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com). * - * WSO2 Inc. licenses this file to you under the Apache License, + * WSO2 LLC. licenses this file to you under the Apache License, * Version 2.0 (the "License"); you may not use this file except * in compliance with the License. * You may obtain a copy of the License at @@ -31,22 +31,27 @@ export class NodeCryptoUtils implements Crypto { * * @returns {string} base 64 url encoded value. */ + // eslint-disable-next-line class-methods-use-this public base64URLEncode(value: Buffer | string): string { return base64url.encode(value).replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, ''); } + // eslint-disable-next-line class-methods-use-this public base64URLDecode(value: string): string { return base64url.decode(value).toString(); } + // eslint-disable-next-line class-methods-use-this public hashSha256(data: string): string | Buffer { return Buffer.from(sha256(new TextEncoder().encode(data))); } + // eslint-disable-next-line class-methods-use-this public generateRandomBytes(length: number): string | Buffer { return randombytes(length); } + // eslint-disable-next-line class-methods-use-this public async verifyJwt( idToken: string, jwk: Partial, @@ -56,17 +61,15 @@ export class NodeCryptoUtils implements Crypto { subject: string, clockTolerance?: number, ): Promise { - const key = await jose.importJWK(jwk); + const key: jose.CryptoKey | Uint8Array = await jose.importJWK(jwk); return jose .jwtVerify(idToken, key, { - algorithms: algorithms, + algorithms, audience: clientId, - clockTolerance: clockTolerance, - issuer: issuer, - subject: subject, + clockTolerance, + issuer, + subject, }) - .then(() => { - return Promise.resolve(true); - }); + .then(() => Promise.resolve(true)); } } diff --git a/packages/node/src/__legacy__/utils/index.ts b/packages/node/src/__legacy__/utils/index.ts index 5ef455db..8445b709 100644 --- a/packages/node/src/__legacy__/utils/index.ts +++ b/packages/node/src/__legacy__/utils/index.ts @@ -1,20 +1,21 @@ /** -* Copyright (c) 2022, WSO2 Inc. (http://www.wso2.com) All Rights Reserved. -* -* WSO2 Inc. licenses this file to you under the Apache License, -* Version 2.0 (the "License"); you may not use this file except -* in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, -* software distributed under the License is distributed on an -* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -* KIND, either express or implied. See the License for the -* specific language governing permissions and limitations -* under the License. -*/ + * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com). + * + * WSO2 LLC. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ -export * from "./session-utils"; -export * from "./logger-utils"; +// eslint-disable-next-line import/no-cycle +export * from './session-utils'; +export * from './logger-utils'; diff --git a/packages/node/src/__legacy__/utils/logger-utils.ts b/packages/node/src/__legacy__/utils/logger-utils.ts index 0225d53d..91a946bc 100644 --- a/packages/node/src/__legacy__/utils/logger-utils.ts +++ b/packages/node/src/__legacy__/utils/logger-utils.ts @@ -1,88 +1,88 @@ /** -* Copyright (c) 2022, WSO2 Inc. (http://www.wso2.com) All Rights Reserved. -* -* WSO2 Inc. licenses this file to you under the Apache License, -* Version 2.0 (the "License"); you may not use this file except -* in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, -* software distributed under the License is distributed on an -* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -* KIND, either express or implied. See the License for the -* specific language governing permissions and limitations -* under the License. -*/ + * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com). + * + * WSO2 LLC. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ /* eslint-disable no-console */ -import { LOGGER_CONFIG } from "../constants"; +import {LOGGER_CONFIG} from '../constants'; enum LogLevel { - DEBUG, - INFO, - WARN, - ERROR, - OFF + DEBUG, + INFO, + WARN, + ERROR, + OFF, } export class Logger { - static LOG_LEVEL = process.env["LOG_LEVEL"] ?? LogLevel[LogLevel.OFF]; + static LOG_LEVEL: string = process.env['LOG_LEVEL'] ?? LogLevel[LogLevel.OFF]; - // eslint-disable-next-line @typescript-eslint/no-empty-function - private constructor() { } + // eslint-disable-next-line @typescript-eslint/no-empty-function + private constructor() {} - public static debug(message: string): void { - if (LogLevel[this.LOG_LEVEL] <= LogLevel.DEBUG) - console.log( - LOGGER_CONFIG.bgGreen, - LOGGER_CONFIG.fgBlack, - "DEBUG", - LOGGER_CONFIG.reset, - LOGGER_CONFIG.fgGreen, - message, - LOGGER_CONFIG.reset - ); - } + public static debug(message: string): void { + if (LogLevel[this.LOG_LEVEL] <= LogLevel.DEBUG) + console.log( + LOGGER_CONFIG.bgGreen, + LOGGER_CONFIG.fgBlack, + 'DEBUG', + LOGGER_CONFIG.reset, + LOGGER_CONFIG.fgGreen, + message, + LOGGER_CONFIG.reset, + ); + } - public static info(message: string): void { - if (LogLevel[this.LOG_LEVEL] <= LogLevel.INFO) - console.log( - LOGGER_CONFIG.bgWhite, - LOGGER_CONFIG.fgBlack, - "INFO", - LOGGER_CONFIG.reset, - LOGGER_CONFIG.fgWhite, - message, - LOGGER_CONFIG.reset - ); - } + public static info(message: string): void { + if (LogLevel[this.LOG_LEVEL] <= LogLevel.INFO) + console.log( + LOGGER_CONFIG.bgWhite, + LOGGER_CONFIG.fgBlack, + 'INFO', + LOGGER_CONFIG.reset, + LOGGER_CONFIG.fgWhite, + message, + LOGGER_CONFIG.reset, + ); + } - public static warn(message: string): void { - if (LogLevel[this.LOG_LEVEL] <= LogLevel.WARN) - console.log( - LOGGER_CONFIG.bgYellow, - LOGGER_CONFIG.fgBlack, - "WARNING", - LOGGER_CONFIG.reset, - LOGGER_CONFIG.fgYellow, - message, - LOGGER_CONFIG.reset - ); - } + public static warn(message: string): void { + if (LogLevel[this.LOG_LEVEL] <= LogLevel.WARN) + console.log( + LOGGER_CONFIG.bgYellow, + LOGGER_CONFIG.fgBlack, + 'WARNING', + LOGGER_CONFIG.reset, + LOGGER_CONFIG.fgYellow, + message, + LOGGER_CONFIG.reset, + ); + } - public static error(message: string): void { - if (LogLevel[this.LOG_LEVEL] <= LogLevel.ERROR) - console.log( - LOGGER_CONFIG.bgRed, - LOGGER_CONFIG.fgBlack, - "ERROR", - LOGGER_CONFIG.reset, - LOGGER_CONFIG.fgRed, - message, - LOGGER_CONFIG.reset - ); - } + public static error(message: string): void { + if (LogLevel[this.LOG_LEVEL] <= LogLevel.ERROR) + console.log( + LOGGER_CONFIG.bgRed, + LOGGER_CONFIG.fgBlack, + 'ERROR', + LOGGER_CONFIG.reset, + LOGGER_CONFIG.fgRed, + message, + LOGGER_CONFIG.reset, + ); + } } diff --git a/packages/node/src/__legacy__/utils/session-utils.ts b/packages/node/src/__legacy__/utils/session-utils.ts index 16dae8fe..72eae793 100644 --- a/packages/node/src/__legacy__/utils/session-utils.ts +++ b/packages/node/src/__legacy__/utils/session-utils.ts @@ -1,56 +1,52 @@ /** -* Copyright (c) 2022, WSO2 Inc. (http://www.wso2.com) All Rights Reserved. -* -* WSO2 Inc. licenses this file to you under the Apache License, -* Version 2.0 (the "License"); you may not use this file except -* in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, -* software distributed under the License is distributed on an -* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -* KIND, either express or implied. See the License for the -* specific language governing permissions and limitations -* under the License. -*/ - -import { validate as uuidValidate, version as uuidVersion, v4 as uuidv4 } from "uuid"; -import { Logger } from "."; -import { SessionData } from "@asgardeo/javascript"; -import { NodeSessionData } from "../models"; -import { UUID_VERSION } from "../constants"; + * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com). + * + * WSO2 LLC. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import {SessionData} from '@asgardeo/javascript'; +import {validate as uuidValidate, version as uuidVersion, v4 as uuidv4} from 'uuid'; +// eslint-disable-next-line import/no-cycle +import {Logger} from '.'; +import {UUID_VERSION} from '../constants'; export class SessionUtils { + // eslint-disable-next-line @typescript-eslint/no-empty-function + private constructor() {} - // eslint-disable-next-line @typescript-eslint/no-empty-function - private constructor() { } - - public static createUUID(): string { - const generated_uuid = uuidv4(); - return generated_uuid; - } + public static createUUID(): string { + const generatedUuid: string = uuidv4(); + return generatedUuid; + } - public static validateUUID(uuid: string): Promise { - if (uuidValidate(uuid) && uuidVersion(uuid) === UUID_VERSION) { - return Promise.resolve(true) - } else { - return Promise.resolve(false); - } + public static validateUUID(uuid: string): Promise { + if (uuidValidate(uuid) && uuidVersion(uuid) === UUID_VERSION) { + return Promise.resolve(true); } - - public static validateSession(sessionData: SessionData): Promise { - const currentTime = Date.now(); - const expiryTimeStamp : number = sessionData.created_at + parseInt(sessionData.expires_in) * 60 * 1000; - //If the expiry time is greater than the current time, then the cookie is still valid - if (currentTime < expiryTimeStamp) { - return Promise.resolve(true); - } else { - Logger.warn("Expired Session"); - - return Promise.resolve(false); - } + return Promise.resolve(false); + } + + public static validateSession(sessionData: SessionData): Promise { + const currentTime: number = Date.now(); + const expiryTimeStamp: number = sessionData.created_at + parseInt(sessionData.expires_in, 10) * 60 * 1000; + // If the expiry time is greater than the current time, then the cookie is still valid + if (currentTime < expiryTimeStamp) { + return Promise.resolve(true); } + Logger.warn('Expired Session'); + return Promise.resolve(false); + } } diff --git a/packages/node/src/index.ts b/packages/node/src/index.ts index 8fb53beb..f4ced8e8 100644 --- a/packages/node/src/index.ts +++ b/packages/node/src/index.ts @@ -1,7 +1,7 @@ /** - * Copyright (c) 2022, WSO2 Inc. (http://www.wso2.com) All Rights Reserved. + * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com). * - * WSO2 Inc. licenses this file to you under the Apache License, + * WSO2 LLC. licenses this file to you under the Apache License, * Version 2.0 (the "License"); you may not use this file except * in compliance with the License. * You may obtain a copy of the License at @@ -16,14 +16,14 @@ * under the License. */ -//Add Ponyfills for Fetch API -import fetch, { Headers, Request, Response } from "cross-fetch"; +// Add Ponyfills for Fetch API +import fetch, {Headers, Request, Response} from 'cross-fetch'; if (!globalThis.fetch) { - globalThis.fetch = fetch; - globalThis.Headers = Headers; - globalThis.Request = Request; - globalThis.Response = Response; + globalThis.fetch = fetch; + globalThis.Headers = Headers; + globalThis.Request = Request; + globalThis.Response = Response; } export {AsgardeoNodeClient as LegacyAsgardeoNodeClient} from './__legacy__/client'; diff --git a/packages/node/vitest.config.ts b/packages/node/vitest.config.ts index 29a917d1..31c7e556 100644 --- a/packages/node/vitest.config.ts +++ b/packages/node/vitest.config.ts @@ -16,6 +16,7 @@ * under the License. */ +// eslint-disable-next-line import/no-extraneous-dependencies import {defineConfig} from 'vitest/config'; export default defineConfig({ diff --git a/packages/react-router/.eslintignore b/packages/react-router/.eslintignore new file mode 100644 index 00000000..99b0b518 --- /dev/null +++ b/packages/react-router/.eslintignore @@ -0,0 +1,4 @@ +/dist +/build +/node_modules +/coverage diff --git a/packages/react-router/.eslintrc.cjs b/packages/react-router/.eslintrc.cjs new file mode 100644 index 00000000..48cce7f9 --- /dev/null +++ b/packages/react-router/.eslintrc.cjs @@ -0,0 +1,53 @@ +/** + * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com). + * + * WSO2 LLC. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +const path = require('path'); + +module.exports = { + env: { + es6: true, + node: true, + }, + extends: [ + 'plugin:@wso2/typescript', + 'plugin:@wso2/strict', + 'plugin:@wso2/internal', + 'plugin:@wso2/jest', + 'plugin:@wso2/prettier', + ], + overrides: [ + { + files: ['vitest.config.ts', 'esbuild.config.mjs'], + rules: { + 'import/no-extraneous-dependencies': ['error', {devDependencies: true}], + }, + }, + { + files: ['**/*.ts', '**/*.tsx'], + rules: { + 'import/extensions': ['error', 'never', {json: 'always'}], + 'import/no-extraneous-dependencies': ['error', {bundledDependencies: ['@asgardeo/react']}], + }, + }, + ], + parserOptions: { + ecmaVersion: 2018, + project: [path.resolve(__dirname, 'tsconfig.eslint.json')], + }, + plugins: ['@wso2'], +}; diff --git a/packages/react-router/esbuild.config.mjs b/packages/react-router/esbuild.config.mjs index 2705a6c4..89d6ba54 100644 --- a/packages/react-router/esbuild.config.mjs +++ b/packages/react-router/esbuild.config.mjs @@ -35,8 +35,8 @@ const commonOptions = { plugins: [ preserveDirectivesPlugin({ directives: ['use client', 'use strict'], - include: /\.(js|ts|jsx|tsx)$/, exclude: /node_modules/, + include: /\.(js|ts|jsx|tsx)$/, }), ], target: ['es2020'], diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 8d04c12e..1c2abc1c 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -53,7 +53,7 @@ "eslint": "8.57.0", "prettier": "2.6.2", "react": "19.1.4", - "react-router": "7.6.3", + "react-router": "7.12.0", "rimraf": "6.1.0", "typescript": "5.7.2", "vitest": "3.1.3" diff --git a/packages/react-router/src/__tests__/index.test.ts b/packages/react-router/src/__tests__/index.test.ts index 5f0247b7..610bb16b 100644 --- a/packages/react-router/src/__tests__/index.test.ts +++ b/packages/react-router/src/__tests__/index.test.ts @@ -23,19 +23,4 @@ describe('@asgardeo/react-router', () => { const {ProtectedRoute} = await import('../index'); expect(ProtectedRoute).toBeDefined(); }); - - it('should export withAuthentication', async () => { - const {withAuthentication} = await import('../index'); - expect(withAuthentication).toBeDefined(); - }); - - it('should export useAuthGuard', async () => { - const {useAuthGuard} = await import('../index'); - expect(useAuthGuard).toBeDefined(); - }); - - it('should export useReturnUrl', async () => { - const {useReturnUrl} = await import('../index'); - expect(useReturnUrl).toBeDefined(); - }); }); diff --git a/packages/react-router/src/components/ProtectedRoute.tsx b/packages/react-router/src/components/ProtectedRoute.tsx index 3e70ca7d..4b6db03b 100644 --- a/packages/react-router/src/components/ProtectedRoute.tsx +++ b/packages/react-router/src/components/ProtectedRoute.tsx @@ -1,8 +1,5 @@ /** - * Copyright (import React, {FC, ReactElement, ReactNode} from 'react'; -import {Navigate} from 'react-router'; -import {useAsgardeo} from '@asgardeo/react'; -import {AsgardeoRuntimeError} from '@asgardeo/browser';2025, WSO2 LLC. (https://www.wso2.com). + * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com). * * WSO2 LLC. licenses this file to you under the Apache License, * Version 2.0 (the "License"); you may not use this file except @@ -19,9 +16,9 @@ import {AsgardeoRuntimeError} from '@asgardeo/browser';2025, WSO2 LLC. (https:// * under the License. */ +import {AsgardeoRuntimeError, navigate, useAsgardeo} from '@asgardeo/react'; import {FC, ReactElement, ReactNode} from 'react'; import {Navigate} from 'react-router'; -import {useAsgardeo, AsgardeoRuntimeError, navigate} from '@asgardeo/react'; /** * Props for the ProtectedRoute component. @@ -36,11 +33,6 @@ export interface ProtectedRouteProps { * If provided, this takes precedence over redirectTo. */ fallback?: ReactElement; - /** - * URL to redirect to when the user is not authenticated. - * Required unless a fallback element is provided. - */ - redirectTo?: string; /** * Custom loading element to render while authentication status is being determined. */ @@ -55,6 +47,11 @@ export interface ProtectedRouteProps { * @param signInOptions - Merged sign-in options (context + component props) */ onSignIn?: (defaultSignIn: (options?: Record) => void, signInOptions?: Record) => void; + /** + * URL to redirect to when the user is not authenticated. + * Required unless a fallback element is provided. + */ + redirectTo?: string; /** * Additional parameters to pass to the authorize request. * These will be merged with the default signInOptions from the Asgardeo context. @@ -150,7 +147,7 @@ const ProtectedRoute: FC = ({ loader = null, onSignIn, signInOptions: overriddenSignInOptions = {}, -}) => { +}: ProtectedRouteProps) => { const {isSignedIn, isLoading, signIn, signInOptions, signInUrl} = useAsgardeo(); // Always wait for loading to finish before making authentication decisions @@ -173,23 +170,21 @@ const ProtectedRoute: FC = ({ if (!isSignedIn) { if (signInUrl) { navigate(signInUrl); + } else if (onSignIn) { + onSignIn(signIn, overriddenSignInOptions); } else { - if (onSignIn) { - onSignIn(signIn, overriddenSignInOptions); - } else { - (async () => { - try { - await signIn(overriddenSignInOptions ?? signInOptions); - } catch (error) { - throw new AsgardeoRuntimeError( - 'Sign-in failed in ProtectedRoute.', - 'ProtectedRoute-SignInError-001', - 'react-router', - `An error occurred during sign-in: ${(error as Error).message}`, - ); - } - })(); - } + (async (): Promise => { + try { + await signIn(overriddenSignInOptions ?? signInOptions); + } catch (error) { + throw new AsgardeoRuntimeError( + 'Sign-in failed in ProtectedRoute.', + 'ProtectedRoute-SignInError-001', + 'react-router', + `An error occurred during sign-in: ${(error as Error).message}`, + ); + } + })(); } } diff --git a/packages/react/package.json b/packages/react/package.json index f23b356d..05835294 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -42,20 +42,19 @@ }, "devDependencies": { "@testing-library/dom": "10.4.0", + "@testing-library/react": "16.3.0", "@types/node": "22.15.3", "@types/react": "19.1.5", - "@vitest/browser": "3.1.3", "@wso2/eslint-plugin": "catalog:", "@wso2/prettier-config": "catalog:", "esbuild-plugin-preserve-directives": "0.0.11", "eslint": "8.57.0", - "playwright": "1.55.1", + "jsdom": "26.1.0", "prettier": "2.6.2", "react": "19.1.4", "rimraf": "6.1.0", "typescript": "5.7.2", - "vitest": "3.1.3", - "vitest-browser-react": "0.1.1" + "vitest": "3.1.3" }, "peerDependencies": { "@types/react": ">=19.1.5", diff --git a/packages/react/src/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.test.tsx b/packages/react/src/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.test.tsx index e9beff5d..ed56cdd5 100644 --- a/packages/react/src/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.test.tsx +++ b/packages/react/src/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.test.tsx @@ -16,25 +16,85 @@ * under the License. */ -import {render, screen, waitFor} from '@testing-library/react'; +import {cleanup, render, screen, waitFor} from '@testing-library/react'; import {describe, it, expect, vi, beforeEach, afterEach} from 'vitest'; import {BaseOrganizationSwitcher, Organization} from './BaseOrganizationSwitcher'; -import React from 'react'; + +// Mock theme data +const mockColors = { + text: {primary: '#000', secondary: '#666'}, + background: {surface: '#fff', disabled: '#eee', body: {main: '#fff'}}, + border: '#ccc', + action: { + hover: '#f0f0f0', + active: '#e0e0e0', + selected: '#d0d0d0', + disabled: '#bbb', + disabledBackground: '#f5f5f5', + focus: '#0066cc', + hoverOpacity: 0.08, + selectedOpacity: 0.12, + disabledOpacity: 0.38, + focusOpacity: 0.12, + activatedOpacity: 0.12, + }, + primary: {main: '#0066cc', contrastText: '#fff'}, + secondary: {main: '#666', contrastText: '#fff'}, + error: {main: '#d32f2f', contrastText: '#fff'}, + success: {main: '#2e7d32', contrastText: '#fff'}, + warning: {main: '#ed6c02', contrastText: '#fff'}, + info: {main: '#0288d1', contrastText: '#fff'}, +}; + +const mockTypography = { + fontFamily: 'Arial, sans-serif', + fontSizes: {xs: '0.75rem', sm: '0.875rem', md: '1rem', lg: '1.125rem', xl: '1.25rem', '2xl': '1.5rem', '3xl': '1.875rem'}, + fontWeights: {normal: 400, medium: 500, semibold: 600, bold: 700}, + lineHeights: {tight: 1.25, normal: 1.5, relaxed: 1.75}, +}; + +const mockTypographyVars = { + fontFamily: 'Arial, sans-serif', + fontSizes: {xs: '0.75rem', sm: '0.875rem', md: '1rem', lg: '1.125rem', xl: '1.25rem', '2xl': '1.5rem', '3xl': '1.875rem'}, + fontWeights: {normal: '400', medium: '500', semibold: '600', bold: '700'}, + lineHeights: {tight: '1.25', normal: '1.5', relaxed: '1.75'}, +}; + +const mockColorsVars = { + ...mockColors, + action: { + hover: '#f0f0f0', + active: '#e0e0e0', + selected: '#d0d0d0', + disabled: '#bbb', + disabledBackground: '#f5f5f5', + focus: '#0066cc', + hoverOpacity: '0.08', + selectedOpacity: '0.12', + disabledOpacity: '0.38', + focusOpacity: '0.12', + activatedOpacity: '0.12', + }, +}; // Mock the dependencies vi.mock('../../../contexts/Theme/useTheme', () => ({ default: () => ({ theme: { + // ThemeConfig properties (direct access) + colors: mockColors, + typography: mockTypography, + spacing: {unit: 8}, + borderRadius: {small: '2px', medium: '4px', large: '8px'}, + shadows: {small: '0 1px 2px rgba(0,0,0,0.1)', medium: '0 2px 4px rgba(0,0,0,0.1)', large: '0 4px 8px rgba(0,0,0,0.1)'}, + cssVariables: {}, + // ThemeVars (CSS variable references) vars: { - colors: { - text: {primary: '#000', secondary: '#666'}, - background: {surface: '#fff'}, - border: '#ccc', - action: {hover: '#f0f0f0'}, - }, + colors: mockColorsVars, spacing: {unit: '8px'}, - borderRadius: {medium: '4px', large: '8px'}, - shadows: {medium: '0 2px 4px rgba(0,0,0,0.1)'}, + borderRadius: {small: '2px', medium: '4px', large: '8px'}, + shadows: {small: '0 1px 2px rgba(0,0,0,0.1)', medium: '0 2px 4px rgba(0,0,0,0.1)', large: '0 4px 8px rgba(0,0,0,0.1)'}, + typography: mockTypographyVars, }, }, colorScheme: 'light', @@ -74,6 +134,7 @@ describe('BaseOrganizationSwitcher RTL Support', () => { }); afterEach(() => { + cleanup(); document.documentElement.removeAttribute('dir'); }); @@ -89,7 +150,7 @@ describe('BaseOrganizationSwitcher RTL Support', () => { />, ); - expect(screen.getByText('Organization 1')).toBeInTheDocument(); + expect(screen.getByText('Organization 1')).toBeDefined(); }); it('should render correctly in RTL mode', () => { @@ -104,7 +165,7 @@ describe('BaseOrganizationSwitcher RTL Support', () => { />, ); - expect(screen.getByText('Organization 1')).toBeInTheDocument(); + expect(screen.getByText('Organization 1')).toBeDefined(); }); it('should flip chevron icon in RTL mode', async () => { @@ -123,9 +184,9 @@ describe('BaseOrganizationSwitcher RTL Support', () => { const chevronIcon = container.querySelector('svg'); expect(chevronIcon).toBeTruthy(); if (chevronIcon) { - const style = window.getComputedStyle(chevronIcon); - // In RTL mode, the transform should be scaleX(-1) - expect(chevronIcon.style.transform).toContain('scaleX(-1)'); + // The transform is on the parent span, not the SVG itself + const parentSpan = chevronIcon.parentElement; + expect(parentSpan?.style.transform).toContain('scaleX(-1)'); } }); }); @@ -146,8 +207,10 @@ describe('BaseOrganizationSwitcher RTL Support', () => { const chevronIcon = container.querySelector('svg'); expect(chevronIcon).toBeTruthy(); if (chevronIcon) { - // In LTR mode, the transform should be none - expect(chevronIcon.style.transform).toBe('none'); + // The transform is on the parent span, not the SVG itself + // In LTR mode, the transform should be 'none' + const parentSpan = chevronIcon.parentElement; + expect(parentSpan?.style.transform).toBe('none'); } }); }); @@ -164,9 +227,10 @@ describe('BaseOrganizationSwitcher RTL Support', () => { />, ); - // Initially LTR + // Initially LTR - style.transform is 'none' on parent span let chevronIcon = container.querySelector('svg'); - expect(chevronIcon?.style.transform).toBe('none'); + let parentSpan = chevronIcon?.parentElement; + expect(parentSpan?.style.transform).toBe('none'); // Change to RTL document.documentElement.setAttribute('dir', 'rtl'); @@ -182,7 +246,8 @@ describe('BaseOrganizationSwitcher RTL Support', () => { await waitFor(() => { chevronIcon = container.querySelector('svg'); - expect(chevronIcon?.style.transform).toContain('scaleX(-1)'); + parentSpan = chevronIcon?.parentElement; + expect(parentSpan?.style.transform).toContain('scaleX(-1)'); }); }); }); diff --git a/packages/react/vitest.config.ts b/packages/react/vitest.config.ts index bfcf53bd..dad7e145 100644 --- a/packages/react/vitest.config.ts +++ b/packages/react/vitest.config.ts @@ -20,11 +20,6 @@ import {defineConfig} from 'vitest/config'; export default defineConfig({ test: { - browser: { - enabled: true, - headless: true, - instances: [{browser: 'chromium'}], - provider: 'playwright', - }, + environment: 'jsdom', }, }); diff --git a/packages/tanstack-router/.eslintrc.cjs b/packages/tanstack-router/.eslintrc.cjs index 41e9e77a..48cce7f9 100644 --- a/packages/tanstack-router/.eslintrc.cjs +++ b/packages/tanstack-router/.eslintrc.cjs @@ -41,6 +41,7 @@ module.exports = { files: ['**/*.ts', '**/*.tsx'], rules: { 'import/extensions': ['error', 'never', {json: 'always'}], + 'import/no-extraneous-dependencies': ['error', {bundledDependencies: ['@asgardeo/react']}], }, }, ], diff --git a/packages/tanstack-router/package.json b/packages/tanstack-router/package.json index c118c8da..d704ae0c 100644 --- a/packages/tanstack-router/package.json +++ b/packages/tanstack-router/package.json @@ -44,6 +44,7 @@ }, "devDependencies": { "@asgardeo/react": "workspace:*", + "@testing-library/react": "16.2.0", "@types/node": "22.15.3", "@types/react": "19.1.4", "@wso2/eslint-plugin": "catalog:", @@ -53,7 +54,7 @@ "eslint": "8.57.0", "prettier": "2.6.2", "react": "19.1.4", - "@tanstack/react-router": "1.132.6", + "@tanstack/react-router": "1.154.7", "rimraf": "6.1.0", "typescript": "5.7.2", "vitest": "3.1.3" diff --git a/packages/tanstack-router/src/components/__tests__/ProtectedRoute.test.tsx b/packages/tanstack-router/src/components/__tests__/ProtectedRoute.test.tsx index 04d1844d..1e287142 100644 --- a/packages/tanstack-router/src/components/__tests__/ProtectedRoute.test.tsx +++ b/packages/tanstack-router/src/components/__tests__/ProtectedRoute.test.tsx @@ -17,8 +17,8 @@ */ import {useAsgardeo} from '@asgardeo/react'; -import {render, screen} from '@testing-library/react'; -import {describe, it, expect, vi, beforeEach} from 'vitest'; +import {cleanup, render, screen} from '@testing-library/react'; +import {describe, it, expect, vi, beforeEach, afterEach} from 'vitest'; import ProtectedRoute from '../ProtectedRoute'; vi.mock('@asgardeo/react', () => ({ @@ -49,6 +49,10 @@ describe('ProtectedRoute', () => { vi.clearAllMocks(); }); + afterEach(() => { + cleanup(); + }); + it('should render loader when isLoading is true', () => { vi.mocked(useAsgardeo).mockReturnValue({ isLoading: true, diff --git a/packages/vue/package.json b/packages/vue/package.json index 98d7dbb1..1a4a29d1 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -40,9 +40,10 @@ "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts", "lint:fix": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix", "typecheck": "vue-tsc --noEmit", - "test": "vitest --config src/vitest.config.ts --environment=jsdom --run --passWithNoTests" + "test": "vitest --config src/vitest.config.ts --environment=jsdom --passWithNoTests" }, "devDependencies": { + "vite": "7.1.12", "@rollup/plugin-commonjs": "25.0.7", "@rollup/plugin-image": "3.0.3", "@rollup/plugin-node-resolve": "15.2.3", @@ -58,7 +59,7 @@ "@wso2/stylelint-config": "catalog:", "eslint": "8.57.0", "prettier": "3.2.5", - "rollup": "4.17.2", + "rollup": "4.32.0", "rollup-plugin-dts": "6.1.0", "rollup-plugin-polyfill-node": "0.13.0", "rollup-plugin-styles": "4.0.0", @@ -72,7 +73,7 @@ "dependencies": { "@asgardeo/auth-spa": "3.3.2", "@asgardeo/js": "0.1.3", - "@vitejs/plugin-vue": "5.0.0", + "@vitejs/plugin-vue": "5.2.4", "base64url": "3.0.1", "buffer": "6.0.3", "clsx": "2.1.1", diff --git a/packages/vue/src/auth-api.ts b/packages/vue/src/auth-api.ts index 345bb1ac..cd57c4fc 100644 --- a/packages/vue/src/auth-api.ts +++ b/packages/vue/src/auth-api.ts @@ -91,8 +91,8 @@ class AuthAPI { allowedScopes: response.allowedScopes, displayName: response.displayName, email: response.email, - isSignedIn: true, isLoading: false, + isSignedIn: true, isSigningOut: false, sub: response.sub, username: response.username, @@ -143,6 +143,15 @@ class AuthAPI { return this._client.getBasicUserInfo(); } + /** + * This method returns a Promise that resolves with the basic user information obtained from the ID token. + * + * @return {Promise} a promise that resolves with the user information. + */ + public async getUser(): Promise { + return this._client.getBasicUserInfo(); + } + /** * This method sends an API request to a protected endpoint. * The access token is automatically attached to the header of the request. @@ -195,8 +204,8 @@ class AuthAPI { Object.assign(this._authState, { ...this._authState, ...(response as BasicUserInfo), - isSignedIn: true, isLoading: false, + isSignedIn: true, }); } if (callback) { @@ -401,8 +410,8 @@ class AuthAPI { allowedScopes: basicUserInfo.allowedScopes, displayName: basicUserInfo.displayName, email: basicUserInfo.email, - isSignedIn: true, isLoading: false, + isSignedIn: true, sub: basicUserInfo.sub, username: basicUserInfo.username, }); @@ -417,8 +426,8 @@ AuthAPI.DEFAULT_STATE = { allowedScopes: '', displayName: '', email: '', - isSignedIn: false, isLoading: true, + isSignedIn: false, sub: '', username: '', }; diff --git a/packages/vue/src/plugins/AsgardeoPlugin.ts b/packages/vue/src/plugins/AsgardeoPlugin.ts index cca6c4dd..93b86cd3 100644 --- a/packages/vue/src/plugins/AsgardeoPlugin.ts +++ b/packages/vue/src/plugins/AsgardeoPlugin.ts @@ -82,7 +82,7 @@ export const asgardeoPlugin: Plugin = { withStateSync(async () => { const isAuthenticatedState: boolean = await AuthClient.isSignedIn(); if (!isAuthenticatedState) { - AuthClient.updateState({...state, isSignedIn: false, isLoading: false}); + AuthClient.updateState({...state, isLoading: false, isSignedIn: false}); return; } const response: BasicUserInfo = await AuthClient.getUser(); @@ -91,12 +91,12 @@ export const asgardeoPlugin: Plugin = { allowedScopes: response.allowedScopes, displayName: response.displayName, email: response.email, - isSignedIn: true, isLoading: false, + isSignedIn: true, sub: response.sub, username: response.username, } - : {...state, isSignedIn: isAuthenticatedState, isLoading: false}; + : {...state, isLoading: false, isSignedIn: isAuthenticatedState}; AuthClient.updateState(stateToUpdate); }); @@ -156,12 +156,25 @@ export const asgardeoPlugin: Plugin = { disableHttpHandler: (): Promise => AuthClient.disableHttpHandler(), enableHttpHandler: (): Promise => AuthClient.enableHttpHandler(), error: error.value, + exchangeToken: async ( + config: TokenExchangeRequestConfig, + callback?: (response: BasicUserInfo | Response) => void, + ): Promise => { + try { + const response: BasicUserInfo | Response = await AuthClient.exchangeToken(config); + callback?.(response); + return response; + } catch (err) { + error.value = err; + throw err; + } + }, getAccessToken: (): Promise => AuthClient.getAccessToken(), - getUser: (): Promise => AuthClient.getUser(), getDecodedIdToken: (): Promise => AuthClient.getDecodedIdToken(), getHttpClient: (): Promise => AuthClient.getHttpClient(), getIdToken: (): Promise => AuthClient.getIdToken(), getOpenIDProviderEndpoints: (): Promise => AuthClient.getOpenIDProviderEndpoints(), + getUser: (): Promise => AuthClient.getUser(), httpRequest: (config: HttpRequestConfig): Promise> => AuthClient.httpRequest(config), httpRequestAll: (configs: HttpRequestConfig[]): Promise[]> => AuthClient.httpRequestAll(configs), @@ -173,20 +186,11 @@ export const asgardeoPlugin: Plugin = { AuthClient.on(hook as Exclude, callback); } }, + reInitialize: async (config: Partial>): Promise => + withStateSync(async () => { + await AuthClient.reInitialize(config); + }), refreshAccessToken: (): Promise => AuthClient.refreshAccessToken(), - exchangeToken: async ( - config: TokenExchangeRequestConfig, - callback?: (response: BasicUserInfo | Response) => void, - ): Promise => { - try { - const response: BasicUserInfo | Response = await AuthClient.exchangeToken(config); - callback?.(response); - return response; - } catch (err) { - error.value = err; - throw err; - } - }, revokeAccessToken: (): Promise => AuthClient.revokeAccessToken(), signIn: async ( config?: SignInConfig, @@ -212,6 +216,7 @@ export const asgardeoPlugin: Plugin = { } return result; }), + signInSilently, signOut: async (callback?: (response: boolean) => void): Promise => withStateSync(async () => { const result: boolean = await AuthClient.signOut(); @@ -219,11 +224,6 @@ export const asgardeoPlugin: Plugin = { return result; }), state, - signInSilently, - reInitialize: async (config: Partial>): Promise => - withStateSync(async () => { - await AuthClient.reInitialize(config); - }), }; app.provide(ASGARDEO_INJECTION_KEY, authContext); diff --git a/packages/vue/src/tests/AsgardeoPlugin.test.ts b/packages/vue/src/tests/AsgardeoPlugin.test.ts index 1ce3f713..6850b4e9 100644 --- a/packages/vue/src/tests/AsgardeoPlugin.test.ts +++ b/packages/vue/src/tests/AsgardeoPlugin.test.ts @@ -48,8 +48,8 @@ describe('asgardeoPlugin', () => { allowedScopes: '', displayName: '', email: '', - isSignedIn: false, isLoading: true, + isSignedIn: false, sub: '', username: '', }); @@ -68,12 +68,12 @@ describe('asgardeoPlugin', () => { it('should call AuthAPI init on install', async () => { expect(mockAuthAPI.init).toHaveBeenCalledWith( expect.objectContaining({ + afterSignInUrl: 'http://localhost:5173/', + afterSignOutUrl: 'http://localhost:5173/', baseUrl: 'https://api.asgardeo.io/t/mock-tenant', clientId: 'mock-client-id', disableAutoSignIn: true, disableTrySignInSilently: true, - afterSignInUrl: 'http://localhost:5173/', - afterSignOutUrl: 'http://localhost:5173/', }), ); }); @@ -84,8 +84,8 @@ describe('asgardeoPlugin', () => { allowedScopes: 'openid profile', displayName: 'Test User', email: 'test@example.com', - isSignedIn: true, isLoading: false, + isSignedIn: true, sub: 'user-id-123', username: 'testUser', }; @@ -106,8 +106,8 @@ describe('asgardeoPlugin', () => { allowedScopes: '', displayName: '', email: '', - isSignedIn: false, isLoading: false, + isSignedIn: false, sub: '', username: '', }; diff --git a/packages/vue/src/tests/auth-api.test.ts b/packages/vue/src/tests/auth-api.test.ts index 781a3733..943eae15 100644 --- a/packages/vue/src/tests/auth-api.test.ts +++ b/packages/vue/src/tests/auth-api.test.ts @@ -51,8 +51,8 @@ describe('AuthAPI', () => { allowedScopes: '', displayName: '', email: '', - isSignedIn: false, isLoading: true, + isSignedIn: false, sub: '', username: '', }); @@ -68,10 +68,10 @@ describe('AuthAPI', () => { describe('init', () => { it('should call initialize on the client with the provided config', async () => { const config: AuthVueConfig = { - baseUrl: 'https://api.asgardeo.io/t/mock-tenant', - clientId: 'mock-client-id', afterSignInUrl: 'http://localhost:5173/', afterSignOutUrl: 'http://localhost:5173/', + baseUrl: 'https://api.asgardeo.io/t/mock-tenant', + clientId: 'mock-client-id', }; await authApi.init(config); @@ -107,8 +107,8 @@ describe('AuthAPI', () => { allowedScopes: 'openid profile', displayName: 'Test User', email: 'test@example.com', - isSignedIn: true, isLoading: false, + isSignedIn: true, isSigningOut: false, sub: 'user-id-123', username: 'testUser', @@ -167,8 +167,8 @@ describe('AuthAPI', () => { it('should update the auth state', () => { const newState: AuthStateInterface = { allowedScopes: 'read write', - isSignedIn: true, isLoading: false, + isSignedIn: true, username: 'newUser', }; @@ -185,7 +185,7 @@ describe('AuthAPI', () => { it('should call getUser on the client', async () => { const result: BasicUserInfo = await authApi.getUser(); - expect(mockClient.getUser).toHaveBeenCalled(); + expect(mockClient.getBasicUserInfo).toHaveBeenCalled(); expect(result).toEqual({ allowedScopes: 'openid profile', displayName: 'Test User', @@ -240,8 +240,8 @@ describe('AuthAPI', () => { expect(authApi.getState()).toMatchObject({ displayName: 'Test User', email: 'test@example.com', - isSignedIn: true, isLoading: false, + isSignedIn: true, username: 'testUser', }); }); @@ -302,8 +302,8 @@ describe('AuthAPI', () => { authApi.updateState({ allowedScopes: 'read write', email: 'test@example.com', - isSignedIn: true, isLoading: false, + isSignedIn: true, username: 'testUser', }); @@ -457,8 +457,8 @@ describe('AuthAPI', () => { allowedScopes: 'openid profile', displayName: 'Test User', email: 'test@example.com', - isSignedIn: true, isLoading: false, + isSignedIn: true, sub: 'user-id-123', username: 'testUser', }); diff --git a/packages/vue/src/tests/mocks/mocks.ts b/packages/vue/src/tests/mocks/mocks.ts index abcf5ea2..84edd629 100644 --- a/packages/vue/src/tests/mocks/mocks.ts +++ b/packages/vue/src/tests/mocks/mocks.ts @@ -26,8 +26,8 @@ export const mockAuthContext: Partial = { state: { allowedScopes: 'openid profile email', displayName: 'John Doe', - isSignedIn: true, isLoading: false, + isSignedIn: true, }, }; @@ -35,8 +35,8 @@ export const mockState: AuthStateInterface = { allowedScopes: '', displayName: '', email: '', - isSignedIn: false, isLoading: true, + isSignedIn: false, sub: '', username: '', }; @@ -44,61 +44,62 @@ export const mockState: AuthStateInterface = { export type MockAuthAPI = { disableHttpHandler: Mock; enableHttpHandler: Mock; + exchangeToken: Mock; getAccessToken: Mock; - getUser: Mock; getDecodedIdToken: Mock; getHttpClient: Mock; getIdToken: Mock; getOpenIDProviderEndpoints: Mock; getState: Mock; + getUser: Mock; httpRequest: Mock; httpRequestAll: Mock; init: Mock; - isSignedIn: Mock; isSessionActive: Mock; + isSignedIn: Mock; on: Mock; + reInitialize: Mock; refreshAccessToken: Mock; - exchangeToken: Mock; revokeAccessToken: Mock; signIn: Mock; - signOut: Mock; signInSilently: Mock; - reInitialize: Mock; + signOut: Mock; updateState: Mock; }; export const mockAuthAPI: MockAuthAPI = { disableHttpHandler: vi.fn().mockResolvedValue(true), enableHttpHandler: vi.fn().mockResolvedValue(true), - getAccessToken: vi.fn().mockResolvedValue('mock-access-token'), - getUser: vi.fn().mockResolvedValue({ - allowedScopes: 'openid profile', + exchangeToken: vi.fn().mockResolvedValue({ displayName: 'Test User', email: 'test@example.com', - sub: 'user-id-123', username: 'testUser', - }), + } as BasicUserInfo), + getAccessToken: vi.fn().mockResolvedValue('mock-access-token'), getDecodedIdToken: vi.fn().mockResolvedValue({aud: 'client-id', iss: 'https://test.com', sub: 'user-id-123'}), getHttpClient: vi.fn().mockResolvedValue({}), getIdToken: vi.fn().mockResolvedValue('mock-id-token'), getOpenIDProviderEndpoints: vi.fn().mockResolvedValue({}), getState: vi.fn().mockReturnValue(mockState), + getUser: vi.fn().mockResolvedValue({ + allowedScopes: 'openid profile', + displayName: 'Test User', + email: 'test@example.com', + sub: 'user-id-123', + username: 'testUser', + }), httpRequest: vi.fn().mockResolvedValue({data: {}, status: 200}), httpRequestAll: vi.fn().mockResolvedValue([{data: {}, status: 200}]), init: vi.fn().mockResolvedValue(true), - isSignedIn: vi.fn().mockResolvedValue(true), isSessionActive: vi.fn().mockResolvedValue(true), + isSignedIn: vi.fn().mockResolvedValue(true), on: vi.fn(), + reInitialize: vi.fn().mockResolvedValue(undefined), refreshAccessToken: vi.fn().mockResolvedValue({ displayName: 'Test User', email: 'test@example.com', username: 'testUser', }), - exchangeToken: vi.fn().mockResolvedValue({ - displayName: 'Test User', - email: 'test@example.com', - username: 'testUser', - } as BasicUserInfo), revokeAccessToken: vi.fn().mockResolvedValue(true), signIn: vi.fn().mockResolvedValue({ allowedScopes: 'openid profile', @@ -107,9 +108,8 @@ export const mockAuthAPI: MockAuthAPI = { sub: 'user-id-123', username: 'testUser', }), - signOut: vi.fn().mockResolvedValue(true), signInSilently: vi.fn().mockResolvedValue(false), - reInitialize: vi.fn().mockResolvedValue(undefined), + signOut: vi.fn().mockResolvedValue(true), updateState: vi.fn().mockImplementation((newState: AuthStateInterface) => { Object.assign(mockState, newState); }), @@ -118,8 +118,13 @@ export const mockAuthAPI: MockAuthAPI = { export const mockAsgardeoSPAClient: Partial = { disableHttpHandler: vi.fn().mockResolvedValue(true), enableHttpHandler: vi.fn().mockResolvedValue(true), + exchangeToken: vi.fn().mockResolvedValue({ + displayName: 'Test User', + email: 'test@example.com', + username: 'testUser', + }), getAccessToken: vi.fn().mockResolvedValue('mock-access-token'), - getUser: vi.fn().mockResolvedValue({ + getBasicUserInfo: vi.fn().mockResolvedValue({ allowedScopes: 'openid profile', displayName: 'Test User', email: 'test@example.com', @@ -134,19 +139,15 @@ export const mockAsgardeoSPAClient: Partial = { httpRequest: vi.fn().mockResolvedValue({data: {}, status: 200}), httpRequestAll: vi.fn().mockResolvedValue([{data: {}, status: 200}]), initialize: vi.fn().mockResolvedValue(true), - isSignedIn: vi.fn().mockResolvedValue(true), isSessionActive: vi.fn().mockResolvedValue(true), + isSignedIn: vi.fn().mockResolvedValue(true), on: vi.fn().mockResolvedValue(undefined), + reInitialize: vi.fn().mockResolvedValue(undefined), refreshAccessToken: vi.fn().mockResolvedValue({ displayName: 'Test User', email: 'test@example.com', username: 'testUser', }), - exchangeToken: vi.fn().mockResolvedValue({ - displayName: 'Test User', - email: 'test@example.com', - username: 'testUser', - }), revokeAccessToken: vi.fn().mockResolvedValue(true), signIn: vi.fn().mockResolvedValue({ allowedScopes: 'openid profile', @@ -155,7 +156,6 @@ export const mockAsgardeoSPAClient: Partial = { sub: 'user-id-123', username: 'testUser', }), - signOut: vi.fn().mockResolvedValue(true), signInSilently: vi.fn().mockResolvedValue({ allowedScopes: 'openid profile', displayName: 'Test User', @@ -163,7 +163,7 @@ export const mockAsgardeoSPAClient: Partial = { sub: 'user-id-123', username: 'testUser', }), - reInitialize: vi.fn().mockResolvedValue(undefined), + signOut: vi.fn().mockResolvedValue(true), }; export class MockAsgardeoAuthException extends Error { @@ -199,8 +199,8 @@ export const asgardeoAuthSPAMock: any = { }; export const mockConfig: AuthVueConfig = { - baseUrl: 'https://api.asgardeo.io/t/mock-tenant', - clientId: 'mock-client-id', afterSignInUrl: 'http://localhost:5173/', afterSignOutUrl: 'http://localhost:5173/', + baseUrl: 'https://api.asgardeo.io/t/mock-tenant', + clientId: 'mock-client-id', }; diff --git a/packages/vue/src/tests/useAsgardeo.test.ts b/packages/vue/src/tests/useAsgardeo.test.ts index 2b8d9b17..cdddc3b0 100644 --- a/packages/vue/src/tests/useAsgardeo.test.ts +++ b/packages/vue/src/tests/useAsgardeo.test.ts @@ -38,28 +38,28 @@ describe('useAsgardeo', () => { disableHttpHandler: vi.fn().mockResolvedValue(true), enableHttpHandler: vi.fn().mockResolvedValue(true), error: new AsgardeoAuthException('Some error', 'Error message', 'error'), + exchangeToken: vi.fn(), getAccessToken: vi.fn().mockResolvedValue('token'), - getUser: vi.fn().mockResolvedValue({} as BasicUserInfo), getDecodedIdToken: vi.fn().mockResolvedValue({} as IdToken), getHttpClient: vi.fn().mockResolvedValue({} as HttpClientInstance), getIdToken: vi.fn().mockResolvedValue('id_token'), getOpenIDProviderEndpoints: vi.fn().mockResolvedValue({} as OIDCEndpoints), + getUser: vi.fn().mockResolvedValue({} as BasicUserInfo), httpRequest: vi.fn().mockResolvedValue({} as HttpResponse), httpRequestAll: vi.fn().mockResolvedValue([{} as HttpResponse]), isSignedIn: vi.fn().mockResolvedValue(true), on: vi.fn(), + reInitialize: vi.fn().mockResolvedValue(undefined), refreshAccessToken: vi.fn().mockResolvedValue({} as BasicUserInfo), - exchangeToken: vi.fn(), revokeAccessToken: vi.fn().mockResolvedValue(true), signIn: vi.fn().mockResolvedValue({} as BasicUserInfo), + signInSilently: vi.fn().mockResolvedValue(true), signOut: vi.fn().mockResolvedValue(true), state: { allowedScopes: '', - isSignedIn: true, isLoading: false, + isSignedIn: true, }, - signInSilently: vi.fn().mockResolvedValue(true), - reInitialize: vi.fn().mockResolvedValue(undefined), }; beforeEach(() => { diff --git a/packages/vue/src/types.ts b/packages/vue/src/types.ts index bcfbb213..eb7b0007 100644 --- a/packages/vue/src/types.ts +++ b/packages/vue/src/types.ts @@ -71,14 +71,14 @@ export interface AuthStateInterface { * The email address of the user. */ email?: string; - /** - * Specifies if the user is authenticated or not. - */ - isSignedIn: boolean; /** * Are the Auth requests loading. */ isLoading: boolean; + /** + * Specifies if the user is authenticated or not. + */ + isSignedIn: boolean; /** * The uid corresponding to the user who the ID token belonged to. */ @@ -93,20 +93,21 @@ export interface AuthContextInterface { disableHttpHandler(): Promise; enableHttpHandler(): Promise; error: AsgardeoAuthException; + exchangeToken(config: TokenExchangeRequestConfig, callback?: (response: BasicUserInfo | Response) => void): void; getAccessToken(): Promise; - getUser(): Promise; getDecodedIdToken(): Promise; getHttpClient(): Promise; getIdToken(): Promise; getOpenIDProviderEndpoints(): Promise; + getUser(): Promise; httpRequest(config: HttpRequestConfig): Promise>; httpRequestAll(configs: HttpRequestConfig[]): Promise[]>; isSignedIn(): Promise; on(hook: Hooks.CustomGrant, callback: (response?: any) => void, id: string): void; on(hook: Exclude, callback: (response?: any) => void): void; on(hook: Hooks, callback: (response?: any) => void, id?: string): void; + reInitialize(config: Partial>): Promise; refreshAccessToken(): Promise; - exchangeToken(config: TokenExchangeRequestConfig, callback?: (response: BasicUserInfo | Response) => void): void; revokeAccessToken(): Promise; signIn: ( config?: SignInConfig, @@ -118,13 +119,12 @@ export interface AuthContextInterface { params: Record; }, ) => Promise; - signOut: (callback?: (response: boolean) => void) => Promise; - state: AuthStateInterface; signInSilently: ( additionalParams?: Record, tokenRequestConfig?: {params: Record}, ) => Promise; - reInitialize(config: Partial>): Promise; + signOut: (callback?: (response: boolean) => void) => Promise; + state: AuthStateInterface; } /** diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2471691c..3d865e7d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,6 +6,9 @@ settings: catalogs: default: + '@eslint/js': + specifier: 9.25.0 + version: 9.25.0 '@wso2/eslint-plugin': specifier: git+https://github.com/brionmario/wso2-ui-configs.git#a1fc6eb570653c999828aea9f5027cba06af4391&path:packages/eslint-plugin version: 0.1.0 @@ -24,6 +27,17 @@ overrides: js-beautify>glob: 10.5.0 '@types/react': 19.1.5 '@types/react-dom': 19.1.5 + js-yaml: 4.1.1 + read-yaml-file: 2.1.0 + brace-expansion: 2.0.2 + '@eslint/plugin-kit': 0.3.4 + tmp: 0.2.4 + min-document: 2.19.1 + lodash: 4.17.23 + tar: 7.5.4 + seroval: 1.4.1 + qs: 6.14.1 + '@vitejs/plugin-vue>vite': 7.1.12 importers: @@ -33,8 +47,8 @@ importers: specifier: 0.5.1 version: 0.5.1 '@changesets/cli': - specifier: 2.29.4 - version: 2.29.4 + specifier: 2.29.8 + version: 2.29.8(@types/node@24.0.3) '@wso2/eslint-plugin': specifier: 'catalog:' version: https://codeload.github.com/brionmario/wso2-ui-configs/tar.gz/a1fc6eb570653c999828aea9f5027cba06af4391#path:packages/eslint-plugin(eslint@8.57.0)(typescript@5.7.2) @@ -104,7 +118,7 @@ importers: version: 22.15.3 '@vitest/browser': specifier: 3.1.3 - version: 3.1.3(playwright@1.55.1)(vite@6.3.5(@types/node@22.15.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0))(vitest@3.1.3) + version: 3.1.3(playwright@1.55.1)(vite@6.4.1(@types/node@22.15.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0))(vitest@3.1.3) '@wso2/eslint-plugin': specifier: 'catalog:' version: https://codeload.github.com/brionmario/wso2-ui-configs/tar.gz/a1fc6eb570653c999828aea9f5027cba06af4391#path:packages/eslint-plugin(eslint@8.57.0)(typescript@5.7.2) @@ -123,6 +137,9 @@ importers: eslint: specifier: 8.57.0 version: 8.57.0 + jsdom: + specifier: ^27.4.0 + version: 27.4.0 playwright: specifier: 1.55.1 version: 1.55.1 @@ -137,7 +154,7 @@ importers: version: 5.7.2 vitest: specifier: 3.1.3 - version: 3.1.3(@types/node@22.15.3)(@vitest/browser@3.1.3)(jiti@2.6.0)(jsdom@26.1.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) + version: 3.1.3(@types/node@22.15.3)(@vitest/browser@3.1.3)(jiti@2.6.0)(jsdom@27.4.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) packages/express: dependencies: @@ -164,8 +181,8 @@ importers: specifier: 8.57.0 version: 8.57.0 express: - specifier: 5.1.0 - version: 5.1.0 + specifier: 5.2.1 + version: 5.2.1 prettier: specifier: 2.6.2 version: 2.6.2 @@ -177,7 +194,7 @@ importers: version: 5.7.2 vitest: specifier: 3.1.3 - version: 3.1.3(@types/node@22.15.3)(@vitest/browser@3.1.3)(jiti@2.6.0)(jsdom@26.1.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) + version: 3.1.3(@types/node@22.15.3)(@vitest/browser@3.1.3)(jiti@2.6.0)(jsdom@27.4.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) packages/i18n: dependencies: @@ -211,7 +228,7 @@ importers: version: 5.7.2 vitest: specifier: 3.1.3 - version: 3.1.3(@types/node@22.15.30)(@vitest/browser@3.1.3)(jiti@2.6.0)(jsdom@26.1.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) + version: 3.1.3(@types/node@22.15.30)(@vitest/browser@3.1.3)(jiti@2.6.0)(jsdom@27.4.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) packages/javascript: dependencies: @@ -248,7 +265,7 @@ importers: version: 5.7.2 vitest: specifier: 3.1.3 - version: 3.1.3(@types/node@22.15.30)(@vitest/browser@3.1.3)(jiti@2.6.0)(jsdom@26.1.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) + version: 3.1.3(@types/node@22.15.30)(@vitest/browser@3.1.3)(jiti@2.6.0)(jsdom@27.4.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) packages/nextjs: dependencies: @@ -287,8 +304,8 @@ importers: specifier: 8.57.0 version: 8.57.0 next: - specifier: 15.3.8 - version: 15.3.8(react-dom@19.1.4(react@19.1.4))(react@19.1.4)(sass@1.92.1) + specifier: 15.4.10 + version: 15.4.10(react-dom@19.1.4(react@19.1.4))(react@19.1.4)(sass@1.92.1) prettier: specifier: 2.6.2 version: 2.6.2 @@ -303,7 +320,7 @@ importers: version: 5.7.2 vitest: specifier: 3.1.3 - version: 3.1.3(@types/node@22.15.3)(@vitest/browser@3.1.3)(jiti@2.6.0)(jsdom@26.1.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) + version: 3.1.3(@types/node@22.15.3)(@vitest/browser@3.1.3)(jiti@2.6.0)(jsdom@27.4.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) packages/node: dependencies: @@ -361,7 +378,7 @@ importers: version: 5.7.2 vitest: specifier: 3.1.3 - version: 3.1.3(@types/node@22.15.3)(@vitest/browser@3.1.3)(jiti@2.6.0)(jsdom@26.1.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) + version: 3.1.3(@types/node@22.15.3)(@vitest/browser@3.1.3)(jiti@2.6.0)(jsdom@27.4.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) packages/react: dependencies: @@ -393,15 +410,15 @@ importers: '@testing-library/dom': specifier: 10.4.0 version: 10.4.0 + '@testing-library/react': + specifier: 16.3.0 + version: 16.3.0(@testing-library/dom@10.4.0)(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.4(react@19.1.4))(react@19.1.4) '@types/node': specifier: 22.15.3 version: 22.15.3 '@types/react': specifier: 19.1.5 version: 19.1.5 - '@vitest/browser': - specifier: 3.1.3 - version: 3.1.3(playwright@1.55.1)(vite@6.3.5(@types/node@22.15.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0))(vitest@3.1.3) '@wso2/eslint-plugin': specifier: 'catalog:' version: https://codeload.github.com/brionmario/wso2-ui-configs/tar.gz/a1fc6eb570653c999828aea9f5027cba06af4391#path:packages/eslint-plugin(eslint@8.57.0)(typescript@5.7.2) @@ -414,9 +431,9 @@ importers: eslint: specifier: 8.57.0 version: 8.57.0 - playwright: - specifier: 1.55.1 - version: 1.55.1 + jsdom: + specifier: 26.1.0 + version: 26.1.0 prettier: specifier: 2.6.2 version: 2.6.2 @@ -432,9 +449,6 @@ importers: vitest: specifier: 3.1.3 version: 3.1.3(@types/node@22.15.3)(@vitest/browser@3.1.3)(jiti@2.6.0)(jsdom@26.1.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) - vitest-browser-react: - specifier: 0.1.1 - version: 0.1.1(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(@vitest/browser@3.1.3)(react-dom@19.1.4(react@19.1.4))(react@19.1.4)(vitest@3.1.3) packages/react-router: dependencies: @@ -473,8 +487,8 @@ importers: specifier: 19.1.4 version: 19.1.4 react-router: - specifier: 7.6.3 - version: 7.6.3(react-dom@19.1.4(react@19.1.4))(react@19.1.4) + specifier: 7.12.0 + version: 7.12.0(react-dom@19.1.4(react@19.1.4))(react@19.1.4) rimraf: specifier: 6.1.0 version: 6.1.0 @@ -483,7 +497,7 @@ importers: version: 5.7.2 vitest: specifier: 3.1.3 - version: 3.1.3(@types/node@22.15.3)(@vitest/browser@3.1.3)(jiti@2.6.0)(jsdom@26.1.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) + version: 3.1.3(@types/node@22.15.3)(@vitest/browser@3.1.3)(jiti@2.6.0)(jsdom@27.4.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) packages/tanstack-router: dependencies: @@ -495,8 +509,11 @@ importers: specifier: workspace:* version: link:../react '@tanstack/react-router': - specifier: 1.132.6 - version: 1.132.6(react-dom@19.1.4(react@19.1.4))(react@19.1.4) + specifier: 1.154.7 + version: 1.154.7(react-dom@19.1.4(react@19.1.4))(react@19.1.4) + '@testing-library/react': + specifier: 16.2.0 + version: 16.2.0(@testing-library/dom@10.4.0)(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.4(react@19.1.4))(react@19.1.4) '@types/node': specifier: 22.15.3 version: 22.15.3 @@ -532,7 +549,7 @@ importers: version: 5.7.2 vitest: specifier: 3.1.3 - version: 3.1.3(@types/node@22.15.3)(@vitest/browser@3.1.3)(jiti@2.6.0)(jsdom@26.1.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) + version: 3.1.3(@types/node@22.15.3)(@vitest/browser@3.1.3)(jiti@2.6.0)(jsdom@27.4.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) packages/vue: dependencies: @@ -543,8 +560,8 @@ importers: specifier: 0.1.3 version: 0.1.3 '@vitejs/plugin-vue': - specifier: 5.0.0 - version: 5.0.0(vite@7.1.4(@types/node@20.12.7)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0))(vue@3.5.13(typescript@5.1.6)) + specifier: 5.2.4 + version: 5.2.4(vite@7.1.12(@types/node@20.12.7)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0))(vue@3.5.13(typescript@5.1.6)) base64url: specifier: 3.0.1 version: 3.0.1 @@ -569,25 +586,25 @@ importers: devDependencies: '@rollup/plugin-commonjs': specifier: 25.0.7 - version: 25.0.7(rollup@4.17.2) + version: 25.0.7(rollup@4.32.0) '@rollup/plugin-image': specifier: 3.0.3 - version: 3.0.3(rollup@4.17.2) + version: 3.0.3(rollup@4.32.0) '@rollup/plugin-node-resolve': specifier: 15.2.3 - version: 15.2.3(rollup@4.17.2) + version: 15.2.3(rollup@4.32.0) '@rollup/plugin-typescript': specifier: 11.1.6 - version: 11.1.6(rollup@4.17.2)(tslib@2.6.2)(typescript@5.1.6) + version: 11.1.6(rollup@4.32.0)(tslib@2.6.2)(typescript@5.1.6) '@types/node': specifier: 20.12.7 version: 20.12.7 '@vitest/coverage-v8': specifier: 3.0.8 - version: 3.0.8(vitest@3.0.8(@types/node@20.12.7)(jiti@2.6.0)(jsdom@26.1.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0)) + version: 3.0.8(vitest@3.0.8(@types/node@20.12.7)(jiti@2.6.0)(jsdom@27.4.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0)) '@vitest/web-worker': specifier: 3.0.8 - version: 3.0.8(vitest@3.0.8(@types/node@20.12.7)(jiti@2.6.0)(jsdom@26.1.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0)) + version: 3.0.8(vitest@3.0.8(@types/node@20.12.7)(jiti@2.6.0)(jsdom@27.4.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0)) '@vue/eslint-config-prettier': specifier: 8.0.0 version: 8.0.0(eslint@8.57.0)(prettier@3.2.5) @@ -613,17 +630,17 @@ importers: specifier: 3.2.5 version: 3.2.5 rollup: - specifier: 4.17.2 - version: 4.17.2 + specifier: 4.32.0 + version: 4.32.0 rollup-plugin-dts: specifier: 6.1.0 - version: 6.1.0(rollup@4.17.2)(typescript@5.1.6) + version: 6.1.0(rollup@4.32.0)(typescript@5.1.6) rollup-plugin-polyfill-node: specifier: 0.13.0 - version: 0.13.0(rollup@4.17.2) + version: 0.13.0(rollup@4.32.0) rollup-plugin-styles: specifier: 4.0.0 - version: 4.0.0(rollup@4.17.2) + version: 4.0.0(rollup@4.32.0) sass: specifier: 1.75.0 version: 1.75.0 @@ -636,9 +653,12 @@ importers: typescript: specifier: 5.1.6 version: 5.1.6 + vite: + specifier: 7.1.12 + version: 7.1.12(@types/node@20.12.7)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0) vitest: specifier: 3.0.8 - version: 3.0.8(@types/node@20.12.7)(jiti@2.6.0)(jsdom@26.1.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0) + version: 3.0.8(@types/node@20.12.7)(jiti@2.6.0)(jsdom@27.4.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0) vue-tsc: specifier: 2.2.2 version: 2.2.2(typescript@5.1.6) @@ -652,8 +672,8 @@ importers: specifier: workspace:* version: link:../../packages/tanstack-router '@tanstack/react-router': - specifier: 1.132.6 - version: 1.132.6(react-dom@19.1.4(react@19.1.4))(react@19.1.4) + specifier: 1.154.7 + version: 1.154.7(react-dom@19.1.4(react@19.1.4))(react@19.1.4) react: specifier: 19.1.4 version: 19.1.4 @@ -661,6 +681,9 @@ importers: specifier: 19.1.4 version: 19.1.4(react@19.1.4) devDependencies: + '@eslint/js': + specifier: 'catalog:' + version: 9.25.0 '@types/react': specifier: 19.1.5 version: 19.1.5 @@ -669,10 +692,10 @@ importers: version: 19.1.5(@types/react@19.1.5) '@vitejs/plugin-basic-ssl': specifier: 2.0.0 - version: 2.0.0(vite@6.3.5(@types/node@24.0.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0)) + version: 2.0.0(vite@6.4.1(@types/node@24.0.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0)) '@vitejs/plugin-react': specifier: 4.4.1 - version: 4.4.1(vite@6.3.5(@types/node@24.0.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0)) + version: 4.4.1(vite@6.4.1(@types/node@24.0.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0)) eslint: specifier: 9.25.0 version: 9.25.0(jiti@2.6.0) @@ -692,8 +715,8 @@ importers: specifier: 8.30.1 version: 8.30.1(eslint@9.25.0(jiti@2.6.0))(typescript@5.8.3) vite: - specifier: 6.3.5 - version: 6.3.5(@types/node@24.0.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) + specifier: 6.4.1 + version: 6.4.1(@types/node@24.0.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) samples/teamspace-react: dependencies: @@ -734,15 +757,18 @@ importers: specifier: 19.1.4 version: 19.1.4(react@19.1.4) react-router: - specifier: 7.6.3 - version: 7.6.3(react-dom@19.1.4(react@19.1.4))(react@19.1.4) + specifier: 7.12.0 + version: 7.12.0(react-dom@19.1.4(react@19.1.4))(react@19.1.4) tailwind-merge: specifier: 3.3.0 version: 3.3.0 devDependencies: + '@eslint/js': + specifier: 'catalog:' + version: 9.25.0 '@tailwindcss/vite': specifier: 4.1.8 - version: 4.1.8(vite@6.3.5(@types/node@24.0.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0)) + version: 4.1.8(vite@6.4.1(@types/node@24.0.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0)) '@types/react': specifier: 19.1.5 version: 19.1.5 @@ -751,10 +777,10 @@ importers: version: 19.1.5(@types/react@19.1.5) '@vitejs/plugin-basic-ssl': specifier: 2.0.0 - version: 2.0.0(vite@6.3.5(@types/node@24.0.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0)) + version: 2.0.0(vite@6.4.1(@types/node@24.0.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0)) '@vitejs/plugin-react': specifier: 4.4.1 - version: 4.4.1(vite@6.3.5(@types/node@24.0.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0)) + version: 4.4.1(vite@6.4.1(@types/node@24.0.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0)) autoprefixer: specifier: 10.4.16 version: 10.4.16(postcss@8.4.31) @@ -786,17 +812,29 @@ importers: specifier: 8.30.1 version: 8.30.1(eslint@9.25.0(jiti@2.6.0))(typescript@5.8.3) vite: - specifier: 6.3.5 - version: 6.3.5(@types/node@24.0.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) + specifier: 6.4.1 + version: 6.4.1(@types/node@24.0.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) packages: + '@acemir/cssom@0.9.31': + resolution: {integrity: sha512-ZnR3GSaH+/vJ0YlHau21FjfLYjMpYVIzTD8M8vIEQvIGxeOXyXdzCI140rrCY862p/C/BbzWsjc1dgnM9mkoTA==} + '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@asamuzakjp/css-color@3.1.7': - resolution: {integrity: sha512-Ok5fYhtwdyJQmU1PpEv6Si7Y+A4cYb8yNM9oiIJC9TzXPMuN9fvdonKJqcnz9TbFqV6bQ8z0giRq0iaOpGZV2g==} + '@asamuzakjp/css-color@3.2.0': + resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} + + '@asamuzakjp/css-color@4.1.1': + resolution: {integrity: sha512-B0Hv6G3gWGMn0xKJ0txEi/jM5iFpT3MfDxmhZFb4W047GvytCf1DHQ1D69W3zHI4yWe2aTZAA0JnbMZ7Xc8DuQ==} + + '@asamuzakjp/dom-selector@6.7.6': + resolution: {integrity: sha512-hBaJER6A9MpdG3WgdlOolHmbOYvSk46y7IQN/1+iqiCuUu6iWdQrs9DGKF8ocqsEqWujWf/V7b7vaDgiUmIvUg==} + + '@asamuzakjp/nwsapi@2.3.9': + resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} '@asgardeo/auth-js@5.1.2': resolution: {integrity: sha512-fGfUorhUwUSXC/sETTlRbXJ0kMwcLKvVXCieePnxg2AVeiy1lFdRqZt1zsnr4/rd0jd/woYBE96rOAS5fVGFPw==} @@ -904,11 +942,11 @@ packages: '@bufbuild/protobuf@2.7.0': resolution: {integrity: sha512-qn6tAIZEw5i/wiESBF4nQxZkl86aY4KoO0IkUa2Lh+rya64oTOdJQFlZuMwI1Qz9VBJQrQC4QlSA2DNek5gCOA==} - '@changesets/apply-release-plan@7.0.12': - resolution: {integrity: sha512-EaET7As5CeuhTzvXTQCRZeBUcisoYPDDcXvgTE/2jmmypKp0RC7LxKj/yzqeh/1qFTZI7oDGFcL1PHRuQuketQ==} + '@changesets/apply-release-plan@7.0.14': + resolution: {integrity: sha512-ddBvf9PHdy2YY0OUiEl3TV78mH9sckndJR14QAt87KLEbIov81XO0q0QAmvooBxXlqRRP8I9B7XOzZwQG7JkWA==} - '@changesets/assemble-release-plan@6.0.8': - resolution: {integrity: sha512-y8+8LvZCkKJdbUlpXFuqcavpzJR80PN0OIfn8HZdwK7Sh6MgLXm4hKY5vu6/NDoKp8lAlM4ERZCqRMLxP4m+MQ==} + '@changesets/assemble-release-plan@6.0.9': + resolution: {integrity: sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==} '@changesets/changelog-git@0.2.1': resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} @@ -916,12 +954,12 @@ packages: '@changesets/changelog-github@0.5.1': resolution: {integrity: sha512-BVuHtF+hrhUScSoHnJwTELB4/INQxVFc+P/Qdt20BLiBFIHFJDDUaGsZw+8fQeJTRP5hJZrzpt3oZWh0G19rAQ==} - '@changesets/cli@2.29.4': - resolution: {integrity: sha512-VW30x9oiFp/un/80+5jLeWgEU6Btj8IqOgI+X/zAYu4usVOWXjPIK5jSSlt5jsCU7/6Z7AxEkarxBxGUqkAmNg==} + '@changesets/cli@2.29.8': + resolution: {integrity: sha512-1weuGZpP63YWUYjay/E84qqwcnt5yJMM0tep10Up7Q5cS/DGe2IZ0Uj3HNMxGhCINZuR7aO9WBMdKnPit5ZDPA==} hasBin: true - '@changesets/config@3.1.1': - resolution: {integrity: sha512-bd+3Ap2TKXxljCggI0mKPfzCQKeV/TU4yO2h2C6vAihIo8tzseAn2e7klSuiyYYXvgu53zMN1OeYMIQkaQoWnA==} + '@changesets/config@3.1.2': + resolution: {integrity: sha512-CYiRhA4bWKemdYi/uwImjPxqWNpqGPNbEBdX1BdONALFIDK7MCUj6FPkzD+z9gJcvDFUQJn9aDVf4UG7OT6Kog==} '@changesets/errors@0.2.0': resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} @@ -932,8 +970,8 @@ packages: '@changesets/get-github-info@0.6.0': resolution: {integrity: sha512-v/TSnFVXI8vzX9/w3DU2Ol+UlTZcu3m0kXTjTT4KlAdwSvwutcByYwyYn9hwerPWfPkT2JfpoX0KgvCEi8Q/SA==} - '@changesets/get-release-plan@4.0.12': - resolution: {integrity: sha512-KukdEgaafnyGryUwpHG2kZ7xJquOmWWWk5mmoeQaSvZTWH1DC5D/Sw6ClgGFYtQnOMSQhgoEbDxAbpIIayKH1g==} + '@changesets/get-release-plan@4.0.14': + resolution: {integrity: sha512-yjZMHpUHgl4Xl5gRlolVuxDkm4HgSJqT93Ri1Uz8kGrQb+5iJ8dkXJ20M2j/Y4iV5QzS2c5SeTxVSKX+2eMI0g==} '@changesets/get-version-range-type@0.4.0': resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} @@ -944,14 +982,14 @@ packages: '@changesets/logger@0.1.1': resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} - '@changesets/parse@0.4.1': - resolution: {integrity: sha512-iwksMs5Bf/wUItfcg+OXrEpravm5rEd9Bf4oyIPL4kVTmJQ7PNDSd6MDYkpSJR1pn7tz/k8Zf2DhTCqX08Ou+Q==} + '@changesets/parse@0.4.2': + resolution: {integrity: sha512-Uo5MC5mfg4OM0jU3up66fmSn6/NE9INK+8/Vn/7sMVcdWg46zfbvvUSjD9EMonVqPi9fbrJH9SXHn48Tr1f2yA==} '@changesets/pre@2.0.2': resolution: {integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==} - '@changesets/read@0.6.5': - resolution: {integrity: sha512-UPzNGhsSjHD3Veb0xO/MwvasGe8eMyNrR/sT9gR8Q3DhOQZirgKhhXv/8hVsI0QpPjR004Z9iFxoJU6in3uGMg==} + '@changesets/read@0.6.6': + resolution: {integrity: sha512-P5QaN9hJSQQKJShzzpBT13FzOSPyHbqdoIBUd2DJdgvnECCyO6LmAOWSV+O8se2TaZJVwSXjL+v9yhb+a9JeJg==} '@changesets/should-skip-package@0.1.2': resolution: {integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==} @@ -965,23 +1003,23 @@ packages: '@changesets/write@0.4.0': resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} - '@csstools/color-helpers@5.0.2': - resolution: {integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==} + '@csstools/color-helpers@5.1.0': + resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==} engines: {node: '>=18'} - '@csstools/css-calc@2.1.3': - resolution: {integrity: sha512-XBG3talrhid44BY1x3MHzUx/aTG8+x/Zi57M4aTKK9RFB4aLlF3TTSzfzn8nWVHWL3FgAXAxmupmDd6VWww+pw==} + '@csstools/css-calc@2.1.4': + resolution: {integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==} engines: {node: '>=18'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.4 - '@csstools/css-tokenizer': ^3.0.3 + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-color-parser@3.0.9': - resolution: {integrity: sha512-wILs5Zk7BU86UArYBJTPy/FMPPKVKHMj1ycCEyf3VUptol0JNRLFU/BZsJ4aiIHJEbSLiizzRrw8Pc1uAEDrXw==} + '@csstools/css-color-parser@3.1.0': + resolution: {integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==} engines: {node: '>=18'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.4 - '@csstools/css-tokenizer': ^3.0.3 + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 '@csstools/css-parser-algorithms@2.7.1': resolution: {integrity: sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==} @@ -989,18 +1027,22 @@ packages: peerDependencies: '@csstools/css-tokenizer': ^2.4.1 - '@csstools/css-parser-algorithms@3.0.4': - resolution: {integrity: sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==} + '@csstools/css-parser-algorithms@3.0.5': + resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} engines: {node: '>=18'} peerDependencies: - '@csstools/css-tokenizer': ^3.0.3 + '@csstools/css-tokenizer': ^3.0.4 + + '@csstools/css-syntax-patches-for-csstree@1.0.25': + resolution: {integrity: sha512-g0Kw9W3vjx5BEBAF8c5Fm2NcB/Fs8jJXh85aXqwEXiL+tqtOut07TWgyaGzAAfTM+gKckrrncyeGEZPcaRgm2Q==} + engines: {node: '>=18'} '@csstools/css-tokenizer@2.4.1': resolution: {integrity: sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg==} engines: {node: ^14 || ^16 || >=18} - '@csstools/css-tokenizer@3.0.3': - resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==} + '@csstools/css-tokenizer@3.0.4': + resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} engines: {node: '>=18'} '@csstools/media-query-list-parser@2.1.13': @@ -1022,6 +1064,9 @@ packages: '@emnapi/runtime@1.4.3': resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==} + '@emnapi/runtime@1.8.1': + resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==} + '@emnapi/wasi-threads@1.0.2': resolution: {integrity: sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==} @@ -1389,6 +1434,10 @@ packages: resolution: {integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/core@0.15.2': + resolution: {integrity: sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/eslintrc@2.1.4': resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1409,10 +1458,19 @@ packages: resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.2.8': - resolution: {integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==} + '@eslint/plugin-kit@0.3.4': + resolution: {integrity: sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@exodus/bytes@1.9.0': + resolution: {integrity: sha512-lagqsvnk09NKogQaN/XrtlWeUF8SRhT12odMvbTIIaVObqzwAogL6jhR4DAp0gPuKoM1AOVrKUshJpRdpMFrww==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + peerDependencies: + '@noble/hashes': ^1.8.0 || ^2.0.0 + peerDependenciesMeta: + '@noble/hashes': + optional: true + '@floating-ui/core@1.7.1': resolution: {integrity: sha512-azI0DrjMMfIug/ExbBaeDVJXcY0a7EPvPjb2xAJPa4HeimBX+Z18HK8QQR3jb6356SnDDdxx+hinMLcJEDdOjw==} @@ -1463,122 +1521,152 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} - '@img/sharp-darwin-arm64@0.34.2': - resolution: {integrity: sha512-OfXHZPppddivUJnqyKoi5YVeHRkkNE2zUFT2gbpKxp/JZCFYEYubnMg+gOp6lWfasPrTS+KPosKqdI+ELYVDtg==} + '@img/colour@1.0.0': + resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==} + engines: {node: '>=18'} + + '@img/sharp-darwin-arm64@0.34.5': + resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [darwin] - '@img/sharp-darwin-x64@0.34.2': - resolution: {integrity: sha512-dYvWqmjU9VxqXmjEtjmvHnGqF8GrVjM2Epj9rJ6BUIXvk8slvNDJbhGFvIoXzkDhrJC2jUxNLz/GUjjvSzfw+g==} + '@img/sharp-darwin-x64@0.34.5': + resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [darwin] - '@img/sharp-libvips-darwin-arm64@1.1.0': - resolution: {integrity: sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==} + '@img/sharp-libvips-darwin-arm64@1.2.4': + resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} cpu: [arm64] os: [darwin] - '@img/sharp-libvips-darwin-x64@1.1.0': - resolution: {integrity: sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==} + '@img/sharp-libvips-darwin-x64@1.2.4': + resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} cpu: [x64] os: [darwin] - '@img/sharp-libvips-linux-arm64@1.1.0': - resolution: {integrity: sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==} + '@img/sharp-libvips-linux-arm64@1.2.4': + resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} cpu: [arm64] os: [linux] - '@img/sharp-libvips-linux-arm@1.1.0': - resolution: {integrity: sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==} + '@img/sharp-libvips-linux-arm@1.2.4': + resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} cpu: [arm] os: [linux] - '@img/sharp-libvips-linux-ppc64@1.1.0': - resolution: {integrity: sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==} + '@img/sharp-libvips-linux-ppc64@1.2.4': + resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} cpu: [ppc64] os: [linux] - '@img/sharp-libvips-linux-s390x@1.1.0': - resolution: {integrity: sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==} + '@img/sharp-libvips-linux-riscv64@1.2.4': + resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} + cpu: [riscv64] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.2.4': + resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} cpu: [s390x] os: [linux] - '@img/sharp-libvips-linux-x64@1.1.0': - resolution: {integrity: sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==} + '@img/sharp-libvips-linux-x64@1.2.4': + resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} cpu: [x64] os: [linux] - '@img/sharp-libvips-linuxmusl-arm64@1.1.0': - resolution: {integrity: sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==} + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} cpu: [arm64] os: [linux] - '@img/sharp-libvips-linuxmusl-x64@1.1.0': - resolution: {integrity: sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==} + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} cpu: [x64] os: [linux] - '@img/sharp-linux-arm64@0.34.2': - resolution: {integrity: sha512-D8n8wgWmPDakc83LORcfJepdOSN6MvWNzzz2ux0MnIbOqdieRZwVYY32zxVx+IFUT8er5KPcyU3XXsn+GzG/0Q==} + '@img/sharp-linux-arm64@0.34.5': + resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - '@img/sharp-linux-arm@0.34.2': - resolution: {integrity: sha512-0DZzkvuEOqQUP9mo2kjjKNok5AmnOr1jB2XYjkaoNRwpAYMDzRmAqUIa1nRi58S2WswqSfPOWLNOr0FDT3H5RQ==} + '@img/sharp-linux-arm@0.34.5': + resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] - '@img/sharp-linux-s390x@0.34.2': - resolution: {integrity: sha512-EGZ1xwhBI7dNISwxjChqBGELCWMGDvmxZXKjQRuqMrakhO8QoMgqCrdjnAqJq/CScxfRn+Bb7suXBElKQpPDiw==} + '@img/sharp-linux-ppc64@0.34.5': + resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ppc64] + os: [linux] + + '@img/sharp-linux-riscv64@0.34.5': + resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [riscv64] + os: [linux] + + '@img/sharp-linux-s390x@0.34.5': + resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] - '@img/sharp-linux-x64@0.34.2': - resolution: {integrity: sha512-sD7J+h5nFLMMmOXYH4DD9UtSNBD05tWSSdWAcEyzqW8Cn5UxXvsHAxmxSesYUsTOBmUnjtxghKDl15EvfqLFbQ==} + '@img/sharp-linux-x64@0.34.5': + resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - '@img/sharp-linuxmusl-arm64@0.34.2': - resolution: {integrity: sha512-NEE2vQ6wcxYav1/A22OOxoSOGiKnNmDzCYFOZ949xFmrWZOVII1Bp3NqVVpvj+3UeHMFyN5eP/V5hzViQ5CZNA==} + '@img/sharp-linuxmusl-arm64@0.34.5': + resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - '@img/sharp-linuxmusl-x64@0.34.2': - resolution: {integrity: sha512-DOYMrDm5E6/8bm/yQLCWyuDJwUnlevR8xtF8bs+gjZ7cyUNYXiSf/E8Kp0Ss5xasIaXSHzb888V1BE4i1hFhAA==} + '@img/sharp-linuxmusl-x64@0.34.5': + resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - '@img/sharp-wasm32@0.34.2': - resolution: {integrity: sha512-/VI4mdlJ9zkaq53MbIG6rZY+QRN3MLbR6usYlgITEzi4Rpx5S6LFKsycOQjkOGmqTNmkIdLjEvooFKwww6OpdQ==} + '@img/sharp-wasm32@0.34.5': + resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [wasm32] - '@img/sharp-win32-arm64@0.34.2': - resolution: {integrity: sha512-cfP/r9FdS63VA5k0xiqaNaEoGxBg9k7uE+RQGzuK9fHt7jib4zAVVseR9LsE4gJcNWgT6APKMNnCcnyOtmSEUQ==} + '@img/sharp-win32-arm64@0.34.5': + resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [win32] - '@img/sharp-win32-ia32@0.34.2': - resolution: {integrity: sha512-QLjGGvAbj0X/FXl8n1WbtQ6iVBpWU7JO94u/P2M4a8CFYsvQi4GW2mRy/JqkRx0qpBzaOdKJKw8uc930EX2AHw==} + '@img/sharp-win32-ia32@0.34.5': + resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ia32] os: [win32] - '@img/sharp-win32-x64@0.34.2': - resolution: {integrity: sha512-aUdT6zEYtDKCaxkofmmJDJYGCf0+pJg3eU9/oBuqvEeoB9dKI6ZLc/1iLJCTuJQDO4ptntAlkUmHgGjyuobZbw==} + '@img/sharp-win32-x64@0.34.5': + resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [win32] + '@inquirer/external-editor@1.0.3': + resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@isaacs/balanced-match@4.0.1': resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} engines: {node: 20 || >=22} @@ -1651,56 +1739,56 @@ packages: '@napi-rs/wasm-runtime@0.2.4': resolution: {integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==} - '@next/env@15.3.8': - resolution: {integrity: sha512-SAfHg0g91MQVMPioeFeDjE+8UPF3j3BvHjs8ZKJAUz1BG7eMPvfCKOAgNWJ6s1MLNeP6O2InKQRTNblxPWuq+Q==} + '@next/env@15.4.10': + resolution: {integrity: sha512-knhmoJ0Vv7VRf6pZEPSnciUG1S4bIhWx+qTYBW/AjxEtlzsiNORPk8sFDCEvqLfmKuey56UB9FL1UdHEV3uBrg==} '@next/eslint-plugin-next@13.5.11': resolution: {integrity: sha512-0qjDhes9UTSxirt/dYzrv20hs8SUhcIOvlEioj5+XucVrBHihnAk6Om7Vzk+VZ2nRE7tcShm/6lH1xSkJ3XMpg==} - '@next/swc-darwin-arm64@15.3.5': - resolution: {integrity: sha512-lM/8tilIsqBq+2nq9kbTW19vfwFve0NR7MxfkuSUbRSgXlMQoJYg+31+++XwKVSXk4uT23G2eF/7BRIKdn8t8w==} + '@next/swc-darwin-arm64@15.4.8': + resolution: {integrity: sha512-Pf6zXp7yyQEn7sqMxur6+kYcywx5up1J849psyET7/8pG2gQTVMjU3NzgIt8SeEP5to3If/SaWmaA6H6ysBr1A==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@15.3.5': - resolution: {integrity: sha512-WhwegPQJ5IfoUNZUVsI9TRAlKpjGVK0tpJTL6KeiC4cux9774NYE9Wu/iCfIkL/5J8rPAkqZpG7n+EfiAfidXA==} + '@next/swc-darwin-x64@15.4.8': + resolution: {integrity: sha512-xla6AOfz68a6kq3gRQccWEvFC/VRGJmA/QuSLENSO7CZX5WIEkSz7r1FdXUjtGCQ1c2M+ndUAH7opdfLK1PQbw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@15.3.5': - resolution: {integrity: sha512-LVD6uMOZ7XePg3KWYdGuzuvVboxujGjbcuP2jsPAN3MnLdLoZUXKRc6ixxfs03RH7qBdEHCZjyLP/jBdCJVRJQ==} + '@next/swc-linux-arm64-gnu@15.4.8': + resolution: {integrity: sha512-y3fmp+1Px/SJD+5ntve5QLZnGLycsxsVPkTzAc3zUiXYSOlTPqT8ynfmt6tt4fSo1tAhDPmryXpYKEAcoAPDJw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@15.3.5': - resolution: {integrity: sha512-k8aVScYZ++BnS2P69ClK7v4nOu702jcF9AIHKu6llhHEtBSmM2zkPGl9yoqbSU/657IIIb0QHpdxEr0iW9z53A==} + '@next/swc-linux-arm64-musl@15.4.8': + resolution: {integrity: sha512-DX/L8VHzrr1CfwaVjBQr3GWCqNNFgyWJbeQ10Lx/phzbQo3JNAxUok1DZ8JHRGcL6PgMRgj6HylnLNndxn4Z6A==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-x64-gnu@15.3.5': - resolution: {integrity: sha512-2xYU0DI9DGN/bAHzVwADid22ba5d/xrbrQlr2U+/Q5WkFUzeL0TDR963BdrtLS/4bMmKZGptLeg6282H/S2i8A==} + '@next/swc-linux-x64-gnu@15.4.8': + resolution: {integrity: sha512-9fLAAXKAL3xEIFdKdzG5rUSvSiZTLLTCc6JKq1z04DR4zY7DbAPcRvNm3K1inVhTiQCs19ZRAgUerHiVKMZZIA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@15.3.5': - resolution: {integrity: sha512-TRYIqAGf1KCbuAB0gjhdn5Ytd8fV+wJSM2Nh2is/xEqR8PZHxfQuaiNhoF50XfY90sNpaRMaGhF6E+qjV1b9Tg==} + '@next/swc-linux-x64-musl@15.4.8': + resolution: {integrity: sha512-s45V7nfb5g7dbS7JK6XZDcapicVrMMvX2uYgOHP16QuKH/JA285oy6HcxlKqwUNaFY/UC6EvQ8QZUOo19cBKSA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-win32-arm64-msvc@15.3.5': - resolution: {integrity: sha512-h04/7iMEUSMY6fDGCvdanKqlO1qYvzNxntZlCzfE8i5P0uqzVQWQquU1TIhlz0VqGQGXLrFDuTJVONpqGqjGKQ==} + '@next/swc-win32-arm64-msvc@15.4.8': + resolution: {integrity: sha512-KjgeQyOAq7t/HzAJcWPGA8X+4WY03uSCZ2Ekk98S9OgCFsb6lfBE3dbUzUuEQAN2THbwYgFfxX2yFTCMm8Kehw==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@15.3.5': - resolution: {integrity: sha512-5fhH6fccXxnX2KhllnGhkYMndhOiLOLEiVGYjP2nizqeGWkN10sA9taATlXwake2E2XMvYZjjz0Uj7T0y+z1yw==} + '@next/swc-win32-x64-msvc@15.4.8': + resolution: {integrity: sha512-Exsmf/+42fWVnLMaZHzshukTBxZrSwuuLKFvqhGHJ+mC1AokqieLY/XzAl3jc/CqhXLqLY3RRjkKJ9YnLPcRWg==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -1982,8 +2070,8 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.17.2': - resolution: {integrity: sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ==} + '@rollup/rollup-android-arm-eabi@4.32.0': + resolution: {integrity: sha512-G2fUQQANtBPsNwiVFg4zKiPQyjVKZCUdQUol53R8E71J7AsheRMV/Yv/nB8giOcOVqP7//eB5xPqieBYZe9bGg==} cpu: [arm] os: [android] @@ -1992,8 +2080,8 @@ packages: cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.17.2': - resolution: {integrity: sha512-yeX/Usk7daNIVwkq2uGoq2BYJKZY1JfyLTaHO/jaiSwi/lsf8fTFoQW/n6IdAsx5tx+iotu2zCJwz8MxI6D/Bw==} + '@rollup/rollup-android-arm64@4.32.0': + resolution: {integrity: sha512-qhFwQ+ljoymC+j5lXRv8DlaJYY/+8vyvYmVx074zrLsu5ZGWYsJNLjPPVJJjhZQpyAKUGPydOq9hRLLNvh1s3A==} cpu: [arm64] os: [android] @@ -2002,8 +2090,8 @@ packages: cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.17.2': - resolution: {integrity: sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw==} + '@rollup/rollup-darwin-arm64@4.32.0': + resolution: {integrity: sha512-44n/X3lAlWsEY6vF8CzgCx+LQaoqWGN7TzUfbJDiTIOjJm4+L2Yq+r5a8ytQRGyPqgJDs3Rgyo8eVL7n9iW6AQ==} cpu: [arm64] os: [darwin] @@ -2012,8 +2100,8 @@ packages: cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.17.2': - resolution: {integrity: sha512-AtKwD0VEx0zWkL0ZjixEkp5tbNLzX+FCqGG1SvOu993HnSz4qDI6S4kGzubrEJAljpVkhRSlg5bzpV//E6ysTQ==} + '@rollup/rollup-darwin-x64@4.32.0': + resolution: {integrity: sha512-F9ct0+ZX5Np6+ZDztxiGCIvlCaW87HBdHcozUfsHnj1WCUTBUubAoanhHUfnUHZABlElyRikI0mgcw/qdEm2VQ==} cpu: [x64] os: [darwin] @@ -2022,18 +2110,28 @@ packages: cpu: [x64] os: [darwin] + '@rollup/rollup-freebsd-arm64@4.32.0': + resolution: {integrity: sha512-JpsGxLBB2EFXBsTLHfkZDsXSpSmKD3VxXCgBQtlPcuAqB8TlqtLcbeMhxXQkCDv1avgwNjF8uEIbq5p+Cee0PA==} + cpu: [arm64] + os: [freebsd] + '@rollup/rollup-freebsd-arm64@4.50.0': resolution: {integrity: sha512-UR1uTJFU/p801DvvBbtDD7z9mQL8J80xB0bR7DqW7UGQHRm/OaKzp4is7sQSdbt2pjjSS72eAtRh43hNduTnnQ==} cpu: [arm64] os: [freebsd] + '@rollup/rollup-freebsd-x64@4.32.0': + resolution: {integrity: sha512-wegiyBT6rawdpvnD9lmbOpx5Sph+yVZKHbhnSP9MqUEDX08G4UzMU+D87jrazGE7lRSyTRs6NEYHtzfkJ3FjjQ==} + cpu: [x64] + os: [freebsd] + '@rollup/rollup-freebsd-x64@4.50.0': resolution: {integrity: sha512-G/DKyS6PK0dD0+VEzH/6n/hWDNPDZSMBmqsElWnCRGrYOb2jC0VSupp7UAHHQ4+QILwkxSMaYIbQ72dktp8pKA==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.17.2': - resolution: {integrity: sha512-3reX2fUHqN7sffBNqmEyMQVj/CKhIHZd4y631duy0hZqI8Qoqf6lTtmAKvJFYa6bhU95B1D0WgzHkmTg33In0A==} + '@rollup/rollup-linux-arm-gnueabihf@4.32.0': + resolution: {integrity: sha512-3pA7xecItbgOs1A5H58dDvOUEboG5UfpTq3WzAdF54acBbUM+olDJAPkgj1GRJ4ZqE12DZ9/hNS2QZk166v92A==} cpu: [arm] os: [linux] @@ -2042,8 +2140,8 @@ packages: cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.17.2': - resolution: {integrity: sha512-uSqpsp91mheRgw96xtyAGP9FW5ChctTFEoXP0r5FAzj/3ZRv3Uxjtc7taRQSaQM/q85KEKjKsZuiZM3GyUivRg==} + '@rollup/rollup-linux-arm-musleabihf@4.32.0': + resolution: {integrity: sha512-Y7XUZEVISGyge51QbYyYAEHwpGgmRrAxQXO3siyYo2kmaj72USSG8LtlQQgAtlGfxYiOwu+2BdbPjzEpcOpRmQ==} cpu: [arm] os: [linux] @@ -2052,8 +2150,8 @@ packages: cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.17.2': - resolution: {integrity: sha512-EMMPHkiCRtE8Wdk3Qhtciq6BndLtstqZIroHiiGzB3C5LDJmIZcSzVtLRbwuXuUft1Cnv+9fxuDtDxz3k3EW2A==} + '@rollup/rollup-linux-arm64-gnu@4.32.0': + resolution: {integrity: sha512-r7/OTF5MqeBrZo5omPXcTnjvv1GsrdH8a8RerARvDFiDwFpDVDnJyByYM/nX+mvks8XXsgPUxkwe/ltaX2VH7w==} cpu: [arm64] os: [linux] @@ -2062,8 +2160,8 @@ packages: cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.17.2': - resolution: {integrity: sha512-NMPylUUZ1i0z/xJUIx6VUhISZDRT+uTWpBcjdv0/zkp7b/bQDF+NfnfdzuTiB1G6HTodgoFa93hp0O1xl+/UbA==} + '@rollup/rollup-linux-arm64-musl@4.32.0': + resolution: {integrity: sha512-HJbifC9vex9NqnlodV2BHVFNuzKL5OnsV2dvTw6e1dpZKkNjPG6WUq+nhEYV6Hv2Bv++BXkwcyoGlXnPrjAKXw==} cpu: [arm64] os: [linux] @@ -2072,13 +2170,18 @@ packages: cpu: [arm64] os: [linux] + '@rollup/rollup-linux-loongarch64-gnu@4.32.0': + resolution: {integrity: sha512-VAEzZTD63YglFlWwRj3taofmkV1V3xhebDXffon7msNz4b14xKsz7utO6F8F4cqt8K/ktTl9rm88yryvDpsfOw==} + cpu: [loong64] + os: [linux] + '@rollup/rollup-linux-loongarch64-gnu@4.50.0': resolution: {integrity: sha512-BGYSwJdMP0hT5CCmljuSNx7+k+0upweM2M4YGfFBjnFSZMHOLYR0gEEj/dxyYJ6Zc6AiSeaBY8dWOa11GF/ppQ==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.17.2': - resolution: {integrity: sha512-T19My13y8uYXPw/L/k0JYaX1fJKFT/PWdXiHr8mTbXWxjVF1t+8Xl31DgBBvEKclw+1b00Chg0hxE2O7bTG7GQ==} + '@rollup/rollup-linux-powerpc64le-gnu@4.32.0': + resolution: {integrity: sha512-Sts5DST1jXAc9YH/iik1C9QRsLcCoOScf3dfbY5i4kH9RJpKxiTBXqm7qU5O6zTXBTEZry69bGszr3SMgYmMcQ==} cpu: [ppc64] os: [linux] @@ -2087,8 +2190,8 @@ packages: cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.17.2': - resolution: {integrity: sha512-BOaNfthf3X3fOWAB+IJ9kxTgPmMqPPH5f5k2DcCsRrBIbWnaJCgX2ll77dV1TdSy9SaXTR5iDXRL8n7AnoP5cg==} + '@rollup/rollup-linux-riscv64-gnu@4.32.0': + resolution: {integrity: sha512-qhlXeV9AqxIyY9/R1h1hBD6eMvQCO34ZmdYvry/K+/MBs6d1nRFLm6BOiITLVI+nFAAB9kUB6sdJRKyVHXnqZw==} cpu: [riscv64] os: [linux] @@ -2102,8 +2205,8 @@ packages: cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.17.2': - resolution: {integrity: sha512-W0UP/x7bnn3xN2eYMql2T/+wpASLE5SjObXILTMPUBDB/Fg/FxC+gX4nvCfPBCbNhz51C+HcqQp2qQ4u25ok6g==} + '@rollup/rollup-linux-s390x-gnu@4.32.0': + resolution: {integrity: sha512-8ZGN7ExnV0qjXa155Rsfi6H8M4iBBwNLBM9lcVS+4NcSzOFaNqmt7djlox8pN1lWrRPMRRQ8NeDlozIGx3Omsw==} cpu: [s390x] os: [linux] @@ -2112,8 +2215,8 @@ packages: cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.17.2': - resolution: {integrity: sha512-Hy7pLwByUOuyaFC6mAr7m+oMC+V7qyifzs/nW2OJfC8H4hbCzOX07Ov0VFk/zP3kBsELWNFi7rJtgbKYsav9QQ==} + '@rollup/rollup-linux-x64-gnu@4.32.0': + resolution: {integrity: sha512-VDzNHtLLI5s7xd/VubyS10mq6TxvZBp+4NRWoW+Hi3tgV05RtVm4qK99+dClwTN1McA6PHwob6DEJ6PlXbY83A==} cpu: [x64] os: [linux] @@ -2122,8 +2225,8 @@ packages: cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.17.2': - resolution: {integrity: sha512-h1+yTWeYbRdAyJ/jMiVw0l6fOOm/0D1vNLui9iPuqgRGnXA0u21gAqOyB5iHjlM9MMfNOm9RHCQ7zLIzT0x11Q==} + '@rollup/rollup-linux-x64-musl@4.32.0': + resolution: {integrity: sha512-qcb9qYDlkxz9DxJo7SDhWxTWV1gFuwznjbTiov289pASxlfGbaOD54mgbs9+z94VwrXtKTu+2RqwlSTbiOqxGg==} cpu: [x64] os: [linux] @@ -2137,8 +2240,8 @@ packages: cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.17.2': - resolution: {integrity: sha512-tmdtXMfKAjy5+IQsVtDiCfqbynAQE/TQRpWdVataHmhMb9DCoJxp9vLcCBjEQWMiUYxO1QprH/HbY9ragCEFLA==} + '@rollup/rollup-win32-arm64-msvc@4.32.0': + resolution: {integrity: sha512-pFDdotFDMXW2AXVbfdUEfidPAk/OtwE/Hd4eYMTNVVaCQ6Yl8et0meDaKNL63L44Haxv4UExpv9ydSf3aSayDg==} cpu: [arm64] os: [win32] @@ -2147,8 +2250,8 @@ packages: cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.17.2': - resolution: {integrity: sha512-7II/QCSTAHuE5vdZaQEwJq2ZACkBpQDOmQsE6D6XUbnBHW8IAhm4eTufL6msLJorzrHDFv3CF8oCA/hSIRuZeQ==} + '@rollup/rollup-win32-ia32-msvc@4.32.0': + resolution: {integrity: sha512-/TG7WfrCAjeRNDvI4+0AAMoHxea/USWhAzf9PVDFHbcqrQ7hMMKp4jZIy4VEjk72AAfN5k4TiSMRXRKf/0akSw==} cpu: [ia32] os: [win32] @@ -2157,8 +2260,8 @@ packages: cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.17.2': - resolution: {integrity: sha512-TGGO7v7qOq4CYmSBVEYpI1Y5xDuCEnbVC5Vth8mOsW0gDSzxNrVERPc790IGHsrT2dQSimgMr9Ub3Y1Jci5/8w==} + '@rollup/rollup-win32-x64-msvc@4.32.0': + resolution: {integrity: sha512-5hqO5S3PTEO2E5VjCePxv40gIgyS2KvO7E7/vvC/NbIW4SIRamkMr1hqj+5Y67fbBWv/bQLB6KelBQmXlyCjWA==} cpu: [x64] os: [win32] @@ -2173,9 +2276,6 @@ packages: '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - '@swc/counter@0.1.3': - resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} @@ -2269,34 +2369,64 @@ packages: peerDependencies: vite: ^5.2.0 || ^6 - '@tanstack/history@1.132.0': - resolution: {integrity: sha512-GG2R9I6QSlbNR9fEuX2sQCigY6K28w51h2634TWmkaHXlzQw+rWuIWr4nAGM9doA+kWRi1LFSFMvAiG3cOqjXQ==} + '@tanstack/history@1.154.7': + resolution: {integrity: sha512-YBgwS9qG4rs1ZY/ZrhQtjOH8BG9Qa2wf2AsxT/SnZ4HZJ1DcCEqkoiHH0yH6CYvdDit31X5HokOqQrRSsZEwGA==} engines: {node: '>=12'} - '@tanstack/react-router@1.132.6': - resolution: {integrity: sha512-YfRHfEzOS2TtrP0+nQ98aUvqQBg6uNRZPzOT4X35lLOwmXJbK8dTzlZva5KhfT5wrkZfU5N8jSc0COB+ALwkLQ==} + '@tanstack/react-router@1.154.7': + resolution: {integrity: sha512-njUAjCIFgkwdUbW3M4rQoJd5LdioKHOOg6j/h01wQ8vMYoG+hPTVnMMInTjlVcRQTFto7Eh068y2heyQHBU5qg==} engines: {node: '>=12'} peerDependencies: react: '>=18.0.0 || >=19.0.0' react-dom: '>=18.0.0 || >=19.0.0' - '@tanstack/react-store@0.7.7': - resolution: {integrity: sha512-qqT0ufegFRDGSof9D/VqaZgjNgp4tRPHZIJq2+QIHkMUtHjaJ0lYrrXjeIUJvjnTbgPfSD1XgOMEt0lmANn6Zg==} + '@tanstack/react-store@0.8.0': + resolution: {integrity: sha512-1vG9beLIuB7q69skxK9r5xiLN3ztzIPfSQSs0GfeqWGO2tGIyInZx0x1COhpx97RKaONSoAb8C3dxacWksm1ow==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@tanstack/router-core@1.132.6': - resolution: {integrity: sha512-K5DqCnCSaxRw1BN63aZaZCkTKsGTXkAikzlTBSMVeijLE+D5P1Q9+m7xfuhVkr1sa/0yNNeP5VBmw28AZhnoJA==} + '@tanstack/router-core@1.154.7': + resolution: {integrity: sha512-YJu5mds5J/mY3TxGXsX/MNEl5Xe9cGt8KWrF3jS13HP9veSGhmC+kW1qZiyMe0Pnmtv3JRqAnMc2Rhsli5vgsA==} engines: {node: '>=12'} - '@tanstack/store@0.7.7': - resolution: {integrity: sha512-xa6pTan1bcaqYDS9BDpSiS63qa6EoDkPN9RsRaxHuDdVDNntzq3xNwR5YKTU/V3SkSyC9T4YVOPh2zRQN0nhIQ==} + '@tanstack/store@0.8.0': + resolution: {integrity: sha512-Om+BO0YfMZe//X2z0uLF2j+75nQga6TpTJgLJQBiq85aOyZNIhkCgleNcud2KQg4k4v9Y9l+Uhru3qWMPGTOzQ==} '@testing-library/dom@10.4.0': resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} engines: {node: '>=18'} + '@testing-library/react@16.2.0': + resolution: {integrity: sha512-2cSskAvA1QNtKc8Y9VJQRv0tm3hLVgxRGDB+KYhIaPQJ1I+RHbhIXcM+zClKXzMes/wshsMVzf4B9vS4IZpqDQ==} + engines: {node: '>=18'} + peerDependencies: + '@testing-library/dom': ^10.0.0 + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@testing-library/react@16.3.0': + resolution: {integrity: sha512-kFSyxiEDwv1WLl2fgsq6pPBbw5aWKrsY2/noi1Id0TK0UParSF62oFQFGHXIyaG4pp2tEub/Zlel+fjjZILDsw==} + engines: {node: '>=18'} + peerDependencies: + '@testing-library/dom': ^10.0.0 + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + '@testing-library/user-event@14.6.1': resolution: {integrity: sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==} engines: {node: '>=12', npm: '>=6'} @@ -2333,8 +2463,8 @@ packages: resolution: {integrity: sha512-Fgg31wv9QbLDA0SpTOXO3MaxySc4DKGLi8sna4/Utjo4r3ZRPdCt4UQee8BWr+Q5z21yifghREPJGYaEOEIACg==} deprecated: This is a stub types definition. dompurify provides its own type definitions, so you do not need this installed. - '@types/estree@1.0.5': - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} @@ -2570,11 +2700,11 @@ packages: peerDependencies: vite: ^4.2.0 || ^5.0.0 || ^6.0.0 - '@vitejs/plugin-vue@5.0.0': - resolution: {integrity: sha512-7x5e8X4J1Wi4NxudGjJBd2OFerAi/0nzF80ojCzvfj347WVr0YSn82C8BSsgwSHzlk9Kw5xnZfj0/7RLnNwP5w==} + '@vitejs/plugin-vue@5.2.4': + resolution: {integrity: sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: - vite: ^5.0.0 + vite: 7.1.12 vue: ^3.2.25 '@vitest/browser@3.1.3': @@ -2845,9 +2975,6 @@ packages: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} - argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -2968,6 +3095,9 @@ packages: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} + bidi-js@1.0.3: + resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} + binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} @@ -2981,18 +3111,15 @@ packages: bn.js@5.2.2: resolution: {integrity: sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==} - body-parser@2.2.0: - resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==} + body-parser@2.2.2: + resolution: {integrity: sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==} engines: {node: '>=18'} boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + brace-expansion@2.0.2: + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} @@ -3042,10 +3169,6 @@ packages: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} - busboy@1.6.0: - resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} - engines: {node: '>=10.16.0'} - bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} @@ -3092,8 +3215,8 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + chardet@2.1.1: + resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} check-error@2.1.1: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} @@ -3152,13 +3275,6 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - - color@4.2.3: - resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} - engines: {node: '>=12.5.0'} - colord@2.9.3: resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} @@ -3183,9 +3299,6 @@ packages: commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} @@ -3290,6 +3403,10 @@ packages: resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css-tree@3.1.0: + resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css-what@6.1.0: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} engines: {node: '>= 6'} @@ -3321,10 +3438,14 @@ packages: resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} engines: {node: '>=8.0.0'} - cssstyle@4.3.1: - resolution: {integrity: sha512-ZgW+Jgdd7i52AaLYCriF8Mxqft0gD/R9i9wi6RWBhs1pqdPEzPjym7rvRKi397WmQFf3SlyUsszhw+VVCbx79Q==} + cssstyle@4.6.0: + resolution: {integrity: sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==} engines: {node: '>=18'} + cssstyle@5.3.7: + resolution: {integrity: sha512-7D2EPVltRrsTkhpQmksIu+LxeWAIEk6wRDMJ1qljlv+CKHJM+cJLlfhWIzNA44eAsHXSNe3+vO6DW1yCYx8SuQ==} + engines: {node: '>=20'} + csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} @@ -3335,6 +3456,10 @@ packages: resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} engines: {node: '>=18'} + data-urls@6.0.1: + resolution: {integrity: sha512-euIQENZg6x8mj3fO6o9+fOW8MimUI4PpD/fZBhJfeioZVy9TUpM4UY7KjQNVZFlqwJ0UdzRDzkycB997HEq1BQ==} + engines: {node: '>=20'} + data-view-buffer@1.0.2: resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} engines: {node: '>= 0.4'} @@ -3370,6 +3495,15 @@ packages: supports-color: optional: true + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + decamelize-keys@1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} engines: {node: '>=0.10.0'} @@ -3378,8 +3512,8 @@ packages: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} - decimal.js@10.5.0: - resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==} + decimal.js@10.6.0: + resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} decode-uri-component@0.2.2: resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} @@ -3439,6 +3573,10 @@ packages: resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} engines: {node: '>=8'} + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3873,11 +4011,6 @@ packages: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - esquery@1.6.0: resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} engines: {node: '>=0.10'} @@ -3918,8 +4051,8 @@ packages: resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==} engines: {node: '>=12.0.0'} - express@5.1.0: - resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==} + express@5.2.1: + resolution: {integrity: sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==} engines: {node: '>= 18'} exsolve@1.0.5: @@ -3928,10 +4061,6 @@ packages: extendable-error@0.1.7: resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} - external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -4266,6 +4395,10 @@ packages: resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} engines: {node: '>=18'} + html-encoding-sniffer@6.0.0: + resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} @@ -4277,6 +4410,10 @@ packages: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} + http-errors@2.0.1: + resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} + engines: {node: '>= 0.8'} + http-proxy-agent@7.0.2: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} @@ -4289,14 +4426,14 @@ packages: resolution: {integrity: sha512-3gKm/gCSUipeLsRYZbbdA1BD83lBoWUkZ7G9VFrhWPAU76KwYo5KR8V28bpoPm/ygy0x5/GCbpRQdY7VLYCoIg==} hasBin: true - iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} + iconv-lite@0.7.2: + resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} + engines: {node: '>=0.10.0'} + icss-utils@5.1.0: resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} engines: {node: ^10 || ^12 || >= 14} @@ -4360,9 +4497,6 @@ packages: is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - is-arrayish@0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - is-async-function@2.1.1: resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} engines: {node: '>= 0.4'} @@ -4599,12 +4733,8 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true jsdom@26.1.0: @@ -4616,6 +4746,15 @@ packages: canvas: optional: true + jsdom@27.4.0: + resolution: {integrity: sha512-mjzqwWRD9Y1J1KUi7W97Gja1bwOOM5Ug0EZ6UDK3xS7j7mndrkwozHtSblfomlzyB4NepioNt+B2sOSzczVgtQ==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + peerDependencies: + canvas: ^3.0.0 + peerDependenciesMeta: + canvas: + optional: true + jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} @@ -4787,8 +4926,8 @@ packages: lodash.uniq@4.5.0: resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + lodash@4.17.23: + resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} log-symbols@4.1.0: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} @@ -4808,6 +4947,10 @@ packages: resolution: {integrity: sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==} engines: {node: 20 || >=22} + lru-cache@11.2.4: + resolution: {integrity: sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==} + engines: {node: 20 || >=22} + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -4862,6 +5005,9 @@ packages: mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + mdn-data@2.12.2: + resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} + media-typer@1.1.0: resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} engines: {node: '>= 0.8'} @@ -4909,8 +5055,8 @@ packages: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} - min-document@2.19.0: - resolution: {integrity: sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==} + min-document@2.19.1: + resolution: {integrity: sha512-8lqe85PkqQJzIcs2iD7xW/WSxcncC3/DPVbTOafKNJDIMXwGfwXS350mH4SJslomntN2iYtFBuC0yNO3CEap6g==} min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} @@ -4960,15 +5106,10 @@ packages: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} - minizlib@3.0.2: - resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} + minizlib@3.1.0: + resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} engines: {node: '>= 18'} - mkdirp@3.0.1: - resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} - engines: {node: '>=10'} - hasBin: true - mlly@1.7.4: resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} @@ -5001,13 +5142,13 @@ packages: resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} engines: {node: '>= 0.6'} - next@15.3.8: - resolution: {integrity: sha512-L+4c5Hlr84fuaNADZbB9+ceRX9/CzwxJ+obXIGHupboB/Q1OLbSUapFs4bO8hnS/E6zV/JDX7sG1QpKVR2bguA==} + next@15.4.10: + resolution: {integrity: sha512-itVlc79QjpKMFMRhP+kbGKaSG/gZM6RCvwhEbwmCNF06CdDiNaoHcbeg0PqkEa2GOcn8KJ0nnc7+yL7EjoYLHQ==} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 - '@playwright/test': ^1.41.2 + '@playwright/test': ^1.51.1 babel-plugin-react-compiler: '*' react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 @@ -5071,8 +5212,8 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - nwsapi@2.2.20: - resolution: {integrity: sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==} + nwsapi@2.2.23: + resolution: {integrity: sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==} nx@20.8.1: resolution: {integrity: sha512-73Uw8YXpsjeLqHSl7NMCmGdCs+8ynPzoNJFWAqVanPETEY9zPd5wevVQmeyzYtNNQU35uj6Os4iUzYunmwnFaA==} @@ -5141,10 +5282,6 @@ packages: resolution: {integrity: sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==} engines: {node: '>=10'} - os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - outdent@0.5.0: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} @@ -5213,6 +5350,9 @@ packages: parse5@7.3.0: resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + parse5@8.0.0: + resolution: {integrity: sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==} + parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} @@ -5273,10 +5413,6 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} - pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} @@ -5599,8 +5735,8 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - qs@6.14.0: - resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} + qs@6.14.1: + resolution: {integrity: sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==} engines: {node: '>=0.6'} quansync@0.2.10: @@ -5627,9 +5763,9 @@ packages: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} - raw-body@3.0.0: - resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==} - engines: {node: '>= 0.8'} + raw-body@3.0.2: + resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==} + engines: {node: '>= 0.10'} react-dom@19.1.4: resolution: {integrity: sha512-s2868ab/xo2SI6H4106A7aFI8Mrqa4xC6HZT/pBzYyQ3cBLqa88hu47xYD8xf+uECleN698Awn7RCWlkTiKnqQ==} @@ -5649,8 +5785,8 @@ packages: resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} engines: {node: '>=0.10.0'} - react-router@7.6.3: - resolution: {integrity: sha512-zf45LZp5skDC6I3jDLXQUu0u26jtuP4lEGbc7BbdyxenBN1vJSTA18czM2D+h5qyMBuMrD+9uB+mU37HIoKGRA==} + react-router@7.12.0: + resolution: {integrity: sha512-kTPDYPFzDVGIIGNLS5VJykK0HfHLY5MF3b+xj0/tTyNYL1gF1qs7u67Z9jEhQk2sQ98SUaHxlG31g1JtF7IfVw==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' @@ -5671,9 +5807,9 @@ packages: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} - read-yaml-file@1.1.0: - resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} - engines: {node: '>=6'} + read-yaml-file@2.1.0: + resolution: {integrity: sha512-UkRNRIwnhG+y7hpqnycCL/xbTk7+ia9VuVTC0S+zVbwd65DI9eUpRMfsWIGrCWxTU/mi+JW8cHQCrv+zfCbEPQ==} + engines: {node: '>=10.13'} readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} @@ -5785,8 +5921,8 @@ packages: peerDependencies: rollup: ^2.63.0 - rollup@4.17.2: - resolution: {integrity: sha512-/9ClTJPByC0U4zNLowV1tMBe8yMEAxewtR3cUNX5BoEpGH3dQEWpJLr6CLp0fPdYRF/fzVOgvDb1zXuakwF5kQ==} + rollup@4.32.0: + resolution: {integrity: sha512-JmrhfQR31Q4AuNBjjAX4s+a/Pu/Q8Q9iwjWBsjRH1q52SPFE2NqRMK6fUZKKnvKO6id+h7JIRf0oYsph53eATg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -5976,18 +6112,23 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.7.3: + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} + engines: {node: '>=10'} + hasBin: true + send@1.2.0: resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} engines: {node: '>= 18'} - seroval-plugins@1.3.3: - resolution: {integrity: sha512-16OL3NnUBw8JG1jBLUoZJsLnQq0n5Ua6aHalhJK4fMQkz1lqR7Osz1sA30trBtd9VUDc2NgkuRCn8+/pBwqZ+w==} + seroval-plugins@1.4.2: + resolution: {integrity: sha512-X7p4MEDTi+60o2sXZ4bnDBhgsUYDSkQEvzYZuJyFqWg9jcoPsHts5nrg5O956py2wyt28lUrBxk0M0/wU8URpA==} engines: {node: '>=10'} peerDependencies: - seroval: ^1.0 + seroval: 1.4.1 - seroval@1.3.2: - resolution: {integrity: sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ==} + seroval@1.4.1: + resolution: {integrity: sha512-9GOc+8T6LN4aByLN75uRvMbrwY5RDBW6lSlknsY4LEa9ZmWcxKcRe1G/Q3HZXjltxMHTrStnvrwAICxZrhldtg==} engines: {node: '>=10'} serve-static@2.2.0: @@ -6017,8 +6158,8 @@ packages: engines: {node: '>= 0.10'} hasBin: true - sharp@0.34.2: - resolution: {integrity: sha512-lszvBmB9QURERtyKT2bNmsgxXK0ShJrL/fvqlonCo7e6xBF8nT8xU6pW+PMIbLsz0RxQk3rgH9kd8UmvOzlMJg==} + sharp@0.34.5: + resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} shebang-command@2.0.0: @@ -6055,9 +6196,6 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - simple-swizzle@0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - sirv@3.0.1: resolution: {integrity: sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==} engines: {node: '>=18'} @@ -6104,9 +6242,6 @@ packages: resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} engines: {node: '>=6'} - sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - stable@0.1.8: resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' @@ -6118,6 +6253,10 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} + statuses@2.0.2: + resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} + engines: {node: '>= 0.8'} + std-env@3.9.0: resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} @@ -6128,10 +6267,6 @@ packages: stream-browserify@3.0.0: resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} - streamsearch@1.1.0: - resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} - engines: {node: '>=10.0.0'} - strict-uri-encode@2.0.0: resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} engines: {node: '>=4'} @@ -6185,6 +6320,10 @@ packages: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} + strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} @@ -6316,8 +6455,8 @@ packages: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} - tar@7.4.3: - resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} + tar@7.5.4: + resolution: {integrity: sha512-AN04xbWGrSTDmVwlI4/GTlIIwMFk/XEv7uL8aa57zuvRy6s4hdBed+lVq2fAZ89XDa7Us3ANXcE3Tvqvja1kTA==} engines: {node: '>=18'} term-size@2.2.1: @@ -6352,6 +6491,10 @@ packages: resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} engines: {node: '>=12.0.0'} + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + engines: {node: '>=12.0.0'} + tinypool@1.0.2: resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -6367,16 +6510,19 @@ packages: tldts-core@6.1.86: resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==} + tldts-core@7.0.19: + resolution: {integrity: sha512-lJX2dEWx0SGH4O6p+7FPwYmJ/bu1JbcGJ8RLaG9b7liIgZ85itUVEPbMtWRVrde/0fnDPEPHW10ZsKW3kVsE9A==} + tldts@6.1.86: resolution: {integrity: sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==} hasBin: true - tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} + tldts@7.0.19: + resolution: {integrity: sha512-8PWx8tvC4jDB39BQw1m4x8y5MH1BcQ5xHeL2n7UVFulMPH/3Q0uiamahFJ3lXA0zO2SUyRXuVVbWSDmstlt9YA==} + hasBin: true - tmp@0.2.3: - resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} + tmp@0.2.4: + resolution: {integrity: sha512-UdiSoX6ypifLmrfQ/XfiawN6hkjSBpCjhKxxZcWlUUmoXLaCKQU0bx4HF/tdDK2uzRuchf1txGvrWBzYREssoQ==} engines: {node: '>=14.14'} to-buffer@1.2.2: @@ -6399,6 +6545,10 @@ packages: resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==} engines: {node: '>=16'} + tough-cookie@6.0.0: + resolution: {integrity: sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w==} + engines: {node: '>=16'} + tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} @@ -6406,6 +6556,10 @@ packages: resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} engines: {node: '>=18'} + tr46@6.0.0: + resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==} + engines: {node: '>=20'} + trim-newlines@3.0.1: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} @@ -6546,8 +6700,8 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - use-sync-external-store@1.5.0: - resolution: {integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==} + use-sync-external-store@1.6.0: + resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -6581,8 +6735,8 @@ packages: engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true - vite@6.3.5: - resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==} + vite@6.4.1: + resolution: {integrity: sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -6621,8 +6775,8 @@ packages: yaml: optional: true - vite@7.1.4: - resolution: {integrity: sha512-X5QFK4SGynAeeIt+A7ZWnApdUyHYm+pzv/8/A57LqSGcI88U6R6ipOs3uCesdc6yl7nl+zNO0t8LmqAdXcQihw==} + vite@7.1.12: + resolution: {integrity: sha512-ZWyE8YXEXqJrrSLvYgrRP7p62OziLW7xI5HYGWFzOvupfAlrLvURSzv/FyGyy0eidogEM3ujU+kUG1zuHgb6Ug==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -6661,22 +6815,6 @@ packages: yaml: optional: true - vitest-browser-react@0.1.1: - resolution: {integrity: sha512-n9l+sIAexKqqfBuEkjVGdfZ4xAn1Gn/+wc4Mo8KsUSUOVoM9evSY0rVXdMIzCQqloT/zvmFGAtziFINkqu+t7g==} - engines: {node: ^18.0.0 || >=20.0.0} - peerDependencies: - '@types/react': 19.1.5 - '@types/react-dom': 19.1.5 - '@vitest/browser': '>=2.1.0' - react: '>18.0.0' - react-dom: '>18.0.0' - vitest: '>=2.1.0' - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - vitest@3.0.8: resolution: {integrity: sha512-dfqAsNqRGUc8hB9OVR2P0w8PZPEckti2+5rdZip0WIz9WW0MnImJ8XiR61QhqLa92EQzKP2uPkzenKOAHyEIbA==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -6779,6 +6917,10 @@ packages: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} + webidl-conversions@8.0.1: + resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} + engines: {node: '>=20'} + whatwg-encoding@3.1.1: resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} engines: {node: '>=18'} @@ -6788,10 +6930,18 @@ packages: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} engines: {node: '>=18'} + whatwg-mimetype@5.0.0: + resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==} + engines: {node: '>=20'} + whatwg-url@14.2.0: resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} engines: {node: '>=18'} + whatwg-url@15.1.0: + resolution: {integrity: sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==} + engines: {node: '>=20'} + whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -6856,6 +7006,18 @@ packages: utf-8-validate: optional: true + ws@8.19.0: + resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + xml-name-validator@4.0.0: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} @@ -6908,19 +7070,38 @@ packages: snapshots: + '@acemir/cssom@0.9.31': {} + '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 - '@asamuzakjp/css-color@3.1.7': + '@asamuzakjp/css-color@3.2.0': dependencies: - '@csstools/css-calc': 2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-color-parser': 3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 lru-cache: 10.4.3 - optional: true + + '@asamuzakjp/css-color@4.1.1': + dependencies: + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + lru-cache: 11.2.4 + + '@asamuzakjp/dom-selector@6.7.6': + dependencies: + '@asamuzakjp/nwsapi': 2.3.9 + bidi-js: 1.0.3 + css-tree: 3.1.0 + is-potential-custom-element-name: 1.0.1 + lru-cache: 11.2.4 + + '@asamuzakjp/nwsapi@2.3.9': {} '@asgardeo/auth-js@5.1.2': {} @@ -7069,9 +7250,9 @@ snapshots: '@bufbuild/protobuf@2.7.0': optional: true - '@changesets/apply-release-plan@7.0.12': + '@changesets/apply-release-plan@7.0.14': dependencies: - '@changesets/config': 3.1.1 + '@changesets/config': 3.1.2 '@changesets/get-version-range-type': 0.4.0 '@changesets/git': 3.0.4 '@changesets/should-skip-package': 0.1.2 @@ -7083,16 +7264,16 @@ snapshots: outdent: 0.5.0 prettier: 2.8.8 resolve-from: 5.0.0 - semver: 7.7.2 + semver: 7.7.3 - '@changesets/assemble-release-plan@6.0.8': + '@changesets/assemble-release-plan@6.0.9': dependencies: '@changesets/errors': 0.2.0 '@changesets/get-dependents-graph': 2.1.3 '@changesets/should-skip-package': 0.1.2 '@changesets/types': 6.1.0 '@manypkg/get-packages': 1.1.3 - semver: 7.7.2 + semver: 7.7.3 '@changesets/changelog-git@0.2.1': dependencies: @@ -7106,38 +7287,40 @@ snapshots: transitivePeerDependencies: - encoding - '@changesets/cli@2.29.4': + '@changesets/cli@2.29.8(@types/node@24.0.3)': dependencies: - '@changesets/apply-release-plan': 7.0.12 - '@changesets/assemble-release-plan': 6.0.8 + '@changesets/apply-release-plan': 7.0.14 + '@changesets/assemble-release-plan': 6.0.9 '@changesets/changelog-git': 0.2.1 - '@changesets/config': 3.1.1 + '@changesets/config': 3.1.2 '@changesets/errors': 0.2.0 '@changesets/get-dependents-graph': 2.1.3 - '@changesets/get-release-plan': 4.0.12 + '@changesets/get-release-plan': 4.0.14 '@changesets/git': 3.0.4 '@changesets/logger': 0.1.1 '@changesets/pre': 2.0.2 - '@changesets/read': 0.6.5 + '@changesets/read': 0.6.6 '@changesets/should-skip-package': 0.1.2 '@changesets/types': 6.1.0 '@changesets/write': 0.4.0 + '@inquirer/external-editor': 1.0.3(@types/node@24.0.3) '@manypkg/get-packages': 1.1.3 ansi-colors: 4.1.3 ci-info: 3.9.0 enquirer: 2.4.1 - external-editor: 3.1.0 fs-extra: 7.0.1 mri: 1.2.0 p-limit: 2.3.0 package-manager-detector: 0.2.11 picocolors: 1.1.1 resolve-from: 5.0.0 - semver: 7.7.2 + semver: 7.7.3 spawndamnit: 3.0.1 term-size: 2.2.1 + transitivePeerDependencies: + - '@types/node' - '@changesets/config@3.1.1': + '@changesets/config@3.1.2': dependencies: '@changesets/errors': 0.2.0 '@changesets/get-dependents-graph': 2.1.3 @@ -7156,7 +7339,7 @@ snapshots: '@changesets/types': 6.1.0 '@manypkg/get-packages': 1.1.3 picocolors: 1.1.1 - semver: 7.7.2 + semver: 7.7.3 '@changesets/get-github-info@0.6.0': dependencies: @@ -7165,12 +7348,12 @@ snapshots: transitivePeerDependencies: - encoding - '@changesets/get-release-plan@4.0.12': + '@changesets/get-release-plan@4.0.14': dependencies: - '@changesets/assemble-release-plan': 6.0.8 - '@changesets/config': 3.1.1 + '@changesets/assemble-release-plan': 6.0.9 + '@changesets/config': 3.1.2 '@changesets/pre': 2.0.2 - '@changesets/read': 0.6.5 + '@changesets/read': 0.6.6 '@changesets/types': 6.1.0 '@manypkg/get-packages': 1.1.3 @@ -7188,10 +7371,10 @@ snapshots: dependencies: picocolors: 1.1.1 - '@changesets/parse@0.4.1': + '@changesets/parse@0.4.2': dependencies: '@changesets/types': 6.1.0 - js-yaml: 3.14.1 + js-yaml: 4.1.1 '@changesets/pre@2.0.2': dependencies: @@ -7200,11 +7383,11 @@ snapshots: '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 - '@changesets/read@0.6.5': + '@changesets/read@0.6.6': dependencies: '@changesets/git': 3.0.4 '@changesets/logger': 0.1.1 - '@changesets/parse': 0.4.1 + '@changesets/parse': 0.4.2 '@changesets/types': 6.1.0 fs-extra: 7.0.1 p-filter: 2.1.0 @@ -7226,36 +7409,33 @@ snapshots: human-id: 4.1.1 prettier: 2.8.8 - '@csstools/color-helpers@5.0.2': - optional: true + '@csstools/color-helpers@5.1.0': {} - '@csstools/css-calc@2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - optional: true + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 - '@csstools/css-color-parser@3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + '@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: - '@csstools/color-helpers': 5.0.2 - '@csstools/css-calc': 2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 - optional: true + '@csstools/color-helpers': 5.1.0 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 '@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1)': dependencies: '@csstools/css-tokenizer': 2.4.1 - '@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3)': + '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': dependencies: - '@csstools/css-tokenizer': 3.0.3 - optional: true + '@csstools/css-tokenizer': 3.0.4 + + '@csstools/css-syntax-patches-for-csstree@1.0.25': {} '@csstools/css-tokenizer@2.4.1': {} - '@csstools/css-tokenizer@3.0.3': - optional: true + '@csstools/css-tokenizer@3.0.4': {} '@csstools/media-query-list-parser@2.1.13(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1)': dependencies: @@ -7275,6 +7455,11 @@ snapshots: dependencies: tslib: 2.8.1 + '@emnapi/runtime@1.8.1': + dependencies: + tslib: 2.8.1 + optional: true + '@emnapi/wasi-threads@1.0.2': dependencies: tslib: 2.8.1 @@ -7515,6 +7700,10 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 + '@eslint/core@0.15.2': + dependencies: + '@types/json-schema': 7.0.15 + '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 @@ -7523,7 +7712,7 @@ snapshots: globals: 13.24.0 ignore: 5.3.2 import-fresh: 3.3.1 - js-yaml: 4.1.0 + js-yaml: 4.1.1 minimatch: 3.1.2 strip-json-comments: 3.1.1 transitivePeerDependencies: @@ -7537,7 +7726,7 @@ snapshots: globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.1 - js-yaml: 4.1.0 + js-yaml: 4.1.1 minimatch: 3.1.2 strip-json-comments: 3.1.1 transitivePeerDependencies: @@ -7549,11 +7738,13 @@ snapshots: '@eslint/object-schema@2.1.6': {} - '@eslint/plugin-kit@0.2.8': + '@eslint/plugin-kit@0.3.4': dependencies: - '@eslint/core': 0.13.0 + '@eslint/core': 0.15.2 levn: 0.4.1 + '@exodus/bytes@1.9.0': {} + '@floating-ui/core@1.7.1': dependencies: '@floating-ui/utils': 0.2.9 @@ -7602,87 +7793,110 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@img/sharp-darwin-arm64@0.34.2': + '@img/colour@1.0.0': + optional: true + + '@img/sharp-darwin-arm64@0.34.5': optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.1.0 + '@img/sharp-libvips-darwin-arm64': 1.2.4 optional: true - '@img/sharp-darwin-x64@0.34.2': + '@img/sharp-darwin-x64@0.34.5': optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.1.0 + '@img/sharp-libvips-darwin-x64': 1.2.4 optional: true - '@img/sharp-libvips-darwin-arm64@1.1.0': + '@img/sharp-libvips-darwin-arm64@1.2.4': optional: true - '@img/sharp-libvips-darwin-x64@1.1.0': + '@img/sharp-libvips-darwin-x64@1.2.4': optional: true - '@img/sharp-libvips-linux-arm64@1.1.0': + '@img/sharp-libvips-linux-arm64@1.2.4': optional: true - '@img/sharp-libvips-linux-arm@1.1.0': + '@img/sharp-libvips-linux-arm@1.2.4': optional: true - '@img/sharp-libvips-linux-ppc64@1.1.0': + '@img/sharp-libvips-linux-ppc64@1.2.4': optional: true - '@img/sharp-libvips-linux-s390x@1.1.0': + '@img/sharp-libvips-linux-riscv64@1.2.4': optional: true - '@img/sharp-libvips-linux-x64@1.1.0': + '@img/sharp-libvips-linux-s390x@1.2.4': optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.1.0': + '@img/sharp-libvips-linux-x64@1.2.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + optional: true + + '@img/sharp-linux-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.2.4 optional: true - '@img/sharp-libvips-linuxmusl-x64@1.1.0': + '@img/sharp-linux-arm@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.2.4 optional: true - '@img/sharp-linux-arm64@0.34.2': + '@img/sharp-linux-ppc64@0.34.5': optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.1.0 + '@img/sharp-libvips-linux-ppc64': 1.2.4 optional: true - '@img/sharp-linux-arm@0.34.2': + '@img/sharp-linux-riscv64@0.34.5': optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.1.0 + '@img/sharp-libvips-linux-riscv64': 1.2.4 optional: true - '@img/sharp-linux-s390x@0.34.2': + '@img/sharp-linux-s390x@0.34.5': optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.1.0 + '@img/sharp-libvips-linux-s390x': 1.2.4 optional: true - '@img/sharp-linux-x64@0.34.2': + '@img/sharp-linux-x64@0.34.5': optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.1.0 + '@img/sharp-libvips-linux-x64': 1.2.4 optional: true - '@img/sharp-linuxmusl-arm64@0.34.2': + '@img/sharp-linuxmusl-arm64@0.34.5': optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.1.0 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 optional: true - '@img/sharp-linuxmusl-x64@0.34.2': + '@img/sharp-linuxmusl-x64@0.34.5': optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.1.0 + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 optional: true - '@img/sharp-wasm32@0.34.2': + '@img/sharp-wasm32@0.34.5': dependencies: - '@emnapi/runtime': 1.4.3 + '@emnapi/runtime': 1.8.1 optional: true - '@img/sharp-win32-arm64@0.34.2': + '@img/sharp-win32-arm64@0.34.5': optional: true - '@img/sharp-win32-ia32@0.34.2': + '@img/sharp-win32-ia32@0.34.5': optional: true - '@img/sharp-win32-x64@0.34.2': + '@img/sharp-win32-x64@0.34.5': optional: true + '@inquirer/external-editor@1.0.3(@types/node@24.0.3)': + dependencies: + chardet: 2.1.1 + iconv-lite: 0.7.2 + optionalDependencies: + '@types/node': 24.0.3 + '@isaacs/balanced-match@4.0.1': {} '@isaacs/brace-expansion@5.0.0': @@ -7762,7 +7976,7 @@ snapshots: '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 globby: 11.1.0 - read-yaml-file: 1.1.0 + read-yaml-file: 2.1.0 '@microsoft/tsdoc-config@0.16.2': dependencies: @@ -7779,34 +7993,34 @@ snapshots: '@emnapi/runtime': 1.4.3 '@tybys/wasm-util': 0.9.0 - '@next/env@15.3.8': {} + '@next/env@15.4.10': {} '@next/eslint-plugin-next@13.5.11': dependencies: glob: 7.1.7 - '@next/swc-darwin-arm64@15.3.5': + '@next/swc-darwin-arm64@15.4.8': optional: true - '@next/swc-darwin-x64@15.3.5': + '@next/swc-darwin-x64@15.4.8': optional: true - '@next/swc-linux-arm64-gnu@15.3.5': + '@next/swc-linux-arm64-gnu@15.4.8': optional: true - '@next/swc-linux-arm64-musl@15.3.5': + '@next/swc-linux-arm64-musl@15.4.8': optional: true - '@next/swc-linux-x64-gnu@15.3.5': + '@next/swc-linux-x64-gnu@15.4.8': optional: true - '@next/swc-linux-x64-musl@15.3.5': + '@next/swc-linux-x64-musl@15.4.8': optional: true - '@next/swc-win32-arm64-msvc@15.3.5': + '@next/swc-win32-arm64-msvc@15.4.8': optional: true - '@next/swc-win32-x64-msvc@15.3.5': + '@next/swc-win32-x64-msvc@15.4.8': optional: true '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': @@ -7956,50 +8170,50 @@ snapshots: optionalDependencies: '@types/react': 19.1.5 - '@rollup/plugin-commonjs@25.0.7(rollup@4.17.2)': + '@rollup/plugin-commonjs@25.0.7(rollup@4.32.0)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.17.2) + '@rollup/pluginutils': 5.1.4(rollup@4.32.0) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.30.17 optionalDependencies: - rollup: 4.17.2 + rollup: 4.32.0 - '@rollup/plugin-image@3.0.3(rollup@4.17.2)': + '@rollup/plugin-image@3.0.3(rollup@4.32.0)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.17.2) + '@rollup/pluginutils': 5.1.4(rollup@4.32.0) mini-svg-data-uri: 1.4.4 optionalDependencies: - rollup: 4.17.2 + rollup: 4.32.0 - '@rollup/plugin-inject@5.0.5(rollup@4.17.2)': + '@rollup/plugin-inject@5.0.5(rollup@4.32.0)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.17.2) + '@rollup/pluginutils': 5.1.4(rollup@4.32.0) estree-walker: 2.0.2 magic-string: 0.30.17 optionalDependencies: - rollup: 4.17.2 + rollup: 4.32.0 - '@rollup/plugin-node-resolve@15.2.3(rollup@4.17.2)': + '@rollup/plugin-node-resolve@15.2.3(rollup@4.32.0)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.17.2) + '@rollup/pluginutils': 5.1.4(rollup@4.32.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.10 optionalDependencies: - rollup: 4.17.2 + rollup: 4.32.0 - '@rollup/plugin-typescript@11.1.6(rollup@4.17.2)(tslib@2.6.2)(typescript@5.1.6)': + '@rollup/plugin-typescript@11.1.6(rollup@4.32.0)(tslib@2.6.2)(typescript@5.1.6)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.17.2) + '@rollup/pluginutils': 5.1.4(rollup@4.32.0) resolve: 1.22.10 typescript: 5.1.6 optionalDependencies: - rollup: 4.17.2 + rollup: 4.32.0 tslib: 2.6.2 '@rollup/pluginutils@4.2.1': @@ -8007,78 +8221,87 @@ snapshots: estree-walker: 2.0.2 picomatch: 2.3.1 - '@rollup/pluginutils@5.1.4(rollup@4.17.2)': + '@rollup/pluginutils@5.1.4(rollup@4.32.0)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.17.2 + rollup: 4.32.0 - '@rollup/rollup-android-arm-eabi@4.17.2': + '@rollup/rollup-android-arm-eabi@4.32.0': optional: true '@rollup/rollup-android-arm-eabi@4.50.0': optional: true - '@rollup/rollup-android-arm64@4.17.2': + '@rollup/rollup-android-arm64@4.32.0': optional: true '@rollup/rollup-android-arm64@4.50.0': optional: true - '@rollup/rollup-darwin-arm64@4.17.2': + '@rollup/rollup-darwin-arm64@4.32.0': optional: true '@rollup/rollup-darwin-arm64@4.50.0': optional: true - '@rollup/rollup-darwin-x64@4.17.2': + '@rollup/rollup-darwin-x64@4.32.0': optional: true '@rollup/rollup-darwin-x64@4.50.0': optional: true + '@rollup/rollup-freebsd-arm64@4.32.0': + optional: true + '@rollup/rollup-freebsd-arm64@4.50.0': optional: true + '@rollup/rollup-freebsd-x64@4.32.0': + optional: true + '@rollup/rollup-freebsd-x64@4.50.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.17.2': + '@rollup/rollup-linux-arm-gnueabihf@4.32.0': optional: true '@rollup/rollup-linux-arm-gnueabihf@4.50.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.17.2': + '@rollup/rollup-linux-arm-musleabihf@4.32.0': optional: true '@rollup/rollup-linux-arm-musleabihf@4.50.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.17.2': + '@rollup/rollup-linux-arm64-gnu@4.32.0': optional: true '@rollup/rollup-linux-arm64-gnu@4.50.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.17.2': + '@rollup/rollup-linux-arm64-musl@4.32.0': optional: true '@rollup/rollup-linux-arm64-musl@4.50.0': optional: true + '@rollup/rollup-linux-loongarch64-gnu@4.32.0': + optional: true + '@rollup/rollup-linux-loongarch64-gnu@4.50.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.17.2': + '@rollup/rollup-linux-powerpc64le-gnu@4.32.0': optional: true '@rollup/rollup-linux-ppc64-gnu@4.50.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.17.2': + '@rollup/rollup-linux-riscv64-gnu@4.32.0': optional: true '@rollup/rollup-linux-riscv64-gnu@4.50.0': @@ -8087,19 +8310,19 @@ snapshots: '@rollup/rollup-linux-riscv64-musl@4.50.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.17.2': + '@rollup/rollup-linux-s390x-gnu@4.32.0': optional: true '@rollup/rollup-linux-s390x-gnu@4.50.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.17.2': + '@rollup/rollup-linux-x64-gnu@4.32.0': optional: true '@rollup/rollup-linux-x64-gnu@4.50.0': optional: true - '@rollup/rollup-linux-x64-musl@4.17.2': + '@rollup/rollup-linux-x64-musl@4.32.0': optional: true '@rollup/rollup-linux-x64-musl@4.50.0': @@ -8108,19 +8331,19 @@ snapshots: '@rollup/rollup-openharmony-arm64@4.50.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.17.2': + '@rollup/rollup-win32-arm64-msvc@4.32.0': optional: true '@rollup/rollup-win32-arm64-msvc@4.50.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.17.2': + '@rollup/rollup-win32-ia32-msvc@4.32.0': optional: true '@rollup/rollup-win32-ia32-msvc@4.50.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.17.2': + '@rollup/rollup-win32-x64-msvc@4.32.0': optional: true '@rollup/rollup-win32-x64-msvc@4.50.0': @@ -8130,8 +8353,6 @@ snapshots: '@sinclair/typebox@0.27.8': {} - '@swc/counter@0.1.3': {} - '@swc/helpers@0.5.15': dependencies: tslib: 2.8.1 @@ -8185,7 +8406,7 @@ snapshots: '@tailwindcss/oxide@4.1.8': dependencies: detect-libc: 2.0.4 - tar: 7.4.3 + tar: 7.5.4 optionalDependencies: '@tailwindcss/oxide-android-arm64': 4.1.8 '@tailwindcss/oxide-darwin-arm64': 4.1.8 @@ -8200,44 +8421,44 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.1.8 '@tailwindcss/oxide-win32-x64-msvc': 4.1.8 - '@tailwindcss/vite@4.1.8(vite@6.3.5(@types/node@24.0.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0))': + '@tailwindcss/vite@4.1.8(vite@6.4.1(@types/node@24.0.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0))': dependencies: '@tailwindcss/node': 4.1.8 '@tailwindcss/oxide': 4.1.8 tailwindcss: 4.1.8 - vite: 6.3.5(@types/node@24.0.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) + vite: 6.4.1(@types/node@24.0.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) - '@tanstack/history@1.132.0': {} + '@tanstack/history@1.154.7': {} - '@tanstack/react-router@1.132.6(react-dom@19.1.4(react@19.1.4))(react@19.1.4)': + '@tanstack/react-router@1.154.7(react-dom@19.1.4(react@19.1.4))(react@19.1.4)': dependencies: - '@tanstack/history': 1.132.0 - '@tanstack/react-store': 0.7.7(react-dom@19.1.4(react@19.1.4))(react@19.1.4) - '@tanstack/router-core': 1.132.6 + '@tanstack/history': 1.154.7 + '@tanstack/react-store': 0.8.0(react-dom@19.1.4(react@19.1.4))(react@19.1.4) + '@tanstack/router-core': 1.154.7 isbot: 5.1.31 react: 19.1.4 react-dom: 19.1.4(react@19.1.4) tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - '@tanstack/react-store@0.7.7(react-dom@19.1.4(react@19.1.4))(react@19.1.4)': + '@tanstack/react-store@0.8.0(react-dom@19.1.4(react@19.1.4))(react@19.1.4)': dependencies: - '@tanstack/store': 0.7.7 + '@tanstack/store': 0.8.0 react: 19.1.4 react-dom: 19.1.4(react@19.1.4) - use-sync-external-store: 1.5.0(react@19.1.4) + use-sync-external-store: 1.6.0(react@19.1.4) - '@tanstack/router-core@1.132.6': + '@tanstack/router-core@1.154.7': dependencies: - '@tanstack/history': 1.132.0 - '@tanstack/store': 0.7.7 + '@tanstack/history': 1.154.7 + '@tanstack/store': 0.8.0 cookie-es: 2.0.0 - seroval: 1.3.2 - seroval-plugins: 1.3.3(seroval@1.3.2) + seroval: 1.4.1 + seroval-plugins: 1.4.2(seroval@1.4.1) tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - '@tanstack/store@0.7.7': {} + '@tanstack/store@0.8.0': {} '@testing-library/dom@10.4.0': dependencies: @@ -8250,6 +8471,26 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 + '@testing-library/react@16.2.0(@testing-library/dom@10.4.0)(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.4(react@19.1.4))(react@19.1.4)': + dependencies: + '@babel/runtime': 7.27.1 + '@testing-library/dom': 10.4.0 + react: 19.1.4 + react-dom: 19.1.4(react@19.1.4) + optionalDependencies: + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5(@types/react@19.1.5) + + '@testing-library/react@16.3.0(@testing-library/dom@10.4.0)(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(react-dom@19.1.4(react@19.1.4))(react@19.1.4)': + dependencies: + '@babel/runtime': 7.27.1 + '@testing-library/dom': 10.4.0 + react: 19.1.4 + react-dom: 19.1.4(react@19.1.4) + optionalDependencies: + '@types/react': 19.1.5 + '@types/react-dom': 19.1.5(@types/react@19.1.5) + '@testing-library/user-event@14.6.1(@testing-library/dom@10.4.0)': dependencies: '@testing-library/dom': 10.4.0 @@ -8293,7 +8534,7 @@ snapshots: dependencies: dompurify: 3.2.7 - '@types/estree@1.0.5': {} + '@types/estree@1.0.6': {} '@types/estree@1.0.8': {} @@ -8536,7 +8777,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 8.30.1(typescript@5.8.3) '@typescript-eslint/utils': 8.30.1(eslint@9.25.0(jiti@2.6.0))(typescript@5.8.3) - debug: 4.4.1 + debug: 4.4.3 eslint: 9.25.0(jiti@2.6.0) ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 @@ -8678,36 +8919,36 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vitejs/plugin-basic-ssl@2.0.0(vite@6.3.5(@types/node@24.0.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0))': + '@vitejs/plugin-basic-ssl@2.0.0(vite@6.4.1(@types/node@24.0.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0))': dependencies: - vite: 6.3.5(@types/node@24.0.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) + vite: 6.4.1(@types/node@24.0.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) - '@vitejs/plugin-react@4.4.1(vite@6.3.5(@types/node@24.0.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0))': + '@vitejs/plugin-react@4.4.1(vite@6.4.1(@types/node@24.0.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0))': dependencies: '@babel/core': 7.27.1 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.27.1) '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.27.1) '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 6.3.5(@types/node@24.0.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) + vite: 6.4.1(@types/node@24.0.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.0.0(vite@7.1.4(@types/node@20.12.7)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0))(vue@3.5.13(typescript@5.1.6))': + '@vitejs/plugin-vue@5.2.4(vite@7.1.12(@types/node@20.12.7)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0))(vue@3.5.13(typescript@5.1.6))': dependencies: - vite: 7.1.4(@types/node@20.12.7)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0) + vite: 7.1.12(@types/node@20.12.7)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0) vue: 3.5.13(typescript@5.1.6) - '@vitest/browser@3.1.3(playwright@1.55.1)(vite@6.3.5(@types/node@22.15.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0))(vitest@3.1.3)': + '@vitest/browser@3.1.3(playwright@1.55.1)(vite@6.4.1(@types/node@22.15.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0))(vitest@3.1.3)': dependencies: '@testing-library/dom': 10.4.0 '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.0) - '@vitest/mocker': 3.1.3(vite@6.3.5(@types/node@22.15.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0)) + '@vitest/mocker': 3.1.3(vite@6.4.1(@types/node@22.15.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0)) '@vitest/utils': 3.1.3 magic-string: 0.30.17 sirv: 3.0.1 tinyrainbow: 2.0.0 - vitest: 3.1.3(@types/node@22.15.3)(@vitest/browser@3.1.3)(jiti@2.6.0)(jsdom@26.1.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) + vitest: 3.1.3(@types/node@22.15.3)(@vitest/browser@3.1.3)(jiti@2.6.0)(jsdom@27.4.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) ws: 8.18.2 optionalDependencies: playwright: 1.55.1 @@ -8717,16 +8958,16 @@ snapshots: - utf-8-validate - vite - '@vitest/browser@3.1.3(playwright@1.56.1)(vite@6.3.5(@types/node@22.15.30)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0))(vitest@3.1.3)': + '@vitest/browser@3.1.3(playwright@1.56.1)(vite@6.4.1(@types/node@22.15.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0))(vitest@3.1.3)': dependencies: '@testing-library/dom': 10.4.0 '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.0) - '@vitest/mocker': 3.1.3(vite@6.3.5(@types/node@22.15.30)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0)) + '@vitest/mocker': 3.1.3(vite@6.4.1(@types/node@22.15.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0)) '@vitest/utils': 3.1.3 magic-string: 0.30.17 sirv: 3.0.1 tinyrainbow: 2.0.0 - vitest: 3.1.3(@types/node@22.15.30)(@vitest/browser@3.1.3)(jiti@2.6.0)(jsdom@26.1.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) + vitest: 3.1.3(@types/node@22.15.3)(@vitest/browser@3.1.3)(jiti@2.6.0)(jsdom@27.4.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) ws: 8.18.2 optionalDependencies: playwright: 1.56.1 @@ -8737,7 +8978,27 @@ snapshots: - vite optional: true - '@vitest/coverage-v8@3.0.8(vitest@3.0.8(@types/node@20.12.7)(jiti@2.6.0)(jsdom@26.1.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0))': + '@vitest/browser@3.1.3(playwright@1.56.1)(vite@6.4.1(@types/node@22.15.30)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0))(vitest@3.1.3)': + dependencies: + '@testing-library/dom': 10.4.0 + '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.0) + '@vitest/mocker': 3.1.3(vite@6.4.1(@types/node@22.15.30)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0)) + '@vitest/utils': 3.1.3 + magic-string: 0.30.17 + sirv: 3.0.1 + tinyrainbow: 2.0.0 + vitest: 3.1.3(@types/node@22.15.30)(@vitest/browser@3.1.3)(jiti@2.6.0)(jsdom@27.4.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) + ws: 8.18.2 + optionalDependencies: + playwright: 1.56.1 + transitivePeerDependencies: + - bufferutil + - msw + - utf-8-validate + - vite + optional: true + + '@vitest/coverage-v8@3.0.8(vitest@3.0.8(@types/node@20.12.7)(jiti@2.6.0)(jsdom@27.4.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 @@ -8751,7 +9012,7 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.0.8(@types/node@20.12.7)(jiti@2.6.0)(jsdom@26.1.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0) + vitest: 3.0.8(@types/node@20.12.7)(jiti@2.6.0)(jsdom@27.4.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0) transitivePeerDependencies: - supports-color @@ -8769,29 +9030,29 @@ snapshots: chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.0.8(vite@6.3.5(@types/node@20.12.7)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0))': + '@vitest/mocker@3.0.8(vite@6.4.1(@types/node@20.12.7)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0))': dependencies: '@vitest/spy': 3.0.8 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 6.3.5(@types/node@20.12.7)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0) + vite: 6.4.1(@types/node@20.12.7)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0) - '@vitest/mocker@3.1.3(vite@6.3.5(@types/node@22.15.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0))': + '@vitest/mocker@3.1.3(vite@6.4.1(@types/node@22.15.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0))': dependencies: '@vitest/spy': 3.1.3 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 6.3.5(@types/node@22.15.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) + vite: 6.4.1(@types/node@22.15.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) - '@vitest/mocker@3.1.3(vite@6.3.5(@types/node@22.15.30)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0))': + '@vitest/mocker@3.1.3(vite@6.4.1(@types/node@22.15.30)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0))': dependencies: '@vitest/spy': 3.1.3 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 6.3.5(@types/node@22.15.30)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) + vite: 6.4.1(@types/node@22.15.30)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) '@vitest/pretty-format@3.0.8': dependencies: @@ -8843,10 +9104,10 @@ snapshots: loupe: 3.1.3 tinyrainbow: 2.0.0 - '@vitest/web-worker@3.0.8(vitest@3.0.8(@types/node@20.12.7)(jiti@2.6.0)(jsdom@26.1.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0))': + '@vitest/web-worker@3.0.8(vitest@3.0.8(@types/node@20.12.7)(jiti@2.6.0)(jsdom@27.4.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0))': dependencies: debug: 4.4.1 - vitest: 3.0.8(@types/node@20.12.7)(jiti@2.6.0)(jsdom@26.1.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0) + vitest: 3.0.8(@types/node@20.12.7)(jiti@2.6.0)(jsdom@27.4.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0) transitivePeerDependencies: - supports-color @@ -9069,7 +9330,7 @@ snapshots: '@yarnpkg/parsers@3.0.2': dependencies: - js-yaml: 3.14.1 + js-yaml: 4.1.1 tslib: 2.8.1 '@zkochan/js-yaml@0.0.7': @@ -9089,8 +9350,7 @@ snapshots: acorn@8.15.0: {} - agent-base@7.1.3: - optional: true + agent-base@7.1.3: {} ajv@6.12.6: dependencies: @@ -9127,10 +9387,6 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.1 - argparse@1.0.10: - dependencies: - sprintf-js: 1.0.3 - argparse@2.0.1: {} aria-query@5.3.0: @@ -9280,6 +9536,10 @@ snapshots: dependencies: is-windows: 1.0.2 + bidi-js@1.0.3: + dependencies: + require-from-string: 2.0.2 + binary-extensions@2.3.0: {} bl@4.1.0: @@ -9292,28 +9552,23 @@ snapshots: bn.js@5.2.2: {} - body-parser@2.2.0: + body-parser@2.2.2: dependencies: bytes: 3.1.2 content-type: 1.0.5 - debug: 4.4.1 + debug: 4.4.3 http-errors: 2.0.0 - iconv-lite: 0.6.3 + iconv-lite: 0.7.2 on-finished: 2.4.1 - qs: 6.14.0 - raw-body: 3.0.0 + qs: 6.14.1 + raw-body: 3.0.2 type-is: 2.0.1 transitivePeerDependencies: - supports-color boolbase@1.0.0: {} - brace-expansion@1.1.11: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - brace-expansion@2.0.1: + brace-expansion@2.0.2: dependencies: balanced-match: 1.0.2 @@ -9391,10 +9646,6 @@ snapshots: builtin-modules@3.3.0: {} - busboy@1.6.0: - dependencies: - streamsearch: 1.1.0 - bytes@3.1.2: {} cac@6.7.14: {} @@ -9448,7 +9699,7 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 - chardet@0.7.0: {} + chardet@2.1.1: {} check-error@2.1.1: {} @@ -9506,18 +9757,6 @@ snapshots: color-name@1.1.4: {} - color-string@1.9.1: - dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.2 - optional: true - - color@4.2.3: - dependencies: - color-convert: 2.0.1 - color-string: 1.9.1 - optional: true - colord@2.9.3: {} colorjs.io@0.5.2: @@ -9536,8 +9775,6 @@ snapshots: commondir@1.0.1: {} - concat-map@0.0.1: {} - confbox@0.1.8: {} confbox@0.2.2: {} @@ -9582,7 +9819,7 @@ snapshots: cosmiconfig@8.3.6(typescript@5.1.6): dependencies: import-fresh: 3.3.1 - js-yaml: 4.1.0 + js-yaml: 4.1.1 parse-json: 5.2.0 path-type: 4.0.0 optionalDependencies: @@ -9668,6 +9905,11 @@ snapshots: mdn-data: 2.0.30 source-map-js: 1.2.1 + css-tree@3.1.0: + dependencies: + mdn-data: 2.12.2 + source-map-js: 1.2.1 + css-what@6.1.0: {} cssesc@3.0.0: {} @@ -9720,11 +9962,17 @@ snapshots: dependencies: css-tree: 1.1.3 - cssstyle@4.3.1: + cssstyle@4.6.0: dependencies: - '@asamuzakjp/css-color': 3.1.7 + '@asamuzakjp/css-color': 3.2.0 rrweb-cssom: 0.8.0 - optional: true + + cssstyle@5.3.7: + dependencies: + '@asamuzakjp/css-color': 4.1.1 + '@csstools/css-syntax-patches-for-csstree': 1.0.25 + css-tree: 3.1.0 + lru-cache: 11.2.4 csstype@3.1.3: {} @@ -9734,7 +9982,11 @@ snapshots: dependencies: whatwg-mimetype: 4.0.0 whatwg-url: 14.2.0 - optional: true + + data-urls@6.0.1: + dependencies: + whatwg-mimetype: 5.0.0 + whatwg-url: 15.1.0 data-view-buffer@1.0.2: dependencies: @@ -9766,6 +10018,10 @@ snapshots: dependencies: ms: 2.1.3 + debug@4.4.3: + dependencies: + ms: 2.1.3 + decamelize-keys@1.1.1: dependencies: decamelize: 1.2.0 @@ -9773,8 +10029,7 @@ snapshots: decamelize@1.2.0: {} - decimal.js@10.5.0: - optional: true + decimal.js@10.6.0: {} decode-uri-component@0.2.2: {} @@ -9820,6 +10075,9 @@ snapshots: detect-libc@2.0.4: {} + detect-libc@2.1.2: + optional: true + diff-sequences@29.6.3: {} diffie-hellman@5.0.3: @@ -9931,8 +10189,7 @@ snapshots: entities@4.5.0: {} - entities@6.0.0: - optional: true + entities@6.0.0: {} error-ex@1.3.2: dependencies: @@ -10441,7 +10698,7 @@ snapshots: natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 6.1.2 - semver: 7.7.2 + semver: 7.7.3 vue-eslint-parser: 10.1.3(eslint@8.57.0) xml-name-validator: 4.0.0 @@ -10508,7 +10765,7 @@ snapshots: imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 - js-yaml: 4.1.0 + js-yaml: 4.1.1 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 lodash.merge: 4.6.2 @@ -10529,7 +10786,7 @@ snapshots: '@eslint/core': 0.13.0 '@eslint/eslintrc': 3.3.1 '@eslint/js': 9.25.0 - '@eslint/plugin-kit': 0.2.8 + '@eslint/plugin-kit': 0.3.4 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 @@ -10574,8 +10831,6 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.15.0) eslint-visitor-keys: 3.4.3 - esprima@4.0.1: {} - esquery@1.6.0: dependencies: estraverse: 5.3.0 @@ -10607,15 +10862,16 @@ snapshots: expect-type@1.2.1: {} - express@5.1.0: + express@5.2.1: dependencies: accepts: 2.0.0 - body-parser: 2.2.0 + body-parser: 2.2.2 content-disposition: 1.0.0 content-type: 1.0.5 cookie: 0.7.2 cookie-signature: 1.2.2 debug: 4.4.1 + depd: 2.0.0 encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 @@ -10628,7 +10884,7 @@ snapshots: once: 1.4.0 parseurl: 1.3.3 proxy-addr: 2.0.7 - qs: 6.14.0 + qs: 6.14.1 range-parser: 1.2.1 router: 2.2.0 send: 1.2.0 @@ -10643,12 +10899,6 @@ snapshots: extendable-error@0.1.7: {} - external-editor@3.1.0: - dependencies: - chardet: 0.7.0 - iconv-lite: 0.4.24 - tmp: 0.0.33 - fast-deep-equal@3.1.3: {} fast-diff@1.3.0: {} @@ -10768,7 +11018,7 @@ snapshots: front-matter@4.0.2: dependencies: - js-yaml: 3.14.1 + js-yaml: 4.1.1 fs-constants@1.0.0: {} @@ -10909,7 +11159,7 @@ snapshots: global@4.4.0: dependencies: - min-document: 2.19.0 + min-document: 2.19.1 process: 0.11.10 globals@11.12.0: {} @@ -11006,7 +11256,12 @@ snapshots: html-encoding-sniffer@4.0.0: dependencies: whatwg-encoding: 3.1.1 - optional: true + + html-encoding-sniffer@6.0.0: + dependencies: + '@exodus/bytes': 1.9.0 + transitivePeerDependencies: + - '@noble/hashes' html-escaper@2.0.2: {} @@ -11020,29 +11275,35 @@ snapshots: statuses: 2.0.1 toidentifier: 1.0.1 + http-errors@2.0.1: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.2 + toidentifier: 1.0.1 + http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.3 - debug: 4.4.1 + debug: 4.4.3 transitivePeerDependencies: - supports-color - optional: true https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.3 - debug: 4.4.1 + debug: 4.4.3 transitivePeerDependencies: - supports-color - optional: true human-id@4.1.1: {} - iconv-lite@0.4.24: + iconv-lite@0.6.3: dependencies: safer-buffer: 2.1.2 - iconv-lite@0.6.3: + iconv-lite@0.7.2: dependencies: safer-buffer: 2.1.2 @@ -11097,9 +11358,6 @@ snapshots: is-arrayish@0.2.1: {} - is-arrayish@0.3.2: - optional: true - is-async-function@2.1.1: dependencies: async-function: 1.0.0 @@ -11185,8 +11443,7 @@ snapshots: is-plain-object@5.0.0: {} - is-potential-custom-element-name@1.0.1: - optional: true + is-potential-custom-element-name@1.0.1: {} is-promise@4.0.0: {} @@ -11326,25 +11583,20 @@ snapshots: js-tokens@4.0.0: {} - js-yaml@3.14.1: - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - - js-yaml@4.1.0: + js-yaml@4.1.1: dependencies: argparse: 2.0.1 jsdom@26.1.0: dependencies: - cssstyle: 4.3.1 + cssstyle: 4.6.0 data-urls: 5.0.0 - decimal.js: 10.5.0 + decimal.js: 10.6.0 html-encoding-sniffer: 4.0.0 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.20 + nwsapi: 2.2.23 parse5: 7.3.0 rrweb-cssom: 0.8.0 saxes: 6.0.0 @@ -11355,13 +11607,40 @@ snapshots: whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 whatwg-url: 14.2.0 - ws: 8.18.2 + ws: 8.19.0 xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - optional: true + + jsdom@27.4.0: + dependencies: + '@acemir/cssom': 0.9.31 + '@asamuzakjp/dom-selector': 6.7.6 + '@exodus/bytes': 1.9.0 + cssstyle: 5.3.7 + data-urls: 6.0.1 + decimal.js: 10.6.0 + html-encoding-sniffer: 6.0.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + is-potential-custom-element-name: 1.0.1 + parse5: 8.0.0 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 6.0.0 + w3c-xmlserializer: 5.0.0 + webidl-conversions: 8.0.1 + whatwg-mimetype: 4.0.0 + whatwg-url: 15.1.0 + ws: 8.19.0 + xml-name-validator: 5.0.0 + transitivePeerDependencies: + - '@noble/hashes' + - bufferutil + - supports-color + - utf-8-validate jsesc@3.1.0: {} @@ -11498,7 +11777,7 @@ snapshots: lodash.uniq@4.5.0: {} - lodash@4.17.21: {} + lodash@4.17.23: {} log-symbols@4.1.0: dependencies: @@ -11515,6 +11794,8 @@ snapshots: lru-cache@11.1.0: {} + lru-cache@11.2.4: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -11565,6 +11846,8 @@ snapshots: mdn-data@2.0.30: {} + mdn-data@2.12.2: {} + media-typer@1.1.0: {} memory-cache@0.2.0: {} @@ -11612,7 +11895,7 @@ snapshots: mimic-fn@2.1.0: {} - min-document@2.19.0: + min-document@2.19.1: dependencies: dom-walk: 0.1.2 @@ -11630,23 +11913,23 @@ snapshots: minimatch@3.1.2: dependencies: - brace-expansion: 1.1.11 + brace-expansion: 2.0.2 minimatch@5.1.6: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 2.0.2 minimatch@9.0.1: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 2.0.2 minimatch@9.0.3: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 2.0.2 minimatch@9.0.5: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 2.0.2 minimist-options@4.1.0: dependencies: @@ -11658,12 +11941,10 @@ snapshots: minipass@7.1.2: {} - minizlib@3.0.2: + minizlib@3.1.0: dependencies: minipass: 7.1.2 - mkdirp@3.0.1: {} - mlly@1.7.4: dependencies: acorn: 8.15.0 @@ -11687,28 +11968,26 @@ snapshots: negotiator@1.0.0: {} - next@15.3.8(react-dom@19.1.4(react@19.1.4))(react@19.1.4)(sass@1.92.1): + next@15.4.10(react-dom@19.1.4(react@19.1.4))(react@19.1.4)(sass@1.92.1): dependencies: - '@next/env': 15.3.8 - '@swc/counter': 0.1.3 + '@next/env': 15.4.10 '@swc/helpers': 0.5.15 - busboy: 1.6.0 caniuse-lite: 1.0.30001718 postcss: 8.4.31 react: 19.1.4 react-dom: 19.1.4(react@19.1.4) styled-jsx: 5.1.6(react@19.1.4) optionalDependencies: - '@next/swc-darwin-arm64': 15.3.5 - '@next/swc-darwin-x64': 15.3.5 - '@next/swc-linux-arm64-gnu': 15.3.5 - '@next/swc-linux-arm64-musl': 15.3.5 - '@next/swc-linux-x64-gnu': 15.3.5 - '@next/swc-linux-x64-musl': 15.3.5 - '@next/swc-win32-arm64-msvc': 15.3.5 - '@next/swc-win32-x64-msvc': 15.3.5 + '@next/swc-darwin-arm64': 15.4.8 + '@next/swc-darwin-x64': 15.4.8 + '@next/swc-linux-arm64-gnu': 15.4.8 + '@next/swc-linux-arm64-musl': 15.4.8 + '@next/swc-linux-x64-gnu': 15.4.8 + '@next/swc-linux-x64-musl': 15.4.8 + '@next/swc-win32-arm64-msvc': 15.4.8 + '@next/swc-win32-x64-msvc': 15.4.8 sass: 1.92.1 - sharp: 0.34.2 + sharp: 0.34.5 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -11756,8 +12035,7 @@ snapshots: dependencies: boolbase: 1.0.0 - nwsapi@2.2.20: - optional: true + nwsapi@2.2.23: {} nx@20.8.1: dependencies: @@ -11789,7 +12067,7 @@ snapshots: semver: 7.7.2 string-width: 4.2.3 tar-stream: 2.2.0 - tmp: 0.2.3 + tmp: 0.2.4 tsconfig-paths: 4.2.0 tslib: 2.8.1 yaml: 2.8.0 @@ -11889,8 +12167,6 @@ snapshots: strip-ansi: 6.0.1 wcwidth: 1.0.1 - os-tmpdir@1.0.2: {} - outdent@0.5.0: {} own-keys@1.0.1: @@ -11963,7 +12239,10 @@ snapshots: parse5@7.3.0: dependencies: entities: 6.0.0 - optional: true + + parse5@8.0.0: + dependencies: + entities: 6.0.0 parseurl@1.3.3: {} @@ -12010,8 +12289,6 @@ snapshots: picomatch@4.0.3: {} - pify@4.0.1: {} - pkg-dir@4.2.0: dependencies: find-up: 4.1.0 @@ -12319,7 +12596,7 @@ snapshots: punycode@2.3.1: {} - qs@6.14.0: + qs@6.14.1: dependencies: side-channel: 1.1.0 @@ -12347,11 +12624,11 @@ snapshots: range-parser@1.2.1: {} - raw-body@3.0.0: + raw-body@3.0.2: dependencies: bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.6.3 + http-errors: 2.0.1 + iconv-lite: 0.7.2 unpipe: 1.0.0 react-dom@19.1.4(react@19.1.4): @@ -12367,7 +12644,7 @@ snapshots: react-refresh@0.17.0: {} - react-router@7.6.3(react-dom@19.1.4(react@19.1.4))(react@19.1.4): + react-router@7.12.0(react-dom@19.1.4(react@19.1.4))(react@19.1.4): dependencies: cookie: 1.0.2 react: 19.1.4 @@ -12390,12 +12667,10 @@ snapshots: parse-json: 5.2.0 type-fest: 0.6.0 - read-yaml-file@1.1.0: + read-yaml-file@2.1.0: dependencies: - graceful-fs: 4.2.11 - js-yaml: 3.14.1 - pify: 4.0.1 - strip-bom: 3.0.0 + js-yaml: 4.1.1 + strip-bom: 4.0.0 readable-stream@2.3.8: dependencies: @@ -12502,20 +12777,20 @@ snapshots: hash-base: 3.1.2 inherits: 2.0.4 - rollup-plugin-dts@6.1.0(rollup@4.17.2)(typescript@5.1.6): + rollup-plugin-dts@6.1.0(rollup@4.32.0)(typescript@5.1.6): dependencies: magic-string: 0.30.17 - rollup: 4.17.2 + rollup: 4.32.0 typescript: 5.1.6 optionalDependencies: '@babel/code-frame': 7.27.1 - rollup-plugin-polyfill-node@0.13.0(rollup@4.17.2): + rollup-plugin-polyfill-node@0.13.0(rollup@4.32.0): dependencies: - '@rollup/plugin-inject': 5.0.5(rollup@4.17.2) - rollup: 4.17.2 + '@rollup/plugin-inject': 5.0.5(rollup@4.32.0) + rollup: 4.32.0 - rollup-plugin-styles@4.0.0(rollup@4.17.2): + rollup-plugin-styles@4.0.0(rollup@4.32.0): dependencies: '@rollup/pluginutils': 4.2.1 '@types/cssnano': 5.1.3(postcss@8.4.31) @@ -12533,30 +12808,33 @@ snapshots: postcss-value-parser: 4.2.0 query-string: 7.1.3 resolve: 1.22.10 - rollup: 4.17.2 + rollup: 4.32.0 source-map-js: 1.2.1 tslib: 2.8.1 - rollup@4.17.2: + rollup@4.32.0: dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.17.2 - '@rollup/rollup-android-arm64': 4.17.2 - '@rollup/rollup-darwin-arm64': 4.17.2 - '@rollup/rollup-darwin-x64': 4.17.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.17.2 - '@rollup/rollup-linux-arm-musleabihf': 4.17.2 - '@rollup/rollup-linux-arm64-gnu': 4.17.2 - '@rollup/rollup-linux-arm64-musl': 4.17.2 - '@rollup/rollup-linux-powerpc64le-gnu': 4.17.2 - '@rollup/rollup-linux-riscv64-gnu': 4.17.2 - '@rollup/rollup-linux-s390x-gnu': 4.17.2 - '@rollup/rollup-linux-x64-gnu': 4.17.2 - '@rollup/rollup-linux-x64-musl': 4.17.2 - '@rollup/rollup-win32-arm64-msvc': 4.17.2 - '@rollup/rollup-win32-ia32-msvc': 4.17.2 - '@rollup/rollup-win32-x64-msvc': 4.17.2 + '@rollup/rollup-android-arm-eabi': 4.32.0 + '@rollup/rollup-android-arm64': 4.32.0 + '@rollup/rollup-darwin-arm64': 4.32.0 + '@rollup/rollup-darwin-x64': 4.32.0 + '@rollup/rollup-freebsd-arm64': 4.32.0 + '@rollup/rollup-freebsd-x64': 4.32.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.32.0 + '@rollup/rollup-linux-arm-musleabihf': 4.32.0 + '@rollup/rollup-linux-arm64-gnu': 4.32.0 + '@rollup/rollup-linux-arm64-musl': 4.32.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.32.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.32.0 + '@rollup/rollup-linux-riscv64-gnu': 4.32.0 + '@rollup/rollup-linux-s390x-gnu': 4.32.0 + '@rollup/rollup-linux-x64-gnu': 4.32.0 + '@rollup/rollup-linux-x64-musl': 4.32.0 + '@rollup/rollup-win32-arm64-msvc': 4.32.0 + '@rollup/rollup-win32-ia32-msvc': 4.32.0 + '@rollup/rollup-win32-x64-msvc': 4.32.0 fsevents: 2.3.3 rollup@4.50.0: @@ -12596,8 +12874,7 @@ snapshots: transitivePeerDependencies: - supports-color - rrweb-cssom@0.8.0: - optional: true + rrweb-cssom@0.8.0: {} run-parallel@1.2.0: dependencies: @@ -12740,7 +13017,6 @@ snapshots: saxes@6.0.0: dependencies: xmlchars: 2.2.0 - optional: true scheduler@0.26.0: {} @@ -12758,6 +13034,8 @@ snapshots: semver@7.7.2: {} + semver@7.7.3: {} + send@1.2.0: dependencies: debug: 4.4.1 @@ -12774,11 +13052,11 @@ snapshots: transitivePeerDependencies: - supports-color - seroval-plugins@1.3.3(seroval@1.3.2): + seroval-plugins@1.4.2(seroval@1.4.1): dependencies: - seroval: 1.3.2 + seroval: 1.4.1 - seroval@1.3.2: {} + seroval@1.4.1: {} serve-static@2.2.0: dependencies: @@ -12821,33 +13099,36 @@ snapshots: safe-buffer: 5.2.1 to-buffer: 1.2.2 - sharp@0.34.2: + sharp@0.34.5: dependencies: - color: 4.2.3 - detect-libc: 2.0.4 - semver: 7.7.2 + '@img/colour': 1.0.0 + detect-libc: 2.1.2 + semver: 7.7.3 optionalDependencies: - '@img/sharp-darwin-arm64': 0.34.2 - '@img/sharp-darwin-x64': 0.34.2 - '@img/sharp-libvips-darwin-arm64': 1.1.0 - '@img/sharp-libvips-darwin-x64': 1.1.0 - '@img/sharp-libvips-linux-arm': 1.1.0 - '@img/sharp-libvips-linux-arm64': 1.1.0 - '@img/sharp-libvips-linux-ppc64': 1.1.0 - '@img/sharp-libvips-linux-s390x': 1.1.0 - '@img/sharp-libvips-linux-x64': 1.1.0 - '@img/sharp-libvips-linuxmusl-arm64': 1.1.0 - '@img/sharp-libvips-linuxmusl-x64': 1.1.0 - '@img/sharp-linux-arm': 0.34.2 - '@img/sharp-linux-arm64': 0.34.2 - '@img/sharp-linux-s390x': 0.34.2 - '@img/sharp-linux-x64': 0.34.2 - '@img/sharp-linuxmusl-arm64': 0.34.2 - '@img/sharp-linuxmusl-x64': 0.34.2 - '@img/sharp-wasm32': 0.34.2 - '@img/sharp-win32-arm64': 0.34.2 - '@img/sharp-win32-ia32': 0.34.2 - '@img/sharp-win32-x64': 0.34.2 + '@img/sharp-darwin-arm64': 0.34.5 + '@img/sharp-darwin-x64': 0.34.5 + '@img/sharp-libvips-darwin-arm64': 1.2.4 + '@img/sharp-libvips-darwin-x64': 1.2.4 + '@img/sharp-libvips-linux-arm': 1.2.4 + '@img/sharp-libvips-linux-arm64': 1.2.4 + '@img/sharp-libvips-linux-ppc64': 1.2.4 + '@img/sharp-libvips-linux-riscv64': 1.2.4 + '@img/sharp-libvips-linux-s390x': 1.2.4 + '@img/sharp-libvips-linux-x64': 1.2.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + '@img/sharp-linux-arm': 0.34.5 + '@img/sharp-linux-arm64': 0.34.5 + '@img/sharp-linux-ppc64': 0.34.5 + '@img/sharp-linux-riscv64': 0.34.5 + '@img/sharp-linux-s390x': 0.34.5 + '@img/sharp-linux-x64': 0.34.5 + '@img/sharp-linuxmusl-arm64': 0.34.5 + '@img/sharp-linuxmusl-x64': 0.34.5 + '@img/sharp-wasm32': 0.34.5 + '@img/sharp-win32-arm64': 0.34.5 + '@img/sharp-win32-ia32': 0.34.5 + '@img/sharp-win32-x64': 0.34.5 optional: true shebang-command@2.0.0: @@ -12890,11 +13171,6 @@ snapshots: signal-exit@4.1.0: {} - simple-swizzle@0.2.2: - dependencies: - is-arrayish: 0.3.2 - optional: true - sirv@3.0.1: dependencies: '@polka/url': 1.0.0-next.29 @@ -12942,14 +13218,14 @@ snapshots: split-on-first@1.1.0: {} - sprintf-js@1.0.3: {} - stable@0.1.8: {} stackback@0.0.2: {} statuses@2.0.1: {} + statuses@2.0.2: {} + std-env@3.9.0: {} stop-iteration-iterator@1.1.0: @@ -12962,8 +13238,6 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 - streamsearch@1.1.0: {} - strict-uri-encode@2.0.0: {} string-width@4.2.3: @@ -13046,6 +13320,8 @@ snapshots: strip-bom@3.0.0: {} + strip-bom@4.0.0: {} + strip-indent@3.0.0: dependencies: min-indent: 1.0.1 @@ -13177,8 +13453,7 @@ snapshots: picocolors: 1.1.1 stable: 0.1.8 - symbol-tree@3.2.4: - optional: true + symbol-tree@3.2.4: {} sync-child-process@1.0.2: dependencies: @@ -13216,13 +13491,12 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 - tar@7.4.3: + tar@7.5.4: dependencies: '@isaacs/fs-minipass': 4.0.1 chownr: 3.0.0 minipass: 7.1.2 - minizlib: 3.0.2 - mkdirp: 3.0.1 + minizlib: 3.1.0 yallist: 5.0.0 term-size@2.2.1: {} @@ -13256,25 +13530,30 @@ snapshots: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 + tinyglobby@0.2.15: + dependencies: + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + tinypool@1.0.2: {} tinyrainbow@2.0.0: {} tinyspy@3.0.2: {} - tldts-core@6.1.86: - optional: true + tldts-core@6.1.86: {} + + tldts-core@7.0.19: {} tldts@6.1.86: dependencies: tldts-core: 6.1.86 - optional: true - tmp@0.0.33: + tldts@7.0.19: dependencies: - os-tmpdir: 1.0.2 + tldts-core: 7.0.19 - tmp@0.2.3: {} + tmp@0.2.4: {} to-buffer@1.2.2: dependencies: @@ -13293,14 +13572,20 @@ snapshots: tough-cookie@5.1.2: dependencies: tldts: 6.1.86 - optional: true + + tough-cookie@6.0.0: + dependencies: + tldts: 7.0.19 tr46@0.0.3: {} tr46@5.1.1: dependencies: punycode: 2.3.1 - optional: true + + tr46@6.0.0: + dependencies: + punycode: 2.3.1 trim-newlines@3.0.1: {} @@ -13442,7 +13727,7 @@ snapshots: dependencies: punycode: 2.3.1 - use-sync-external-store@1.5.0(react@19.1.4): + use-sync-external-store@1.6.0(react@19.1.4): dependencies: react: 19.1.4 @@ -13468,7 +13753,7 @@ snapshots: debug: 4.4.1 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 6.3.5(@types/node@20.12.7)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0) + vite: 6.4.1(@types/node@20.12.7)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0) transitivePeerDependencies: - '@types/node' - jiti @@ -13489,7 +13774,7 @@ snapshots: debug: 4.4.1 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 6.3.5(@types/node@22.15.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) + vite: 6.4.1(@types/node@22.15.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) transitivePeerDependencies: - '@types/node' - jiti @@ -13510,7 +13795,7 @@ snapshots: debug: 4.4.1 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 6.3.5(@types/node@22.15.30)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) + vite: 6.4.1(@types/node@22.15.30)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) transitivePeerDependencies: - '@types/node' - jiti @@ -13525,7 +13810,7 @@ snapshots: - tsx - yaml - vite@6.3.5(@types/node@20.12.7)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0): + vite@6.4.1(@types/node@20.12.7)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0): dependencies: esbuild: 0.25.9 fdir: 6.5.0(picomatch@4.0.3) @@ -13543,7 +13828,7 @@ snapshots: terser: 5.39.2 yaml: 2.8.0 - vite@6.3.5(@types/node@22.15.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0): + vite@6.4.1(@types/node@22.15.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0): dependencies: esbuild: 0.25.9 fdir: 6.5.0(picomatch@4.0.3) @@ -13561,7 +13846,7 @@ snapshots: terser: 5.39.2 yaml: 2.8.0 - vite@6.3.5(@types/node@22.15.30)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0): + vite@6.4.1(@types/node@22.15.30)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0): dependencies: esbuild: 0.25.9 fdir: 6.5.0(picomatch@4.0.3) @@ -13579,7 +13864,7 @@ snapshots: terser: 5.39.2 yaml: 2.8.0 - vite@6.3.5(@types/node@24.0.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0): + vite@6.4.1(@types/node@24.0.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0): dependencies: esbuild: 0.25.9 fdir: 6.5.0(picomatch@4.0.3) @@ -13597,14 +13882,14 @@ snapshots: terser: 5.39.2 yaml: 2.8.0 - vite@7.1.4(@types/node@20.12.7)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0): + vite@7.1.12(@types/node@20.12.7)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0): dependencies: esbuild: 0.25.9 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 rollup: 4.50.0 - tinyglobby: 0.2.14 + tinyglobby: 0.2.15 optionalDependencies: '@types/node': 20.12.7 fsevents: 2.3.3 @@ -13615,20 +13900,10 @@ snapshots: terser: 5.39.2 yaml: 2.8.0 - vitest-browser-react@0.1.1(@types/react-dom@19.1.5(@types/react@19.1.5))(@types/react@19.1.5)(@vitest/browser@3.1.3)(react-dom@19.1.4(react@19.1.4))(react@19.1.4)(vitest@3.1.3): - dependencies: - '@vitest/browser': 3.1.3(playwright@1.55.1)(vite@6.3.5(@types/node@22.15.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0))(vitest@3.1.3) - react: 19.1.4 - react-dom: 19.1.4(react@19.1.4) - vitest: 3.1.3(@types/node@22.15.3)(@vitest/browser@3.1.3)(jiti@2.6.0)(jsdom@26.1.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) - optionalDependencies: - '@types/react': 19.1.5 - '@types/react-dom': 19.1.5(@types/react@19.1.5) - - vitest@3.0.8(@types/node@20.12.7)(jiti@2.6.0)(jsdom@26.1.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0): + vitest@3.0.8(@types/node@20.12.7)(jiti@2.6.0)(jsdom@27.4.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0): dependencies: '@vitest/expect': 3.0.8 - '@vitest/mocker': 3.0.8(vite@6.3.5(@types/node@20.12.7)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0)) + '@vitest/mocker': 3.0.8(vite@6.4.1(@types/node@20.12.7)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0)) '@vitest/pretty-format': 3.1.3 '@vitest/runner': 3.0.8 '@vitest/snapshot': 3.0.8 @@ -13644,12 +13919,12 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.0.2 tinyrainbow: 2.0.0 - vite: 6.3.5(@types/node@20.12.7)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0) + vite: 6.4.1(@types/node@20.12.7)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0) vite-node: 3.0.8(@types/node@20.12.7)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.75.0)(terser@5.39.2)(yaml@2.8.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 20.12.7 - jsdom: 26.1.0 + jsdom: 27.4.0 transitivePeerDependencies: - jiti - less @@ -13667,7 +13942,7 @@ snapshots: vitest@3.1.3(@types/node@22.15.3)(@vitest/browser@3.1.3)(jiti@2.6.0)(jsdom@26.1.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0): dependencies: '@vitest/expect': 3.1.3 - '@vitest/mocker': 3.1.3(vite@6.3.5(@types/node@22.15.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0)) + '@vitest/mocker': 3.1.3(vite@6.4.1(@types/node@22.15.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0)) '@vitest/pretty-format': 3.1.3 '@vitest/runner': 3.1.3 '@vitest/snapshot': 3.1.3 @@ -13684,12 +13959,12 @@ snapshots: tinyglobby: 0.2.14 tinypool: 1.0.2 tinyrainbow: 2.0.0 - vite: 6.3.5(@types/node@22.15.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) + vite: 6.4.1(@types/node@22.15.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) vite-node: 3.1.3(@types/node@22.15.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 22.15.3 - '@vitest/browser': 3.1.3(playwright@1.55.1)(vite@6.3.5(@types/node@22.15.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0))(vitest@3.1.3) + '@vitest/browser': 3.1.3(playwright@1.56.1)(vite@6.4.1(@types/node@22.15.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0))(vitest@3.1.3) jsdom: 26.1.0 transitivePeerDependencies: - jiti @@ -13705,10 +13980,51 @@ snapshots: - tsx - yaml - vitest@3.1.3(@types/node@22.15.30)(@vitest/browser@3.1.3)(jiti@2.6.0)(jsdom@26.1.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0): + vitest@3.1.3(@types/node@22.15.3)(@vitest/browser@3.1.3)(jiti@2.6.0)(jsdom@27.4.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0): + dependencies: + '@vitest/expect': 3.1.3 + '@vitest/mocker': 3.1.3(vite@6.4.1(@types/node@22.15.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0)) + '@vitest/pretty-format': 3.1.3 + '@vitest/runner': 3.1.3 + '@vitest/snapshot': 3.1.3 + '@vitest/spy': 3.1.3 + '@vitest/utils': 3.1.3 + chai: 5.2.0 + debug: 4.4.1 + expect-type: 1.2.1 + magic-string: 0.30.17 + pathe: 2.0.3 + std-env: 3.9.0 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinyglobby: 0.2.14 + tinypool: 1.0.2 + tinyrainbow: 2.0.0 + vite: 6.4.1(@types/node@22.15.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) + vite-node: 3.1.3(@types/node@22.15.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 22.15.3 + '@vitest/browser': 3.1.3(playwright@1.55.1)(vite@6.4.1(@types/node@22.15.3)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0))(vitest@3.1.3) + jsdom: 27.4.0 + transitivePeerDependencies: + - jiti + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + vitest@3.1.3(@types/node@22.15.30)(@vitest/browser@3.1.3)(jiti@2.6.0)(jsdom@27.4.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0): dependencies: '@vitest/expect': 3.1.3 - '@vitest/mocker': 3.1.3(vite@6.3.5(@types/node@22.15.30)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0)) + '@vitest/mocker': 3.1.3(vite@6.4.1(@types/node@22.15.30)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0)) '@vitest/pretty-format': 3.1.3 '@vitest/runner': 3.1.3 '@vitest/snapshot': 3.1.3 @@ -13725,13 +14041,13 @@ snapshots: tinyglobby: 0.2.14 tinypool: 1.0.2 tinyrainbow: 2.0.0 - vite: 6.3.5(@types/node@22.15.30)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) + vite: 6.4.1(@types/node@22.15.30)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) vite-node: 3.1.3(@types/node@22.15.30)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 22.15.30 - '@vitest/browser': 3.1.3(playwright@1.56.1)(vite@6.3.5(@types/node@22.15.30)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0))(vitest@3.1.3) - jsdom: 26.1.0 + '@vitest/browser': 3.1.3(playwright@1.56.1)(vite@6.4.1(@types/node@22.15.30)(jiti@2.6.0)(lightningcss@1.30.1)(sass-embedded@1.92.1)(sass@1.92.1)(terser@5.39.2)(yaml@2.8.0))(vitest@3.1.3) + jsdom: 27.4.0 transitivePeerDependencies: - jiti - less @@ -13752,14 +14068,14 @@ snapshots: vue-eslint-parser@10.1.3(eslint@8.57.0): dependencies: - debug: 4.4.1 + debug: 4.4.3 eslint: 8.57.0 eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 esquery: 1.6.0 - lodash: 4.17.21 - semver: 7.7.2 + lodash: 4.17.23 + semver: 7.7.3 transitivePeerDependencies: - supports-color @@ -13771,7 +14087,7 @@ snapshots: eslint-visitor-keys: 3.4.3 espree: 9.6.1 esquery: 1.6.0 - lodash: 4.17.21 + lodash: 4.17.23 semver: 7.7.2 transitivePeerDependencies: - supports-color @@ -13795,7 +14111,6 @@ snapshots: w3c-xmlserializer@5.0.0: dependencies: xml-name-validator: 5.0.0 - optional: true wcwidth@1.0.1: dependencies: @@ -13803,22 +14118,27 @@ snapshots: webidl-conversions@3.0.1: {} - webidl-conversions@7.0.0: - optional: true + webidl-conversions@7.0.0: {} + + webidl-conversions@8.0.1: {} whatwg-encoding@3.1.1: dependencies: iconv-lite: 0.6.3 - optional: true - whatwg-mimetype@4.0.0: - optional: true + whatwg-mimetype@4.0.0: {} + + whatwg-mimetype@5.0.0: {} whatwg-url@14.2.0: dependencies: tr46: 5.1.1 webidl-conversions: 7.0.0 - optional: true + + whatwg-url@15.1.0: + dependencies: + tr46: 6.0.0 + webidl-conversions: 8.0.1 whatwg-url@5.0.0: dependencies: @@ -13902,13 +14222,13 @@ snapshots: ws@8.18.2: {} + ws@8.19.0: {} + xml-name-validator@4.0.0: {} - xml-name-validator@5.0.0: - optional: true + xml-name-validator@5.0.0: {} - xmlchars@2.2.0: - optional: true + xmlchars@2.2.0: {} y18n@5.0.8: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 0b9a93e3..d2f4bb16 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -8,6 +8,7 @@ packages: - '!samples/teamspace-nextjs' catalog: + '@eslint/js': '9.25.0' '@wso2/eslint-plugin': 'git+https://github.com/brionmario/wso2-ui-configs.git#a1fc6eb570653c999828aea9f5027cba06af4391&path:packages/eslint-plugin' '@wso2/prettier-config': 'git+https://github.com/brionmario/wso2-ui-configs.git#a1fc6eb570653c999828aea9f5027cba06af4391&path:packages/prettier-config' '@wso2/stylelint-config': 'git+https://github.com/brionmario/wso2-ui-configs.git#a1fc6eb570653c999828aea9f5027cba06af4391&path:packages/stylelint-config' diff --git a/samples/react-tanstack-router/package.json b/samples/react-tanstack-router/package.json index aac023f9..e06e11bb 100644 --- a/samples/react-tanstack-router/package.json +++ b/samples/react-tanstack-router/package.json @@ -12,11 +12,12 @@ "dependencies": { "@asgardeo/react": "workspace:*", "@asgardeo/tanstack-router": "workspace:*", - "@tanstack/react-router": "1.132.6", + "@tanstack/react-router": "1.154.7", "react": "19.1.4", "react-dom": "19.1.4" }, "devDependencies": { + "@eslint/js": "catalog:", "@types/react": "19.1.2", "@types/react-dom": "19.1.2", "@vitejs/plugin-basic-ssl": "2.0.0", @@ -27,6 +28,6 @@ "globals": "16.0.0", "typescript": "5.8.3", "typescript-eslint": "8.30.1", - "vite": "6.3.5" + "vite": "6.4.1" } } diff --git a/samples/teamspace-react/package.json b/samples/teamspace-react/package.json index 9c6616a3..e956e76e 100644 --- a/samples/teamspace-react/package.json +++ b/samples/teamspace-react/package.json @@ -22,10 +22,11 @@ "lucide-react": "0.294.0", "react": "19.1.4", "react-dom": "19.1.4", - "react-router": "7.6.3", + "react-router": "7.12.0", "tailwind-merge": "3.3.0" }, "devDependencies": { + "@eslint/js": "catalog:", "@tailwindcss/vite": "4.1.8", "@types/react": "19.1.2", "@types/react-dom": "19.1.2", @@ -41,6 +42,6 @@ "tw-animate-css": "1.3.4", "typescript": "5.8.3", "typescript-eslint": "8.30.1", - "vite": "6.3.5" + "vite": "6.4.1" } } diff --git a/samples/teamspace-react/src/components/Debug/TokenInfo.tsx b/samples/teamspace-react/src/components/Debug/TokenInfo.tsx index b5f5751d..4c8d8661 100644 --- a/samples/teamspace-react/src/components/Debug/TokenInfo.tsx +++ b/samples/teamspace-react/src/components/Debug/TokenInfo.tsx @@ -9,8 +9,8 @@ interface TokenInfoProps { } const TokenInfo: React.FC = ({isOpen, onClose, isPage = false}) => { - const [sessionData, setSessionData] = useState(null); - const [decodedToken, setDecodedToken] = useState(null); + const [sessionData, setSessionData] = useState | null>(null); + const [decodedToken, setDecodedToken] = useState | null>(null); useEffect(() => { if (!isOpen) return; @@ -70,7 +70,7 @@ const TokenInfo: React.FC = ({isOpen, onClose, isPage = false}) return new Date(timestamp * 1000).toLocaleString(); }; - const highlightJSON = (obj: any) => { + const highlightJSON = (obj: Record) => { const jsonString = JSON.stringify(obj, null, 2); const lines = jsonString.split('\n'); @@ -112,7 +112,7 @@ const TokenInfo: React.FC = ({isOpen, onClose, isPage = false}) // Format the session data with readable timestamps const formattedData = {...sessionData}; if (formattedData.created_at) { - formattedData.created_at_readable = formatDate(formattedData.created_at / 1000); + formattedData.created_at_readable = formatDate((formattedData.created_at as number) / 1000); } const highlightedJSON = highlightJSON(formattedData); @@ -134,7 +134,7 @@ const TokenInfo: React.FC = ({isOpen, onClose, isPage = false}) const formattedToken = {...decodedToken}; ['exp', 'iat', 'nbf'].forEach(key => { if (formattedToken[key]) { - formattedToken[`${key}_readable`] = formatDate(formattedToken[key]); + formattedToken[`${key}_readable`] = formatDate(formattedToken[key] as number); } }); diff --git a/samples/teamspace-react/src/components/Header/UserDropdown.tsx b/samples/teamspace-react/src/components/Header/UserDropdown.tsx index d2850881..6552a486 100644 --- a/samples/teamspace-react/src/components/Header/UserDropdown.tsx +++ b/samples/teamspace-react/src/components/Header/UserDropdown.tsx @@ -2,6 +2,7 @@ import {ChevronDown, LogOut, Settings, UserIcon, Workflow, LayoutDashboard, Bug} from 'lucide-react'; import {UserDropdown as _UserDropdown, SignOutButton, UserProfile} from '@asgardeo/react'; +import type {UserDropdownRenderProps} from '@asgardeo/react'; import {useState, useRef} from 'react'; import {Link} from 'react-router'; @@ -17,7 +18,7 @@ export default function UserDropdown({mode = 'default'}: UserDropdownProps) { if (mode === 'custom') { return ( <_UserDropdown> - {({user, isLoading}: {user: any; isLoading: boolean}) => ( + {({user, isLoading}: UserDropdownRenderProps) => ( <>