diff --git a/.eslintrc.json b/.eslintrc.json index 6c17b24d..1e6e4951 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,12 +1,12 @@ { - "extends": [ - "next/core-web-vitals", - "plugin:storybook/recommended", - "prettier" // Should be last to override eslint config. - ], - "plugins": [], - "rules": { - "prefer-template": "warn", - "jsx-a11y/alt-text": "off" - } + "extends": [ + "next/core-web-vitals", + "plugin:storybook/recommended", + "prettier" // Should be last to override eslint config. + ], + "plugins": [], + "rules": { + "prefer-template": "warn", + "jsx-a11y/alt-text": "off" + } } diff --git a/.storybook/main.ts b/.storybook/main.ts index 928d3d84..b5bb1c13 100644 --- a/.storybook/main.ts +++ b/.storybook/main.ts @@ -6,66 +6,66 @@ import { mergeConfig } from 'vite' let createMockResolverPlugin: any export default defineConfig({ - stories: [ - '../app/**/*.stories.@(js|jsx|mjs|ts|tsx)', - '../components/**/*.stories.@(js|jsx|mjs|ts|tsx)', - '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)', - '../src/stories/**/*.mdx', - ], - addons: [ - 'msw-storybook-addon', - '@chromatic-com/storybook', - '@storybook/addon-docs', - '@storybook/addon-vitest', - ], - framework: '@storybook/nextjs-vite', - staticDirs: ['../src/assets'], - // Inject base tag for manager (navigation/toolbar) when deploying to /_storybook/ - managerHead: - process.env.CHROMATIC !== 'true' - ? (head) => ` + stories: [ + '../app/**/*.stories.@(js|jsx|mjs|ts|tsx)', + '../components/**/*.stories.@(js|jsx|mjs|ts|tsx)', + '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)', + '../src/stories/**/*.mdx', + ], + addons: [ + 'msw-storybook-addon', + '@chromatic-com/storybook', + '@storybook/addon-docs', + '@storybook/addon-vitest', + ], + framework: '@storybook/nextjs-vite', + staticDirs: ['../src/assets'], + // Inject base tag for manager (navigation/toolbar) when deploying to /_storybook/ + managerHead: + process.env.CHROMATIC !== 'true' + ? (head) => ` ${head} ` - : undefined, - // Inject base tag for preview (iframe where components render) when deploying to /_storybook/ - previewHead: - process.env.CHROMATIC !== 'true' - ? (head) => ` + : undefined, + // Inject base tag for preview (iframe where components render) when deploying to /_storybook/ + previewHead: + process.env.CHROMATIC !== 'true' + ? (head) => ` ${head} ` - : undefined, - viteFinal: async (c, { configType }) => { - // Dynamically import the plugin to avoid build issues - if (!createMockResolverPlugin) { - const mockPlugin = await import('./mockResolverPlugin.js') - createMockResolverPlugin = mockPlugin.createMockResolverPlugin - } + : undefined, + viteFinal: async (c, { configType }) => { + // Dynamically import the plugin to avoid build issues + if (!createMockResolverPlugin) { + const mockPlugin = await import('./mockResolverPlugin.js') + createMockResolverPlugin = mockPlugin.createMockResolverPlugin + } - return mergeConfig(c, { - // Only set custom base path for production builds (not for Chromatic) - base: - configType === 'PRODUCTION' && process.env.CHROMATIC !== 'true' - ? '/_storybook/' - : c.base, - server: { - allowedHosts: true, - hmr: { clientPort: 443 }, - }, - plugins: [await createMockResolverPlugin()], - resolve: { - alias: { - '@/src/hooks/useFirebaseUser': path.resolve( - __dirname, - '../src/hooks/useFirebaseUser.mock.ts' - ), - }, - }, - }) - }, + return mergeConfig(c, { + // Only set custom base path for production builds (not for Chromatic) + base: + configType === 'PRODUCTION' && process.env.CHROMATIC !== 'true' + ? '/_storybook/' + : c.base, + server: { + allowedHosts: true, + hmr: { clientPort: 443 }, + }, + plugins: [await createMockResolverPlugin()], + resolve: { + alias: { + '@/src/hooks/useFirebaseUser': path.resolve( + __dirname, + '../src/hooks/useFirebaseUser.mock.ts' + ), + }, + }, + }) + }, }) function defineConfig(v: T): T { - return v + return v } diff --git a/.storybook/mockResolverPlugin.js b/.storybook/mockResolverPlugin.js index 525c7a29..d846bfc9 100644 --- a/.storybook/mockResolverPlugin.js +++ b/.storybook/mockResolverPlugin.js @@ -6,44 +6,42 @@ import { watch } from '@snomiao/glob-watch' * Scans for all .mock.ts files and creates redirect rules */ export async function createMockResolverPlugin() { - // Scan for all .mock.ts files - const mockMap = new Map() - const glob = '**/*.mock.{ts,tsx}' - const id = (path) => path.replace(/\.mock(\.tsx?)$/, '') + // Scan for all .mock.ts files + const mockMap = new Map() + const glob = '**/*.mock.{ts,tsx}' + const id = (path) => path.replace(/\.mock(\.tsx?)$/, '') - const _destroy = await watch( - glob, - ({ added, deleted }) => { - added.forEach(({ path }) => { - mockMap.set(id(path), path) - console.log(`+ Mock ${path}`) - }) - deleted.forEach(({ path }) => { - mockMap.delete(id(path)) - console.log(`- Mock ${path}`) - }) - }, - { - cwd: process.cwd(), - ignore: ['node_modules/**'], - mode: 'fast-glob', - } - ) - - return { - name: 'mock-resolver', - enforce: 'pre', - resolveId(id, importer) { - // Normalize the import ID by removing relative path prefixes - const normalizedId = id.replace(/^(?:\.\.\/)+/, '') - if (mockMap.has(normalizedId)) { - const mockPath = mockMap.get(normalizedId) - const resolvedPath = path.resolve(process.cwd(), mockPath) - console.log( - `⚒️ Mocking ${mockPath} in ${importer || 'unknown'}` - ) - return resolvedPath - } - }, + const _destroy = await watch( + glob, + ({ added, deleted }) => { + added.forEach(({ path }) => { + mockMap.set(id(path), path) + console.log(`+ Mock ${path}`) + }) + deleted.forEach(({ path }) => { + mockMap.delete(id(path)) + console.log(`- Mock ${path}`) + }) + }, + { + cwd: process.cwd(), + ignore: ['node_modules/**'], + mode: 'fast-glob', } + ) + + return { + name: 'mock-resolver', + enforce: 'pre', + resolveId(id, importer) { + // Normalize the import ID by removing relative path prefixes + const normalizedId = id.replace(/^(?:\.\.\/)+/, '') + if (mockMap.has(normalizedId)) { + const mockPath = mockMap.get(normalizedId) + const resolvedPath = path.resolve(process.cwd(), mockPath) + console.log(`⚒️ Mocking ${mockPath} in ${importer || 'unknown'}`) + return resolvedPath + } + }, + } } diff --git a/.storybook/preview.tsx b/.storybook/preview.tsx index 3c7065ce..8cfa1e4a 100644 --- a/.storybook/preview.tsx +++ b/.storybook/preview.tsx @@ -4,84 +4,84 @@ import { QueryClient, QueryClientProvider } from '@tanstack/react-query' import { initialize, mswLoader } from 'msw-storybook-addon' import '../src/firebase' // Initialize Firebase for Storybook import { - mockFirebaseUser, - useFirebaseUser, + mockFirebaseUser, + useFirebaseUser, } from '@/src/hooks/useFirebaseUser.mock' const _mswApp = initialize({ - onUnhandledRequest: 'bypass', + onUnhandledRequest: 'bypass', }) const languageName = (lang: string) => - new Intl.DisplayNames(lang, { type: 'language' }).of(lang) + new Intl.DisplayNames(lang, { type: 'language' }).of(lang) const preview: Preview = { - parameters: { - controls: { - matchers: { - color: /(background|color)$/i, - date: /Date$/i, - }, - }, - msw: { - handlers: [], - }, - docs: { - toc: true, - }, + parameters: { + controls: { + matchers: { + color: /(background|color)$/i, + date: /Date$/i, + }, }, - beforeEach: async () => { - useFirebaseUser.mockReturnValue([mockFirebaseUser, false, undefined]) + msw: { + handlers: [], }, - loaders: [mswLoader], - decorators: [ - (Story) => { - const queryClient = new QueryClient({ - defaultOptions: { - queries: { - retry: false, - staleTime: 0, - }, - }, - }) - return ( - - - - ) - }, - ], - globalTypes: { - darkMode: { - description: 'Toggle dark mode', - defaultValue: 'dark', - toolbar: { - icon: 'circlehollow', - items: [ - { value: 'light', right: '☀️', title: 'Light Mode' }, - { value: 'dark', right: '🌙', title: 'Dark Mode' }, - ], - }, - }, - locale: { - description: 'Internationalization locale', - toolbar: { - icon: 'globe', - items: [ - { value: 'en', right: '🇺🇸', title: languageName('en') }, - { value: 'es', right: '🇪🇸', title: languageName('es') }, - { value: 'fr', right: '🇫🇷', title: languageName('fr') }, - { value: 'ja', right: '🇯🇵', title: languageName('ja') }, - { value: 'kr', right: '🇰🇷', title: languageName('kr') }, - { value: 'zh', right: '🇨🇳', title: languageName('zh') }, - ], - }, + docs: { + toc: true, + }, + }, + beforeEach: async () => { + useFirebaseUser.mockReturnValue([mockFirebaseUser, false, undefined]) + }, + loaders: [mswLoader], + decorators: [ + (Story) => { + const queryClient = new QueryClient({ + defaultOptions: { + queries: { + retry: false, + staleTime: 0, + }, }, + }) + return ( + + + + ) + }, + ], + globalTypes: { + darkMode: { + description: 'Toggle dark mode', + defaultValue: 'dark', + toolbar: { + icon: 'circlehollow', + items: [ + { value: 'light', right: '☀️', title: 'Light Mode' }, + { value: 'dark', right: '🌙', title: 'Dark Mode' }, + ], + }, }, - initialGlobals: { - locale: 'en', + locale: { + description: 'Internationalization locale', + toolbar: { + icon: 'globe', + items: [ + { value: 'en', right: '🇺🇸', title: languageName('en') }, + { value: 'es', right: '🇪🇸', title: languageName('es') }, + { value: 'fr', right: '🇫🇷', title: languageName('fr') }, + { value: 'ja', right: '🇯🇵', title: languageName('ja') }, + { value: 'kr', right: '🇰🇷', title: languageName('kr') }, + { value: 'zh', right: '🇨🇳', title: languageName('zh') }, + ], + }, }, - tags: ['autodocs'], + }, + initialGlobals: { + locale: 'en', + }, + tags: ['autodocs'], } export default preview diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 5f44864b..699ed733 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,3 +1,3 @@ { - "recommendations": ["biomejs.biome"] + "recommendations": ["biomejs.biome"] } diff --git a/.vscode/launch.json b/.vscode/launch.json index 1491d623..ffbad05f 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,29 +1,29 @@ { - "version": "0.2.0", - "configurations": [ - { - "name": "Next.js: debug server-side", - "type": "node-terminal", - "request": "launch", - "command": "npm run dev" - }, - { - "name": "Next.js: debug client-side", - "type": "pwa-chrome", - "request": "launch", - "url": "http://localhost:3000" - }, - { - "name": "Next.js: debug full stack", - "type": "node-terminal", - "request": "launch", - "command": "npm run dev", - "console": "integratedTerminal", - "serverReadyAction": { - "pattern": "started server on .+, url: (https?://.+)", - "uriFormat": "%s", - "action": "debugWithChrome" - } - } - ] + "version": "0.2.0", + "configurations": [ + { + "name": "Next.js: debug server-side", + "type": "node-terminal", + "request": "launch", + "command": "npm run dev" + }, + { + "name": "Next.js: debug client-side", + "type": "pwa-chrome", + "request": "launch", + "url": "http://localhost:3000" + }, + { + "name": "Next.js: debug full stack", + "type": "node-terminal", + "request": "launch", + "command": "npm run dev", + "console": "integratedTerminal", + "serverReadyAction": { + "pattern": "started server on .+, url: (https?://.+)", + "uriFormat": "%s", + "action": "debugWithChrome" + } + } + ] } diff --git a/.vscode/snippet.code-snippets b/.vscode/snippet.code-snippets index 5bc4acf6..6aea9833 100644 --- a/.vscode/snippet.code-snippets +++ b/.vscode/snippet.code-snippets @@ -1,87 +1,87 @@ { - // Place your kana workspace snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and - // description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope - // is left empty or omitted, the snippet gets applied to all languages. The prefix is what is - // used to trigger the snippet and the body will be expanded and inserted. Possible variables are: - // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. - // Placeholders with the same ids are connected. - // Example: - // "Print to console": { - // "scope": "javascript,typescript", - // "prefix": "log", - // "body": [ - // "console.log('$1');", - // "$2" - // ], - // "description": "Log output to console" - // } - // "edf": { - // "scope": "javascript,typescript,typescriptreact,javascriptreact", - // "prefix": "edf,edr", - // "body": [ - // "export default function $1() {", - // " return (", - // "
", - // "
", - // " ", - // "
", - // "
{location.pathname} is COMING SOON
", - // "
", - // " );", - // "}" - // ], - // "description": "Log output to console" - // }, - "global_shortcut_import": { - "scope": "javascript,typescript,typescriptreact,javascriptreact", - "prefix": "global firebase const import", - "body": [ - "import {", - " FIRESTORE_ALL_INFERENCE_COLLECTION_NAME as ALL_JOBS,", - " FIRESTORE_ALL_MODEL_COLLECTION_NAME as ALL_MODELS,", - " FIRESTORE_ALL_I2I_COLLECTION_NAME as ALL_I2I,", - " FIRESTORE_ALL_VIDEO_COLLECTION_NAME as ALL_VIDEOS,", - " FIRESTORE_INVITE_CODE_NAME as INVITE_CODE,", - " FIRESTORE_USER_COLLECTION_NAME as USERS,", - " FIRESTORE_USER_INFERENCE_JOBS_COLLECTION_NAME as USER_INF_JOBS,", - " FIRESTORE_USER_MODEL_COLLECTION_NAME as MODELS,", - " FIRESTORE_USER_VIDEO_COLLECTION_NAME as VIDEOS,", - " FIRESTORE_USER_INFERENCE_COLLECTION_NAME as INFS,", - " FIRESTORE_USER_I2I_COLLECTION_NAME as I2I_INF_JOBS,", - " FIRESTORE_FLAGS_COLLECTION_NAME as FLAGS,", - " FIRESTORE_ASK_CELEB_DOC_NAME as ASK_CELEB,", - "} from \"../../global/constants\";" - ] - } - // "export default detailsHandler": { - // "scope": "javascript,typescript,typescriptreact,javascriptreact", - // "prefix": "export default detailsHandler", - // "body": [ - // "import RESTfulHandler from '../utils/RESTful';", - // "import db from '../utils/db'", - // "async function my({_id, ...doc}: Partial<${1:KanaData}>): Promise>{", - // " ${2:// Validate details permissions and contents write permissions}", - // "}", - // "export default RESTfulHandler<${1:Docs}>({", - // " GET: async (q, r) => r.json(await db.${2:coll}.findOne(await my(q.query))),", - // " DELETE: async (q, r) => r.json(await db.${2:coll}.deleteOne(await my(q.query))),", - // " PUT: async (q, r) => r.json(await db.${2:coll}.多补([await my(q.query)])),", - // "});" - // ] - // }, - // "export default indexHandler": { - // "scope": "javascript,typescript,typescriptreact,javascriptreact", - // "prefix": "export default indexHandler", - // "body": [ - // "import RESTfulHandler from '../utils/RESTful';", - // "import db from '../utils/db'", - // "async function my({...doc}: Partial<${1:KanaData}>): Promise>{", - // " ${2:// Validate index permissions and post permissions}", - // "}", - // "export default RESTfulHandler<${1:Docs}>({", - // " GET: async (q, r) => r.json(await db.${2:coll}.find(await my(q.query)).toArray()),", - // " POST: async (q, r) => r.json(await db.${2:coll}.insertOne([await my(q.query))])),", - // "});" - // ] - // } + // Place your kana workspace snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and + // description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope + // is left empty or omitted, the snippet gets applied to all languages. The prefix is what is + // used to trigger the snippet and the body will be expanded and inserted. Possible variables are: + // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. + // Placeholders with the same ids are connected. + // Example: + // "Print to console": { + // "scope": "javascript,typescript", + // "prefix": "log", + // "body": [ + // "console.log('$1');", + // "$2" + // ], + // "description": "Log output to console" + // } + // "edf": { + // "scope": "javascript,typescript,typescriptreact,javascriptreact", + // "prefix": "edf,edr", + // "body": [ + // "export default function $1() {", + // " return (", + // "
", + // "
", + // " ", + // "
", + // "
{location.pathname} is COMING SOON
", + // "
", + // " );", + // "}" + // ], + // "description": "Log output to console" + // }, + "global_shortcut_import": { + "scope": "javascript,typescript,typescriptreact,javascriptreact", + "prefix": "global firebase const import", + "body": [ + "import {", + " FIRESTORE_ALL_INFERENCE_COLLECTION_NAME as ALL_JOBS,", + " FIRESTORE_ALL_MODEL_COLLECTION_NAME as ALL_MODELS,", + " FIRESTORE_ALL_I2I_COLLECTION_NAME as ALL_I2I,", + " FIRESTORE_ALL_VIDEO_COLLECTION_NAME as ALL_VIDEOS,", + " FIRESTORE_INVITE_CODE_NAME as INVITE_CODE,", + " FIRESTORE_USER_COLLECTION_NAME as USERS,", + " FIRESTORE_USER_INFERENCE_JOBS_COLLECTION_NAME as USER_INF_JOBS,", + " FIRESTORE_USER_MODEL_COLLECTION_NAME as MODELS,", + " FIRESTORE_USER_VIDEO_COLLECTION_NAME as VIDEOS,", + " FIRESTORE_USER_INFERENCE_COLLECTION_NAME as INFS,", + " FIRESTORE_USER_I2I_COLLECTION_NAME as I2I_INF_JOBS,", + " FIRESTORE_FLAGS_COLLECTION_NAME as FLAGS,", + " FIRESTORE_ASK_CELEB_DOC_NAME as ASK_CELEB,", + "} from \"../../global/constants\";" + ] + } + // "export default detailsHandler": { + // "scope": "javascript,typescript,typescriptreact,javascriptreact", + // "prefix": "export default detailsHandler", + // "body": [ + // "import RESTfulHandler from '../utils/RESTful';", + // "import db from '../utils/db'", + // "async function my({_id, ...doc}: Partial<${1:KanaData}>): Promise>{", + // " ${2:// Validate details permissions and contents write permissions}", + // "}", + // "export default RESTfulHandler<${1:Docs}>({", + // " GET: async (q, r) => r.json(await db.${2:coll}.findOne(await my(q.query))),", + // " DELETE: async (q, r) => r.json(await db.${2:coll}.deleteOne(await my(q.query))),", + // " PUT: async (q, r) => r.json(await db.${2:coll}.多补([await my(q.query)])),", + // "});" + // ] + // }, + // "export default indexHandler": { + // "scope": "javascript,typescript,typescriptreact,javascriptreact", + // "prefix": "export default indexHandler", + // "body": [ + // "import RESTfulHandler from '../utils/RESTful';", + // "import db from '../utils/db'", + // "async function my({...doc}: Partial<${1:KanaData}>): Promise>{", + // " ${2:// Validate index permissions and post permissions}", + // "}", + // "export default RESTfulHandler<${1:Docs}>({", + // " GET: async (q, r) => r.json(await db.${2:coll}.find(await my(q.query)).toArray()),", + // " POST: async (q, r) => r.json(await db.${2:coll}.insertOne([await my(q.query))])),", + // "});" + // ] + // } } diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 1692cf1e..a8478084 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -1,41 +1,41 @@ { - "version": "2.0.0", - "tasks": [ - { - "type": "npm", - "script": "build", - "group": "build", - "problemMatcher": [], - "label": "npm: build", - "detail": "next build" - }, - { - "type": "npm", - "script": "fix", - "problemMatcher": ["$eslint-compact"], - "label": "npm: fix", - "detail": "prettier -w . && eslint --fix ." - }, - { - "type": "npm", - "script": "storybook", - "problemMatcher": [], - "label": "npm: storybook", - "detail": "echo Open storybook in http://localhost:6006/ && start-storybook -p 6006 -s ./public" - }, - { - "type": "npm", - "script": "dev", - "problemMatcher": [], - "label": "npm: dev", - "detail": "next dev" - }, - { - "type": "bun", - "script": "next lint", - "problemMatcher": ["$eslint-stylish"], - "label": "bun: lint", - "detail": "bun run next lint - package.json" - } - ] + "version": "2.0.0", + "tasks": [ + { + "type": "npm", + "script": "build", + "group": "build", + "problemMatcher": [], + "label": "npm: build", + "detail": "next build" + }, + { + "type": "npm", + "script": "fix", + "problemMatcher": ["$eslint-compact"], + "label": "npm: fix", + "detail": "prettier -w . && eslint --fix ." + }, + { + "type": "npm", + "script": "storybook", + "problemMatcher": [], + "label": "npm: storybook", + "detail": "echo Open storybook in http://localhost:6006/ && start-storybook -p 6006 -s ./public" + }, + { + "type": "npm", + "script": "dev", + "problemMatcher": [], + "label": "npm: dev", + "detail": "next dev" + }, + { + "type": "bun", + "script": "next lint", + "problemMatcher": ["$eslint-stylish"], + "label": "bun: lint", + "detail": "bun run next lint - package.json" + } + ] } diff --git a/README.md b/README.md index d7d70ec8..1941e13f 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,7 @@ See [docs/chromatic-setup.md](docs/chromatic-setup.md) for more details on our C #### Update PR Branches We provide a GitHub Actions workflow to automatically update open PR branches with the latest changes from `main`. This is useful for: + - Keeping long-running PRs up-to-date - Reducing merge conflicts - Repository maintenance diff --git a/app/api/auth/github/callback/route.ts b/app/api/auth/github/callback/route.ts index 6c8d1975..ab251f76 100644 --- a/app/api/auth/github/callback/route.ts +++ b/app/api/auth/github/callback/route.ts @@ -8,120 +8,120 @@ import analytic from 'src/analytic/analytic' * It exchanges the code for an access token and verifies repository ownership. */ export const GET = async (request: NextRequest) => { + try { + const url = new URL(request.url) + const code = url.searchParams.get('code') + const state = url.searchParams.get('state') + + if (!code || !state) { + return NextResponse.json( + { error: 'Missing required parameters' }, + { status: 400 } + ) + } + + // GitHub OAuth application credentials + const clientId = process.env.GITHUB_CLIENT_ID + const clientSecret = process.env.GITHUB_CLIENT_SECRET + + if (!clientId || !clientSecret) { + return NextResponse.json( + { error: 'GitHub OAuth not configured' }, + { status: 500 } + ) + } + + // Decode state parameter to get original request data + let stateData try { - const url = new URL(request.url) - const code = url.searchParams.get('code') - const state = url.searchParams.get('state') - - if (!code || !state) { - return NextResponse.json( - { error: 'Missing required parameters' }, - { status: 400 } - ) - } - - // GitHub OAuth application credentials - const clientId = process.env.GITHUB_CLIENT_ID - const clientSecret = process.env.GITHUB_CLIENT_SECRET - - if (!clientId || !clientSecret) { - return NextResponse.json( - { error: 'GitHub OAuth not configured' }, - { status: 500 } - ) - } - - // Decode state parameter to get original request data - let stateData - try { - stateData = JSON.parse(Buffer.from(state, 'base64').toString()) - } catch (error) { - return NextResponse.json( - { error: 'Invalid state parameter' }, - { status: 400 } - ) - } - - const { redirectUri, nodeId, publisherId, repo } = stateData - - if (!redirectUri || !nodeId || !publisherId || !repo) { - return NextResponse.json( - { error: 'Invalid state parameter data' }, - { status: 400 } - ) - } - - // Exchange code for access token - const tokenResponse = await fetch( - 'https://github.com/login/oauth/access_token', - { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - Accept: 'application/json', - }, - body: JSON.stringify({ - client_id: clientId, - client_secret: clientSecret, - code, - }), - } - ) - - const tokenData = await tokenResponse.json() - const accessToken = tokenData.access_token - - if (!accessToken) { - return NextResponse.json( - { error: 'Failed to obtain access token' }, - { status: 400 } - ) - } - - // Verify repository ownership - const [owner, repoName] = repo.split('/') - - const repoResponse = await fetch( - `https://api.github.com/repos/${owner}/${repoName}`, - { - headers: { - Authorization: `token ${accessToken}`, - Accept: 'application/vnd.github.v3+json', - }, - } - ) - - if (!repoResponse.ok) { - // If the user doesn't have access to the repository, GitHub API will return 404 - analytic.track('GitHub Verification Failed', { - nodeId, - publisherId, - error: 'User does not have access to repository', - }) - - // Check if redirectUri already contains search parameters - const separator = redirectUri.includes('?') ? '&' : '?' - return NextResponse.redirect( - `${redirectUri}${separator}error=repository_access_denied` - ) - } - - // Repository verification successful - analytic.track('GitHub Verification Success', { - nodeId, - publisherId, - }) - - // Redirect back to the application with the token - // Check if redirectUri already contains search parameters - const separator = redirectUri.includes('?') ? '&' : '?' - return NextResponse.redirect( - `${redirectUri}${separator}token=${encodeURIComponent(accessToken)}` - ) + stateData = JSON.parse(Buffer.from(state, 'base64').toString()) } catch (error) { - return NextResponse.json( - { error: 'Internal Server Error' }, - { status: 500 } - ) + return NextResponse.json( + { error: 'Invalid state parameter' }, + { status: 400 } + ) } + + const { redirectUri, nodeId, publisherId, repo } = stateData + + if (!redirectUri || !nodeId || !publisherId || !repo) { + return NextResponse.json( + { error: 'Invalid state parameter data' }, + { status: 400 } + ) + } + + // Exchange code for access token + const tokenResponse = await fetch( + 'https://github.com/login/oauth/access_token', + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Accept: 'application/json', + }, + body: JSON.stringify({ + client_id: clientId, + client_secret: clientSecret, + code, + }), + } + ) + + const tokenData = await tokenResponse.json() + const accessToken = tokenData.access_token + + if (!accessToken) { + return NextResponse.json( + { error: 'Failed to obtain access token' }, + { status: 400 } + ) + } + + // Verify repository ownership + const [owner, repoName] = repo.split('/') + + const repoResponse = await fetch( + `https://api.github.com/repos/${owner}/${repoName}`, + { + headers: { + Authorization: `token ${accessToken}`, + Accept: 'application/vnd.github.v3+json', + }, + } + ) + + if (!repoResponse.ok) { + // If the user doesn't have access to the repository, GitHub API will return 404 + analytic.track('GitHub Verification Failed', { + nodeId, + publisherId, + error: 'User does not have access to repository', + }) + + // Check if redirectUri already contains search parameters + const separator = redirectUri.includes('?') ? '&' : '?' + return NextResponse.redirect( + `${redirectUri}${separator}error=repository_access_denied` + ) + } + + // Repository verification successful + analytic.track('GitHub Verification Success', { + nodeId, + publisherId, + }) + + // Redirect back to the application with the token + // Check if redirectUri already contains search parameters + const separator = redirectUri.includes('?') ? '&' : '?' + return NextResponse.redirect( + `${redirectUri}${separator}token=${encodeURIComponent(accessToken)}` + ) + } catch (error) { + return NextResponse.json( + { error: 'Internal Server Error' }, + { status: 500 } + ) + } } diff --git a/app/api/auth/github/route.ts b/app/api/auth/github/route.ts index 2f732ca4..7f1a136c 100644 --- a/app/api/auth/github/route.ts +++ b/app/api/auth/github/route.ts @@ -7,10 +7,10 @@ import analytic from 'src/analytic/analytic' // // it's safe to omit github client when developing non-github related features. const isGithubClientRequired = - !!process.env.VERCEL_GIT_COMMIT_REF?.match(/^(?:main|staging)$/) + !!process.env.VERCEL_GIT_COMMIT_REF?.match(/^(?:main|staging)$/) if (isGithubClientRequired) { - process.env.GITHUB_CLIENT_ID || DIE('GITHUB_CLIENT_ID is not set') - process.env.GITHUB_CLIENT_SECRET || DIE('GITHUB_CLIENT_SECRET is not set') + process.env.GITHUB_CLIENT_ID || DIE('GITHUB_CLIENT_ID is not set') + process.env.GITHUB_CLIENT_SECRET || DIE('GITHUB_CLIENT_SECRET is not set') } /** @@ -20,75 +20,75 @@ if (isGithubClientRequired) { * It redirects the user to GitHub's authorization page with appropriate scopes. */ export const GET = async (request: NextRequest) => { - try { - const url = new URL(request.url) - const redirectUri = url.searchParams.get('redirectUri') - const owner = url.searchParams.get('owner') - const repo = url.searchParams.get('repo') - const nodeId = url.searchParams.get('nodeId') - const publisherId = url.searchParams.get('publisherId') - const customScope = url.searchParams.get('scope') + try { + const url = new URL(request.url) + const redirectUri = url.searchParams.get('redirectUri') + const owner = url.searchParams.get('owner') + const repo = url.searchParams.get('repo') + const nodeId = url.searchParams.get('nodeId') + const publisherId = url.searchParams.get('publisherId') + const customScope = url.searchParams.get('scope') - if (!redirectUri || !owner || !repo || !nodeId || !publisherId) { - return NextResponse.json( - { error: 'Missing required parameters' }, - { status: 400 } - ) - } + if (!redirectUri || !owner || !repo || !nodeId || !publisherId) { + return NextResponse.json( + { error: 'Missing required parameters' }, + { status: 400 } + ) + } - // GitHub OAuth application credentials - const clientId = process.env.GITHUB_CLIENT_ID + // GitHub OAuth application credentials + const clientId = process.env.GITHUB_CLIENT_ID - if (!clientId) { - return NextResponse.json( - { error: 'GitHub OAuth not configured' }, - { status: 500 } - ) - } + if (!clientId) { + return NextResponse.json( + { error: 'GitHub OAuth not configured' }, + { status: 500 } + ) + } - // Log the OAuth initiation - analytic.track('GitHub OAuth Initiated', { - nodeId, - publisherId, - repository: `https://github.com/${owner}/${repo}`, - }) + // Log the OAuth initiation + analytic.track('GitHub OAuth Initiated', { + nodeId, + publisherId, + repository: `https://github.com/${owner}/${repo}`, + }) - // Use custom scope if provided, otherwise use empty string + // Use custom scope if provided, otherwise use empty string - // State parameter helps prevent CSRF attacks and can store information about the request - const state = Buffer.from( - JSON.stringify({ - redirectUri, - nodeId, - publisherId, - repo: `${owner}/${repo}`, - timestamp: Date.now(), - }) - ).toString('base64') + // State parameter helps prevent CSRF attacks and can store information about the request + const state = Buffer.from( + JSON.stringify({ + redirectUri, + nodeId, + publisherId, + repo: `${owner}/${repo}`, + timestamp: Date.now(), + }) + ).toString('base64') - // - [System environment variables](https://vercel.com/docs/environment-variables/system-environment-variables ) - const xfh = - request.headers.get('x-forwarded-host') || // if use reverse-proxy, e.g. caddy/nginx/vercel - request.headers.get('host') // fallback to request host - const xfp = request.headers.get('x-forwarded-proto') || 'http' - const origin = `${xfp}://${xfh}` + // - [System environment variables](https://vercel.com/docs/environment-variables/system-environment-variables ) + const xfh = + request.headers.get('x-forwarded-host') || // if use reverse-proxy, e.g. caddy/nginx/vercel + request.headers.get('host') // fallback to request host + const xfp = request.headers.get('x-forwarded-proto') || 'http' + const origin = `${xfp}://${xfh}` - // Redirect to GitHub OAuth - const params = new URLSearchParams({ - client_id: clientId, - redirect_uri: `${origin}/api/auth/github/callback`, - scope: customScope || '', - state: state, - allow_signup: 'false', - }) - const githubAuthUrl = `https://github.com/login/oauth/authorize?${params.toString()}` + // Redirect to GitHub OAuth + const params = new URLSearchParams({ + client_id: clientId, + redirect_uri: `${origin}/api/auth/github/callback`, + scope: customScope || '', + state: state, + allow_signup: 'false', + }) + const githubAuthUrl = `https://github.com/login/oauth/authorize?${params.toString()}` - return NextResponse.redirect(githubAuthUrl) - } catch (error) { - console.error('GitHub OAuth error:', error) - return NextResponse.json( - { error: 'Internal Server Error' }, - { status: 500 } - ) - } + return NextResponse.redirect(githubAuthUrl) + } catch (error) { + console.error('GitHub OAuth error:', error) + return NextResponse.json( + { error: 'Internal Server Error' }, + { status: 500 } + ) + } } diff --git a/biome.json b/biome.json index e751bab2..531e714b 100644 --- a/biome.json +++ b/biome.json @@ -1,64 +1,64 @@ { - "$schema": "https://biomejs.dev/schemas/2.2.6/schema.json", - "vcs": { "enabled": true, "clientKind": "git", "useIgnoreFile": true }, - "files": { "ignoreUnknown": false }, - "formatter": { - "enabled": true, - "formatWithErrors": false, - "indentStyle": "space", - "indentWidth": 4, - "lineEnding": "lf", - "lineWidth": 80, - "attributePosition": "auto", - "bracketSameLine": false, - "bracketSpacing": true, - "expand": "auto", - "useEditorconfig": true, - "includes": [ - "**", - "!**/package-lock.json", - "!**/pnpm-lock.yaml", - "!**/package.json", - "!NativeApp/dist/bundles/*", - "!NativeApp/build-*", - "!NativeApp/assets/*", - "!NativeApp/.expo-shared/*", - "!public/*", - "!NativeApp/eas.json", - "!src/api/generated.ts" - ] - }, - "linter": { - "enabled": true, - "rules": { - "recommended": false, - "a11y": { "useAltText": "off" }, - "style": { "useBlockStatements": "off", "useTemplate": "warn" } - }, - "includes": [ - "**", - "**/.storybook", - "!./worktrees", - "!NativeApp/*", - "!src/api/generated.ts" - ] + "$schema": "https://biomejs.dev/schemas/2.2.6/schema.json", + "vcs": { "enabled": true, "clientKind": "git", "useIgnoreFile": true }, + "files": { "ignoreUnknown": false }, + "formatter": { + "enabled": true, + "formatWithErrors": false, + "indentStyle": "space", + "indentWidth": 2, + "lineEnding": "lf", + "lineWidth": 80, + "attributePosition": "auto", + "bracketSameLine": false, + "bracketSpacing": true, + "expand": "auto", + "useEditorconfig": true, + "includes": [ + "**", + "!**/package-lock.json", + "!**/pnpm-lock.yaml", + "!**/package.json", + "!NativeApp/dist/bundles/*", + "!NativeApp/build-*", + "!NativeApp/assets/*", + "!NativeApp/.expo-shared/*", + "!public/*", + "!NativeApp/eas.json", + "!src/api/generated.ts" + ] + }, + "linter": { + "enabled": true, + "rules": { + "recommended": false, + "a11y": { "useAltText": "off" }, + "style": { "useBlockStatements": "off", "useTemplate": "warn" } }, - "javascript": { - "formatter": { - "jsxQuoteStyle": "double", - "quoteProperties": "asNeeded", - "trailingCommas": "es5", - "semicolons": "asNeeded", - "arrowParentheses": "always", - "bracketSameLine": false, - "quoteStyle": "single", - "attributePosition": "auto", - "bracketSpacing": true - } - }, - "html": { "formatter": { "selfCloseVoidElements": "always" } }, - "assist": { - "enabled": true, - "actions": { "source": { "organizeImports": "on" } } + "includes": [ + "**", + "**/.storybook", + "!./worktrees", + "!NativeApp/*", + "!src/api/generated.ts" + ] + }, + "javascript": { + "formatter": { + "jsxQuoteStyle": "double", + "quoteProperties": "asNeeded", + "trailingCommas": "es5", + "semicolons": "asNeeded", + "arrowParentheses": "always", + "bracketSameLine": false, + "quoteStyle": "single", + "attributePosition": "auto", + "bracketSpacing": true } + }, + "html": { "formatter": { "selfCloseVoidElements": "always" } }, + "assist": { + "enabled": true, + "actions": { "source": { "organizeImports": "on" } } + } } diff --git a/bun.lock b/bun.lock index b409d0d4..53901437 100644 --- a/bun.lock +++ b/bun.lock @@ -70,6 +70,7 @@ "sflow": "^1.24.5", "sharp": "^0.34.3", "styled-jsx": "^5.1.7", + "use-async": "^1.2.0", "yaml": "^2.8.1", "zod": "^3.25.76", }, @@ -177,13 +178,13 @@ "@ampproject/remapping": ["@ampproject/remapping@2.3.0", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw=="], - "@apidevtools/json-schema-ref-parser": ["@apidevtools/json-schema-ref-parser@11.7.2", "", { "dependencies": { "@jsdevtools/ono": "^7.1.3", "@types/json-schema": "^7.0.15", "js-yaml": "^4.1.0" } }, "sha512-4gY54eEGEstClvEkGnwVkTkrx0sqwemEFG5OSRRn3tD91XH0+Q8XIkYIfo7IwEWPpJZwILb9GUXeShtplRc/eA=="], + "@apidevtools/json-schema-ref-parser": ["@apidevtools/json-schema-ref-parser@14.0.1", "", { "dependencies": { "@types/json-schema": "^7.0.15", "js-yaml": "^4.1.0" } }, "sha512-Oc96zvmxx1fqoSEdUmfmvvb59/KDOnUoJ7s2t7bISyAn0XEz57LCCw8k2Y4Pf3mwKaZLMciESALORLgfe2frCw=="], "@apidevtools/openapi-schemas": ["@apidevtools/openapi-schemas@2.1.0", "", {}, "sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ=="], "@apidevtools/swagger-methods": ["@apidevtools/swagger-methods@3.0.2", "", {}, "sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg=="], - "@apidevtools/swagger-parser": ["@apidevtools/swagger-parser@10.1.1", "", { "dependencies": { "@apidevtools/json-schema-ref-parser": "11.7.2", "@apidevtools/openapi-schemas": "^2.1.0", "@apidevtools/swagger-methods": "^3.0.2", "@jsdevtools/ono": "^7.1.3", "ajv": "^8.17.1", "ajv-draft-04": "^1.0.0", "call-me-maybe": "^1.0.2" }, "peerDependencies": { "openapi-types": ">=7" } }, "sha512-u/kozRnsPO/x8QtKYJOqoGtC4kH6yg1lfYkB9Au0WhYB0FNLpyFusttQtvhlwjtG3rOwiRz4D8DnnXa8iEpIKA=="], + "@apidevtools/swagger-parser": ["@apidevtools/swagger-parser@12.1.0", "", { "dependencies": { "@apidevtools/json-schema-ref-parser": "14.0.1", "@apidevtools/openapi-schemas": "^2.1.0", "@apidevtools/swagger-methods": "^3.0.2", "ajv": "^8.17.1", "ajv-draft-04": "^1.0.0", "call-me-maybe": "^1.0.2" }, "peerDependencies": { "openapi-types": ">=7" } }, "sha512-e5mJoswsnAX0jG+J09xHFYQXb/bUc5S3pLpMxUuRUA2H8T2kni3yEoyz2R3Dltw5f4A6j6rPNMpWTK+iVDFlng=="], "@asyncapi/specs": ["@asyncapi/specs@6.10.0", "", { "dependencies": { "@types/json-schema": "^7.0.11" } }, "sha512-vB5oKLsdrLUORIZ5BXortZTlVyGWWMC1Nud/0LtgxQ3Yn2738HigAD6EVqScvpPsDUI/bcLVsYEXN4dtXQHVng=="], @@ -265,65 +266,63 @@ "@biomejs/cli-win32-x64": ["@biomejs/cli-win32-x64@2.2.6", "", { "os": "win32", "cpu": "x64" }, "sha512-yx0CqeOhPjYQ5ZXgPfu8QYkgBhVJyvWe36as7jRuPrKPO5ylVDfwVtPQ+K/mooNTADW0IhxOZm3aPu16dP8yNQ=="], - "@bundled-es-modules/cookie": ["@bundled-es-modules/cookie@2.0.1", "", { "dependencies": { "cookie": "^0.7.2" } }, "sha512-8o+5fRPLNbjbdGRRmJj3h6Hh1AQJf2dk3qQ/5ZFb+PXkRNiSoMGGUKlsgLfrxneb72axVJyIYji64E2+nNfYyw=="], - - "@bundled-es-modules/statuses": ["@bundled-es-modules/statuses@1.0.1", "", { "dependencies": { "statuses": "^2.0.1" } }, "sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg=="], - "@chromatic-com/storybook": ["@chromatic-com/storybook@4.1.1", "", { "dependencies": { "@neoconfetti/react": "^1.0.0", "chromatic": "^12.0.0", "filesize": "^10.0.12", "jsonfile": "^6.1.0", "strip-ansi": "^7.1.0" }, "peerDependencies": { "storybook": "^0.0.0-0 || ^9.0.0 || ^9.1.0-0 || ^9.2.0-0 || ^10.0.0-0" } }, "sha512-+Ib4cHtEjKl/Do+4LyU0U1FhLPbIU2Q/zgbOKHBCV+dTC4T3/vGzPqiGsgkdnZyTsK/zXg96LMPSPC4jjOiapg=="], + "@commander-js/extra-typings": ["@commander-js/extra-typings@14.0.0", "", { "peerDependencies": { "commander": "~14.0.0" } }, "sha512-hIn0ncNaJRLkZrxBIp5AsW/eXEHNKYQBh0aPdoUqNgD+Io3NIykQqpKFyKcuasZhicGaEZJX/JBSIkZ4e5x8Dg=="], + "@emnapi/runtime": ["@emnapi/runtime@1.5.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ=="], - "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.10", "", { "os": "aix", "cpu": "ppc64" }, "sha512-0NFWnA+7l41irNuaSVlLfgNT12caWJVLzp5eAVhZ0z1qpxbockccEt3s+149rE64VUI3Ml2zt8Nv5JVc4QXTsw=="], + "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.11", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg=="], - "@esbuild/android-arm": ["@esbuild/android-arm@0.25.10", "", { "os": "android", "cpu": "arm" }, "sha512-dQAxF1dW1C3zpeCDc5KqIYuZ1tgAdRXNoZP7vkBIRtKZPYe2xVr/d3SkirklCHudW1B45tGiUlz2pUWDfbDD4w=="], + "@esbuild/android-arm": ["@esbuild/android-arm@0.25.11", "", { "os": "android", "cpu": "arm" }, "sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg=="], - "@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.10", "", { "os": "android", "cpu": "arm64" }, "sha512-LSQa7eDahypv/VO6WKohZGPSJDq5OVOo3UoFR1E4t4Gj1W7zEQMUhI+lo81H+DtB+kP+tDgBp+M4oNCwp6kffg=="], + "@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.11", "", { "os": "android", "cpu": "arm64" }, "sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ=="], - "@esbuild/android-x64": ["@esbuild/android-x64@0.25.10", "", { "os": "android", "cpu": "x64" }, "sha512-MiC9CWdPrfhibcXwr39p9ha1x0lZJ9KaVfvzA0Wxwz9ETX4v5CHfF09bx935nHlhi+MxhA63dKRRQLiVgSUtEg=="], + "@esbuild/android-x64": ["@esbuild/android-x64@0.25.11", "", { "os": "android", "cpu": "x64" }, "sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g=="], - "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.10", "", { "os": "darwin", "cpu": "arm64" }, "sha512-JC74bdXcQEpW9KkV326WpZZjLguSZ3DfS8wrrvPMHgQOIEIG/sPXEN/V8IssoJhbefLRcRqw6RQH2NnpdprtMA=="], + "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.11", "", { "os": "darwin", "cpu": "arm64" }, "sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w=="], - "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.10", "", { "os": "darwin", "cpu": "x64" }, "sha512-tguWg1olF6DGqzws97pKZ8G2L7Ig1vjDmGTwcTuYHbuU6TTjJe5FXbgs5C1BBzHbJ2bo1m3WkQDbWO2PvamRcg=="], + "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.11", "", { "os": "darwin", "cpu": "x64" }, "sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ=="], - "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.10", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-3ZioSQSg1HT2N05YxeJWYR+Libe3bREVSdWhEEgExWaDtyFbbXWb49QgPvFH8u03vUPX10JhJPcz7s9t9+boWg=="], + "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.11", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA=="], - "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.10", "", { "os": "freebsd", "cpu": "x64" }, "sha512-LLgJfHJk014Aa4anGDbh8bmI5Lk+QidDmGzuC2D+vP7mv/GeSN+H39zOf7pN5N8p059FcOfs2bVlrRr4SK9WxA=="], + "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.11", "", { "os": "freebsd", "cpu": "x64" }, "sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw=="], - "@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.10", "", { "os": "linux", "cpu": "arm" }, "sha512-oR31GtBTFYCqEBALI9r6WxoU/ZofZl962pouZRTEYECvNF/dtXKku8YXcJkhgK/beU+zedXfIzHijSRapJY3vg=="], + "@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.11", "", { "os": "linux", "cpu": "arm" }, "sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw=="], - "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.10", "", { "os": "linux", "cpu": "arm64" }, "sha512-5luJWN6YKBsawd5f9i4+c+geYiVEw20FVW5x0v1kEMWNq8UctFjDiMATBxLvmmHA4bf7F6hTRaJgtghFr9iziQ=="], + "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.11", "", { "os": "linux", "cpu": "arm64" }, "sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA=="], - "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.10", "", { "os": "linux", "cpu": "ia32" }, "sha512-NrSCx2Kim3EnnWgS4Txn0QGt0Xipoumb6z6sUtl5bOEZIVKhzfyp/Lyw4C1DIYvzeW/5mWYPBFJU3a/8Yr75DQ=="], + "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.11", "", { "os": "linux", "cpu": "ia32" }, "sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw=="], - "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.10", "", { "os": "linux", "cpu": "none" }, "sha512-xoSphrd4AZda8+rUDDfD9J6FUMjrkTz8itpTITM4/xgerAZZcFW7Dv+sun7333IfKxGG8gAq+3NbfEMJfiY+Eg=="], + "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.11", "", { "os": "linux", "cpu": "none" }, "sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw=="], - "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.10", "", { "os": "linux", "cpu": "none" }, "sha512-ab6eiuCwoMmYDyTnyptoKkVS3k8fy/1Uvq7Dj5czXI6DF2GqD2ToInBI0SHOp5/X1BdZ26RKc5+qjQNGRBelRA=="], + "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.11", "", { "os": "linux", "cpu": "none" }, "sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ=="], - "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.10", "", { "os": "linux", "cpu": "ppc64" }, "sha512-NLinzzOgZQsGpsTkEbdJTCanwA5/wozN9dSgEl12haXJBzMTpssebuXR42bthOF3z7zXFWH1AmvWunUCkBE4EA=="], + "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.11", "", { "os": "linux", "cpu": "ppc64" }, "sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw=="], - "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.10", "", { "os": "linux", "cpu": "none" }, "sha512-FE557XdZDrtX8NMIeA8LBJX3dC2M8VGXwfrQWU7LB5SLOajfJIxmSdyL/gU1m64Zs9CBKvm4UAuBp5aJ8OgnrA=="], + "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.11", "", { "os": "linux", "cpu": "none" }, "sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww=="], - "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.10", "", { "os": "linux", "cpu": "s390x" }, "sha512-3BBSbgzuB9ajLoVZk0mGu+EHlBwkusRmeNYdqmznmMc9zGASFjSsxgkNsqmXugpPk00gJ0JNKh/97nxmjctdew=="], + "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.11", "", { "os": "linux", "cpu": "s390x" }, "sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw=="], - "@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.10", "", { "os": "linux", "cpu": "x64" }, "sha512-QSX81KhFoZGwenVyPoberggdW1nrQZSvfVDAIUXr3WqLRZGZqWk/P4T8p2SP+de2Sr5HPcvjhcJzEiulKgnxtA=="], + "@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.11", "", { "os": "linux", "cpu": "x64" }, "sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ=="], - "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.10", "", { "os": "none", "cpu": "arm64" }, "sha512-AKQM3gfYfSW8XRk8DdMCzaLUFB15dTrZfnX8WXQoOUpUBQ+NaAFCP1kPS/ykbbGYz7rxn0WS48/81l9hFl3u4A=="], + "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.11", "", { "os": "none", "cpu": "arm64" }, "sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg=="], - "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.10", "", { "os": "none", "cpu": "x64" }, "sha512-7RTytDPGU6fek/hWuN9qQpeGPBZFfB4zZgcz2VK2Z5VpdUxEI8JKYsg3JfO0n/Z1E/6l05n0unDCNc4HnhQGig=="], + "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.11", "", { "os": "none", "cpu": "x64" }, "sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A=="], - "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.10", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-5Se0VM9Wtq797YFn+dLimf2Zx6McttsH2olUBsDml+lm0GOCRVebRWUvDtkY4BWYv/3NgzS8b/UM3jQNh5hYyw=="], + "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.11", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg=="], - "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.10", "", { "os": "openbsd", "cpu": "x64" }, "sha512-XkA4frq1TLj4bEMB+2HnI0+4RnjbuGZfet2gs/LNs5Hc7D89ZQBHQ0gL2ND6Lzu1+QVkjp3x1gIcPKzRNP8bXw=="], + "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.11", "", { "os": "openbsd", "cpu": "x64" }, "sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw=="], - "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.25.10", "", { "os": "none", "cpu": "arm64" }, "sha512-AVTSBhTX8Y/Fz6OmIVBip9tJzZEUcY8WLh7I59+upa5/GPhh2/aM6bvOMQySspnCCHvFi79kMtdJS1w0DXAeag=="], + "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.25.11", "", { "os": "none", "cpu": "arm64" }, "sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ=="], - "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.10", "", { "os": "sunos", "cpu": "x64" }, "sha512-fswk3XT0Uf2pGJmOpDB7yknqhVkJQkAQOcW/ccVOtfx05LkbWOaRAtn5SaqXypeKQra1QaEa841PgrSL9ubSPQ=="], + "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.11", "", { "os": "sunos", "cpu": "x64" }, "sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA=="], - "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.10", "", { "os": "win32", "cpu": "arm64" }, "sha512-ah+9b59KDTSfpaCg6VdJoOQvKjI33nTaQr4UluQwW7aEwZQsbMCfTmfEO4VyewOxx4RaDT/xCy9ra2GPWmO7Kw=="], + "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.11", "", { "os": "win32", "cpu": "arm64" }, "sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q=="], - "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.10", "", { "os": "win32", "cpu": "ia32" }, "sha512-QHPDbKkrGO8/cz9LKVnJU22HOi4pxZnZhhA2HYHez5Pz4JeffhDjf85E57Oyco163GnzNCVkZK0b/n4Y0UHcSw=="], + "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.11", "", { "os": "win32", "cpu": "ia32" }, "sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA=="], - "@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.10", "", { "os": "win32", "cpu": "x64" }, "sha512-9KpxSVFCu0iK1owoez6aC/s/EdUQLDN3adTxGCqxMVhrPDj6bt5dbrHDXUuq+Bs2vATFBBrQS5vdQ/Ed2P+nbw=="], + "@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.11", "", { "os": "win32", "cpu": "x64" }, "sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA=="], "@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.9.0", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g=="], @@ -433,7 +432,7 @@ "@floating-ui/utils": ["@floating-ui/utils@0.2.10", "", {}, "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ=="], - "@gerrit0/mini-shiki": ["@gerrit0/mini-shiki@3.13.0", "", { "dependencies": { "@shikijs/engine-oniguruma": "^3.13.0", "@shikijs/langs": "^3.13.0", "@shikijs/themes": "^3.13.0", "@shikijs/types": "^3.13.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-mCrNvZNYNrwKer5PWLF6cOc0OEe2eKzgy976x+IT2tynwJYl+7UpHTSeXQJGijgTcoOf+f359L946unWlYRnsg=="], + "@gerrit0/mini-shiki": ["@gerrit0/mini-shiki@3.13.1", "", { "dependencies": { "@shikijs/engine-oniguruma": "^3.13.0", "@shikijs/langs": "^3.13.0", "@shikijs/themes": "^3.13.0", "@shikijs/types": "^3.13.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-fDWM5QQc70jwBIt/WYMybdyXdyBmoJe7r1hpM+V/bHnyla79sygVDK2/LlVxIPc4n5FA3B5Wzt7AQH2+psNphg=="], "@grpc/grpc-js": ["@grpc/grpc-js@1.9.15", "", { "dependencies": { "@grpc/proto-loader": "^0.7.8", "@types/node": ">=12.12.47" } }, "sha512-nqE7Hc0AzI+euzUwDAy0aY5hCp10r734gMGRdU+qOPX0XSceI2ULrcXB5U2xSc5VkWwalCj4M7GzCAygZl2KoQ=="], @@ -447,7 +446,7 @@ "@humanwhocodes/object-schema": ["@humanwhocodes/object-schema@2.0.3", "", {}, "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA=="], - "@ibm-cloud/openapi-ruleset": ["@ibm-cloud/openapi-ruleset@1.32.1", "", { "dependencies": { "@ibm-cloud/openapi-ruleset-utilities": "1.9.0", "@stoplight/spectral-formats": "^1.8.2", "@stoplight/spectral-functions": "^1.9.3", "@stoplight/spectral-rulesets": "^1.21.3", "chalk": "^4.1.2", "inflected": "^2.1.0", "jsonschema": "^1.5.0", "lodash": "^4.17.21", "loglevel": "^1.9.2", "loglevel-plugin-prefix": "0.8.4", "minimatch": "^6.2.0", "validator": "^13.11.0" } }, "sha512-xMb/ywRGxU9SIowwmw0M3lUK0QUCqhDVWOonkLf5/ALGEWheoRyySk0x8ujJJIt8F3Ql+lZCwzbhGWB+lD7ylg=="], + "@ibm-cloud/openapi-ruleset": ["@ibm-cloud/openapi-ruleset@1.33.1", "", { "dependencies": { "@ibm-cloud/openapi-ruleset-utilities": "1.9.0", "@stoplight/spectral-formats": "^1.8.2", "@stoplight/spectral-functions": "^1.9.3", "@stoplight/spectral-rulesets": "^1.21.3", "chalk": "^4.1.2", "inflected": "^2.1.0", "jsonschema": "^1.5.0", "lodash": "^4.17.21", "loglevel": "^1.9.2", "loglevel-plugin-prefix": "0.8.4", "minimatch": "^6.2.0", "validator": "^13.11.0" } }, "sha512-70wibJ17BFXM6h0tVo2rvvSgMvp14vsqtL2AZJKJLytHaPgbRL0XZRYWQ89aQpwBH0NYO2dzE+FkRCkVX0irUw=="], "@ibm-cloud/openapi-ruleset-utilities": ["@ibm-cloud/openapi-ruleset-utilities@1.9.0", "", {}, "sha512-AoFbSarOqFBYH+1TZ9Ahkm2IWYSi5v0pBk88fpV+5b3qGJukypX8PwvCWADjuyIccKg48/F73a6hTTkBzDQ2UA=="], @@ -497,15 +496,15 @@ "@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.34.4", "", { "os": "win32", "cpu": "x64" }, "sha512-xIyj4wpYs8J18sVN3mSQjwrw7fKUqRw+Z5rnHNCy5fYTxigBz81u5mOMPmFumwjcn8+ld1ppptMBCLic1nz6ig=="], - "@inquirer/ansi": ["@inquirer/ansi@1.0.0", "", {}, "sha512-JWaTfCxI1eTmJ1BIv86vUfjVatOdxwD0DAVKYevY8SazeUUZtW+tNbsdejVO1GYE0GXJW1N1ahmiC3TFd+7wZA=="], + "@inquirer/ansi": ["@inquirer/ansi@1.0.1", "", {}, "sha512-yqq0aJW/5XPhi5xOAL1xRCpe1eh8UFVgYFpFsjEqmIR8rKLyP+HINvFXwUaxYICflJrVlxnp7lLN6As735kVpw=="], - "@inquirer/confirm": ["@inquirer/confirm@5.1.18", "", { "dependencies": { "@inquirer/core": "^10.2.2", "@inquirer/type": "^3.0.8" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-MilmWOzHa3Ks11tzvuAmFoAd/wRuaP3SwlT1IZhyMke31FKLxPiuDWcGXhU+PKveNOpAc4axzAgrgxuIJJRmLw=="], + "@inquirer/confirm": ["@inquirer/confirm@5.1.19", "", { "dependencies": { "@inquirer/core": "^10.3.0", "@inquirer/type": "^3.0.9" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-wQNz9cfcxrtEnUyG5PndC8g3gZ7lGDBzmWiXZkX8ot3vfZ+/BLjR8EvyGX4YzQLeVqtAlY/YScZpW7CW8qMoDQ=="], - "@inquirer/core": ["@inquirer/core@10.2.2", "", { "dependencies": { "@inquirer/ansi": "^1.0.0", "@inquirer/figures": "^1.0.13", "@inquirer/type": "^3.0.8", "cli-width": "^4.1.0", "mute-stream": "^2.0.0", "signal-exit": "^4.1.0", "wrap-ansi": "^6.2.0", "yoctocolors-cjs": "^2.1.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-yXq/4QUnk4sHMtmbd7irwiepjB8jXU0kkFRL4nr/aDBA2mDz13cMakEWdDwX3eSCTkk03kwcndD1zfRAIlELxA=="], + "@inquirer/core": ["@inquirer/core@10.3.0", "", { "dependencies": { "@inquirer/ansi": "^1.0.1", "@inquirer/figures": "^1.0.14", "@inquirer/type": "^3.0.9", "cli-width": "^4.1.0", "mute-stream": "^2.0.0", "signal-exit": "^4.1.0", "wrap-ansi": "^6.2.0", "yoctocolors-cjs": "^2.1.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-Uv2aPPPSK5jeCplQmQ9xadnFx2Zhj9b5Dj7bU6ZeCdDNNY11nhYy4btcSdtDguHqCT2h5oNeQTcUNSGGLA7NTA=="], - "@inquirer/figures": ["@inquirer/figures@1.0.13", "", {}, "sha512-lGPVU3yO9ZNqA7vTYz26jny41lE7yoQansmqdMLBEfqaGsmdg7V3W9mK9Pvb5IL4EVZ9GnSDGMO/cJXud5dMaw=="], + "@inquirer/figures": ["@inquirer/figures@1.0.14", "", {}, "sha512-DbFgdt+9/OZYFM+19dbpXOSeAstPy884FPy1KjDu4anWwymZeOYhMY1mdFri172htv6mvc/uvIAAi7b7tvjJBQ=="], - "@inquirer/type": ["@inquirer/type@3.0.8", "", { "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-lg9Whz8onIHRthWaN1Q9EGLa/0LFJjyM8mEUbL1eTi6yMGvBf8gvyDLtxSXztQsxMvhxxNpJYrwa1YHdq+w4Jw=="], + "@inquirer/type": ["@inquirer/type@3.0.9", "", { "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-QPaNt/nmE2bLGQa9b7wwyRJoLZ7pN6rcyXvzU0YCmivmJyq1BVo94G98tStRWkoD1RgDX5C+dPlhhHzNdu/W/w=="], "@isaacs/balanced-match": ["@isaacs/balanced-match@4.0.1", "", {}, "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ=="], @@ -537,8 +536,6 @@ "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="], - "@jsdevtools/ono": ["@jsdevtools/ono@7.1.3", "", {}, "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg=="], - "@jsep-plugin/assignment": ["@jsep-plugin/assignment@1.3.0", "", { "peerDependencies": { "jsep": "^0.4.0||^1.0.0" } }, "sha512-VVgV+CXrhbMI3aSusQyclHkenWSAm95WaiKrMxRFam3JSUiIaQjoMIw2sEs/OX4XifnqeQUN4DYbJjlA8EfktQ=="], "@jsep-plugin/regex": ["@jsep-plugin/regex@1.0.4", "", { "peerDependencies": { "jsep": "^0.4.0||^1.0.0" } }, "sha512-q7qL4Mgjs1vByCaTnDFcBnV9HS7GVPJX5vyVoCgZHNSC9rjwIlmbXG5sUuorR5ndfHAIlJ8pVStxvjXHbNvtUg=="], @@ -553,21 +550,21 @@ "@mdx-js/react": ["@mdx-js/react@2.1.4", "", { "dependencies": { "@types/mdx": "^2.0.0", "@types/react": ">=16" }, "peerDependencies": { "react": ">=16" } }, "sha512-PRwLjoAxhSA6xTB2+FA5CPGUCOsIK3bJD0RYsoju+nUIyOpIZUSw6SJChfILByLizzxqslE0R+l8IjARo0N+hA=="], - "@mixpanel/rrdom": ["@mixpanel/rrdom@2.0.0-alpha.18.1", "", { "dependencies": { "@mixpanel/rrweb-snapshot": "^2.0.0-alpha.18" } }, "sha512-bkltbuuYuXuzGoBaDHQOotUn1Z3+kXg98uBjjoq+YLUh3REv0ok1q/B912ZyzBEcU856zM3iLYrFVt3sl9/ZYA=="], + "@mixpanel/rrdom": ["@mixpanel/rrdom@2.0.0-alpha.18.2", "", { "dependencies": { "@mixpanel/rrweb-snapshot": "^2.0.0-alpha.18" } }, "sha512-vX/tbnS14ZzzatC7vOyvAm9tOLU8tof0BuppBlphzEx1YHTSw8DQiAmyAc0AmXidchLV0W+cUHV/WsehPLh2hQ=="], - "@mixpanel/rrweb": ["@mixpanel/rrweb@2.0.0-alpha.18.1", "", { "dependencies": { "@mixpanel/rrdom": "^2.0.0-alpha.18", "@mixpanel/rrweb-snapshot": "^2.0.0-alpha.18", "@mixpanel/rrweb-types": "^2.0.0-alpha.18", "@mixpanel/rrweb-utils": "^2.0.0-alpha.18", "@types/css-font-loading-module": "0.0.7", "@xstate/fsm": "^1.4.0", "base64-arraybuffer": "^1.0.1", "mitt": "^3.0.0" } }, "sha512-LH2wmwLPSAtq7j3iqxm32cFwDCp0xqLiXKDJq1B7WWGowNfrGOfVjqZ4ftf5dXMm0w2UNpx8tWfi+9Tt4YMt0g=="], + "@mixpanel/rrweb": ["@mixpanel/rrweb@2.0.0-alpha.18.2", "", { "dependencies": { "@mixpanel/rrdom": "^2.0.0-alpha.18", "@mixpanel/rrweb-snapshot": "^2.0.0-alpha.18", "@mixpanel/rrweb-types": "^2.0.0-alpha.18", "@mixpanel/rrweb-utils": "^2.0.0-alpha.18", "@types/css-font-loading-module": "0.0.7", "@xstate/fsm": "^1.4.0", "base64-arraybuffer": "^1.0.1", "mitt": "^3.0.0" } }, "sha512-J3dVTEu6Z4p8di7y9KKvUooNuBjX97DdG6XGWoPEPi07A9512h9M8MEtvlY3mK0PGfuC0Mz5Pv/Ws6gjGYfKQg=="], - "@mixpanel/rrweb-snapshot": ["@mixpanel/rrweb-snapshot@2.0.0-alpha.18.1", "", { "dependencies": { "postcss": "^8.4.38" } }, "sha512-PKwu7NQwogHcJrWS7FSOIfo+d8QVjI1H67Xoe7q0CR9a0xpKsxrR/AhJRm4uUMI5cN4f7eH0mxyXuPj4X7rLtg=="], + "@mixpanel/rrweb-snapshot": ["@mixpanel/rrweb-snapshot@2.0.0-alpha.18.2", "", { "dependencies": { "postcss": "^8.4.38" } }, "sha512-2kSnjZZ3QZ9zOz/isOt8s54mXUUDgXk/u0eEi/rE0xBWDeuA0NHrBcqiMc+w4F/yWWUpo5F5zcuPeYpc6ufAsw=="], - "@mixpanel/rrweb-types": ["@mixpanel/rrweb-types@2.0.0-alpha.18.1", "", {}, "sha512-0gVDvG551iDTV+ffn2KzPfEc1r2YD0y1Zwm+p1NzXMw55/dnu+ZXJ1yVF5ciI6ebYk0udKV9PAZlIye3M5yENA=="], + "@mixpanel/rrweb-types": ["@mixpanel/rrweb-types@2.0.0-alpha.18.2", "", {}, "sha512-ucIYe1mfJ2UksvXW+d3bOySTB2/0yUSqQJlUydvbBz6OO2Bhq3nJHyLXV9ExkgUMZm1ZyDcvvmNUd1+5tAXlpA=="], - "@mixpanel/rrweb-utils": ["@mixpanel/rrweb-utils@2.0.0-alpha.18.1", "", {}, "sha512-RP9y05dt08HT2kcDZWQebU76LclCLivGvRqv6530w6e13UdfhPM+/Qxg9X49LuzJyuCCk+9FAu5IL4doph7nsQ=="], + "@mixpanel/rrweb-utils": ["@mixpanel/rrweb-utils@2.0.0-alpha.18.2", "", {}, "sha512-OomKIB6GTx5xvCLJ7iic2khT/t/tnCJUex13aEqsbSqIT/UzUUsqf+LTrgUK5ex+f6odmkCNjre2y5jvpNqn+g=="], - "@monaco-editor/loader": ["@monaco-editor/loader@1.5.0", "", { "dependencies": { "state-local": "^1.0.6" } }, "sha512-hKoGSM+7aAc7eRTRjpqAZucPmoNOC4UUbknb/VNoTkEIkCPhqV8LfbsgM1webRM7S/z21eHEx9Fkwx8Z/C/+Xw=="], + "@monaco-editor/loader": ["@monaco-editor/loader@1.6.1", "", { "dependencies": { "state-local": "^1.0.6" } }, "sha512-w3tEnj9HYEC73wtjdpR089AqkUPskFRcdkxsiSFt3SoUc3OHpmu+leP94CXBm4mHfefmhsdfI0ZQu6qJ0wgtPg=="], "@monaco-editor/react": ["@monaco-editor/react@4.7.0", "", { "dependencies": { "@monaco-editor/loader": "^1.5.0" }, "peerDependencies": { "monaco-editor": ">= 0.25.0 < 1", "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" } }, "sha512-cyzXQCtO47ydzxpQtCGSQGOC8Gk3ZUeBXFAxD+CWXYFo5OqZyZUonFl0DwUlTyAfRHntBfw2p3w4s9R6oe1eCA=="], - "@mswjs/interceptors": ["@mswjs/interceptors@0.39.6", "", { "dependencies": { "@open-draft/deferred-promise": "^2.2.0", "@open-draft/logger": "^0.3.0", "@open-draft/until": "^2.0.0", "is-node-process": "^1.2.0", "outvariant": "^1.4.3", "strict-event-emitter": "^0.5.1" } }, "sha512-bndDP83naYYkfayr/qhBHMhk0YGwS1iv6vaEGcr0SQbO0IZtbOPqjKjds/WcG+bJA+1T5vCx6kprKOzn5Bg+Vw=="], + "@mswjs/interceptors": ["@mswjs/interceptors@0.40.0", "", { "dependencies": { "@open-draft/deferred-promise": "^2.2.0", "@open-draft/logger": "^0.3.0", "@open-draft/until": "^2.0.0", "is-node-process": "^1.2.0", "outvariant": "^1.4.3", "strict-event-emitter": "^0.5.1" } }, "sha512-EFd6cVbHsgLa6wa4RljGj6Wk75qoHxUSyc5asLyyPSyuhIcdS2Q3Phw6ImS1q+CkALthJRShiYfKANcQMuMqsQ=="], "@neoconfetti/react": ["@neoconfetti/react@1.0.0", "", {}, "sha512-klcSooChXXOzIm+SE5IISIAn3bYzYfPjbX7D7HoqZL84oAfgREeSg5vSIaSFH+DaGzzvImTyWe1OyrJ67vik4A=="], @@ -599,51 +596,51 @@ "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="], - "@octokit/app": ["@octokit/app@16.1.0", "", { "dependencies": { "@octokit/auth-app": "^8.1.0", "@octokit/auth-unauthenticated": "^7.0.1", "@octokit/core": "^7.0.2", "@octokit/oauth-app": "^8.0.1", "@octokit/plugin-paginate-rest": "^13.0.0", "@octokit/types": "^14.0.0", "@octokit/webhooks": "^14.0.0" } }, "sha512-OdKHnm0CYLk8Setr47CATT4YnRTvWkpTYvE+B/l2B0mjszlfOIit3wqPHVslD2jfc1bD4UbO7Mzh6gjCuMZKsA=="], + "@octokit/app": ["@octokit/app@16.1.1", "", { "dependencies": { "@octokit/auth-app": "^8.1.1", "@octokit/auth-unauthenticated": "^7.0.2", "@octokit/core": "^7.0.5", "@octokit/oauth-app": "^8.0.2", "@octokit/plugin-paginate-rest": "^13.2.0", "@octokit/types": "^15.0.0", "@octokit/webhooks": "^14.0.0" } }, "sha512-pcvKSN6Q6aT3gU5heoDFs3ywU5xejxeqs1rQpUwgN7CmBlxCSy9aCoqFuC6GpVv71O/Qq/VuYfCNzrOZp/9Ycw=="], - "@octokit/auth-app": ["@octokit/auth-app@8.1.0", "", { "dependencies": { "@octokit/auth-oauth-app": "^9.0.1", "@octokit/auth-oauth-user": "^6.0.0", "@octokit/request": "^10.0.2", "@octokit/request-error": "^7.0.0", "@octokit/types": "^14.0.0", "toad-cache": "^3.7.0", "universal-github-app-jwt": "^2.2.0", "universal-user-agent": "^7.0.0" } }, "sha512-6bWhyvLXqCSfHiqlwzn9pScLZ+Qnvh/681GR/UEEPCMIVwfpRDBw0cCzy3/t2Dq8B7W2X/8pBgmw6MOiyE0DXQ=="], + "@octokit/auth-app": ["@octokit/auth-app@8.1.1", "", { "dependencies": { "@octokit/auth-oauth-app": "^9.0.2", "@octokit/auth-oauth-user": "^6.0.1", "@octokit/request": "^10.0.5", "@octokit/request-error": "^7.0.1", "@octokit/types": "^15.0.0", "toad-cache": "^3.7.0", "universal-github-app-jwt": "^2.2.0", "universal-user-agent": "^7.0.0" } }, "sha512-yW9YUy1cuqWlz8u7908ed498wJFt42VYsYWjvepjojM4BdZSp4t+5JehFds7LfvYi550O/GaUI94rgbhswvxfA=="], - "@octokit/auth-oauth-app": ["@octokit/auth-oauth-app@9.0.1", "", { "dependencies": { "@octokit/auth-oauth-device": "^8.0.1", "@octokit/auth-oauth-user": "^6.0.0", "@octokit/request": "^10.0.2", "@octokit/types": "^14.0.0", "universal-user-agent": "^7.0.0" } }, "sha512-TthWzYxuHKLAbmxdFZwFlmwVyvynpyPmjwc+2/cI3cvbT7mHtsAW9b1LvQaNnAuWL+pFnqtxdmrU8QpF633i1g=="], + "@octokit/auth-oauth-app": ["@octokit/auth-oauth-app@9.0.2", "", { "dependencies": { "@octokit/auth-oauth-device": "^8.0.2", "@octokit/auth-oauth-user": "^6.0.1", "@octokit/request": "^10.0.5", "@octokit/types": "^15.0.0", "universal-user-agent": "^7.0.0" } }, "sha512-vmjSHeuHuM+OxZLzOuoYkcY3OPZ8erJ5lfswdTmm+4XiAKB5PmCk70bA1is4uwSl/APhRVAv4KHsgevWfEKIPQ=="], - "@octokit/auth-oauth-device": ["@octokit/auth-oauth-device@8.0.1", "", { "dependencies": { "@octokit/oauth-methods": "^6.0.0", "@octokit/request": "^10.0.2", "@octokit/types": "^14.0.0", "universal-user-agent": "^7.0.0" } }, "sha512-TOqId/+am5yk9zor0RGibmlqn4V0h8vzjxlw/wYr3qzkQxl8aBPur384D1EyHtqvfz0syeXji4OUvKkHvxk/Gw=="], + "@octokit/auth-oauth-device": ["@octokit/auth-oauth-device@8.0.2", "", { "dependencies": { "@octokit/oauth-methods": "^6.0.1", "@octokit/request": "^10.0.5", "@octokit/types": "^15.0.0", "universal-user-agent": "^7.0.0" } }, "sha512-KW7Ywrz7ei7JX+uClWD2DN1259fnkoKuVdhzfpQ3/GdETaCj4Tx0IjvuJrwhP/04OhcMu5yR6tjni0V6LBihdw=="], - "@octokit/auth-oauth-user": ["@octokit/auth-oauth-user@6.0.0", "", { "dependencies": { "@octokit/auth-oauth-device": "^8.0.1", "@octokit/oauth-methods": "^6.0.0", "@octokit/request": "^10.0.2", "@octokit/types": "^14.0.0", "universal-user-agent": "^7.0.0" } }, "sha512-GV9IW134PHsLhtUad21WIeP9mlJ+QNpFd6V9vuPWmaiN25HEJeEQUcS4y5oRuqCm9iWDLtfIs+9K8uczBXKr6A=="], + "@octokit/auth-oauth-user": ["@octokit/auth-oauth-user@6.0.1", "", { "dependencies": { "@octokit/auth-oauth-device": "^8.0.2", "@octokit/oauth-methods": "^6.0.1", "@octokit/request": "^10.0.5", "@octokit/types": "^15.0.0", "universal-user-agent": "^7.0.0" } }, "sha512-vlKsL1KUUPvwXpv574zvmRd+/4JiDFXABIZNM39+S+5j2kODzGgjk7w5WtiQ1x24kRKNaE7v9DShNbw43UA3Hw=="], "@octokit/auth-token": ["@octokit/auth-token@6.0.0", "", {}, "sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w=="], - "@octokit/auth-unauthenticated": ["@octokit/auth-unauthenticated@7.0.1", "", { "dependencies": { "@octokit/request-error": "^7.0.0", "@octokit/types": "^14.0.0" } }, "sha512-qVq1vdjLLZdE8kH2vDycNNjuJRCD1q2oet1nA/GXWaYlpDxlR7rdVhX/K/oszXslXiQIiqrQf+rdhDlA99JdTQ=="], + "@octokit/auth-unauthenticated": ["@octokit/auth-unauthenticated@7.0.2", "", { "dependencies": { "@octokit/request-error": "^7.0.1", "@octokit/types": "^15.0.0" } }, "sha512-vjcPRP1xsKWdYKiyKmHkLFCxeH4QvVTv05VJlZxwNToslBFcHRJlsWRaoI2+2JGCf9tIM99x8cN0b1rlAHJiQw=="], - "@octokit/core": ["@octokit/core@7.0.4", "", { "dependencies": { "@octokit/auth-token": "^6.0.0", "@octokit/graphql": "^9.0.1", "@octokit/request": "^10.0.2", "@octokit/request-error": "^7.0.0", "@octokit/types": "^15.0.0", "before-after-hook": "^4.0.0", "universal-user-agent": "^7.0.0" } }, "sha512-jOT8V1Ba5BdC79sKrRWDdMT5l1R+XNHTPR6CPWzUP2EcfAcvIHZWF0eAbmRcpOOP5gVIwnqNg0C4nvh6Abc3OA=="], + "@octokit/core": ["@octokit/core@7.0.5", "", { "dependencies": { "@octokit/auth-token": "^6.0.0", "@octokit/graphql": "^9.0.2", "@octokit/request": "^10.0.4", "@octokit/request-error": "^7.0.1", "@octokit/types": "^15.0.0", "before-after-hook": "^4.0.0", "universal-user-agent": "^7.0.0" } }, "sha512-t54CUOsFMappY1Jbzb7fetWeO0n6K0k/4+/ZpkS+3Joz8I4VcvY9OiEBFRYISqaI2fq5sCiPtAjRDOzVYG8m+Q=="], - "@octokit/endpoint": ["@octokit/endpoint@11.0.0", "", { "dependencies": { "@octokit/types": "^14.0.0", "universal-user-agent": "^7.0.2" } }, "sha512-hoYicJZaqISMAI3JfaDr1qMNi48OctWuOih1m80bkYow/ayPw6Jj52tqWJ6GEoFTk1gBqfanSoI1iY99Z5+ekQ=="], + "@octokit/endpoint": ["@octokit/endpoint@11.0.1", "", { "dependencies": { "@octokit/types": "^15.0.0", "universal-user-agent": "^7.0.2" } }, "sha512-7P1dRAZxuWAOPI7kXfio88trNi/MegQ0IJD3vfgC3b+LZo1Qe6gRJc2v0mz2USWWJOKrB2h5spXCzGbw+fAdqA=="], - "@octokit/graphql": ["@octokit/graphql@9.0.1", "", { "dependencies": { "@octokit/request": "^10.0.2", "@octokit/types": "^14.0.0", "universal-user-agent": "^7.0.0" } }, "sha512-j1nQNU1ZxNFx2ZtKmL4sMrs4egy5h65OMDmSbVyuCzjOcwsHq6EaYjOTGXPQxgfiN8dJ4CriYHk6zF050WEULg=="], + "@octokit/graphql": ["@octokit/graphql@9.0.2", "", { "dependencies": { "@octokit/request": "^10.0.4", "@octokit/types": "^15.0.0", "universal-user-agent": "^7.0.0" } }, "sha512-iz6KzZ7u95Fzy9Nt2L8cG88lGRMr/qy1Q36ih/XVzMIlPDMYwaNLE/ENhqmIzgPrlNWiYJkwmveEetvxAgFBJw=="], - "@octokit/oauth-app": ["@octokit/oauth-app@8.0.1", "", { "dependencies": { "@octokit/auth-oauth-app": "^9.0.1", "@octokit/auth-oauth-user": "^6.0.0", "@octokit/auth-unauthenticated": "^7.0.1", "@octokit/core": "^7.0.2", "@octokit/oauth-authorization-url": "^8.0.0", "@octokit/oauth-methods": "^6.0.0", "@types/aws-lambda": "^8.10.83", "universal-user-agent": "^7.0.0" } }, "sha512-QnhMYEQpnYbEPn9cae+wXL2LuPMFglmfeuDJXXsyxIXdoORwkLK8y0cHhd/5du9MbO/zdG/BXixzB7EEwU63eQ=="], + "@octokit/oauth-app": ["@octokit/oauth-app@8.0.3", "", { "dependencies": { "@octokit/auth-oauth-app": "^9.0.2", "@octokit/auth-oauth-user": "^6.0.1", "@octokit/auth-unauthenticated": "^7.0.2", "@octokit/core": "^7.0.5", "@octokit/oauth-authorization-url": "^8.0.0", "@octokit/oauth-methods": "^6.0.1", "@types/aws-lambda": "^8.10.83", "universal-user-agent": "^7.0.0" } }, "sha512-jnAjvTsPepyUaMu9e69hYBuozEPgYqP4Z3UnpmvoIzHDpf8EXDGvTY1l1jK0RsZ194oRd+k6Hm13oRU8EoDFwg=="], "@octokit/oauth-authorization-url": ["@octokit/oauth-authorization-url@8.0.0", "", {}, "sha512-7QoLPRh/ssEA/HuHBHdVdSgF8xNLz/Bc5m9fZkArJE5bb6NmVkDm3anKxXPmN1zh6b5WKZPRr3697xKT/yM3qQ=="], - "@octokit/oauth-methods": ["@octokit/oauth-methods@6.0.0", "", { "dependencies": { "@octokit/oauth-authorization-url": "^8.0.0", "@octokit/request": "^10.0.2", "@octokit/request-error": "^7.0.0", "@octokit/types": "^14.0.0" } }, "sha512-Q8nFIagNLIZgM2odAraelMcDssapc+lF+y3OlcIPxyAU+knefO8KmozGqfnma1xegRDP4z5M73ABsamn72bOcA=="], + "@octokit/oauth-methods": ["@octokit/oauth-methods@6.0.1", "", { "dependencies": { "@octokit/oauth-authorization-url": "^8.0.0", "@octokit/request": "^10.0.5", "@octokit/request-error": "^7.0.1", "@octokit/types": "^15.0.0" } }, "sha512-xi6Iut3izMCFzXBJtxxJehxJmAKjE8iwj6L5+raPRwlTNKAbOOBJX7/Z8AF5apD4aXvc2skwIdOnC+CQ4QuA8Q=="], - "@octokit/openapi-types": ["@octokit/openapi-types@25.1.0", "", {}, "sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA=="], + "@octokit/openapi-types": ["@octokit/openapi-types@26.0.0", "", {}, "sha512-7AtcfKtpo77j7Ts73b4OWhOZHTKo/gGY8bB3bNBQz4H+GRSWqx2yvj8TXRsbdTE0eRmYmXOEY66jM7mJ7LzfsA=="], "@octokit/openapi-webhooks-types": ["@octokit/openapi-webhooks-types@12.0.3", "", {}, "sha512-90MF5LVHjBedwoHyJsgmaFhEN1uzXyBDRLEBe7jlTYx/fEhPAk3P3DAJsfZwC54m8hAIryosJOL+UuZHB3K3yA=="], "@octokit/plugin-paginate-graphql": ["@octokit/plugin-paginate-graphql@6.0.0", "", { "peerDependencies": { "@octokit/core": ">=6" } }, "sha512-crfpnIoFiBtRkvPqOyLOsw12XsveYuY2ieP6uYDosoUegBJpSVxGwut9sxUgFFcll3VTOTqpUf8yGd8x1OmAkQ=="], - "@octokit/plugin-paginate-rest": ["@octokit/plugin-paginate-rest@13.1.1", "", { "dependencies": { "@octokit/types": "^14.1.0" }, "peerDependencies": { "@octokit/core": ">=6" } }, "sha512-q9iQGlZlxAVNRN2jDNskJW/Cafy7/XE52wjZ5TTvyhyOD904Cvx//DNyoO3J/MXJ0ve3rPoNWKEg5iZrisQSuw=="], + "@octokit/plugin-paginate-rest": ["@octokit/plugin-paginate-rest@13.2.0", "", { "dependencies": { "@octokit/types": "^15.0.0" }, "peerDependencies": { "@octokit/core": ">=6" } }, "sha512-YuAlyjR8o5QoRSOvMHxSJzPtogkNMgeMv2mpccrvdUGeC3MKyfi/hS+KiFwyH/iRKIKyx+eIMsDjbt3p9r2GYA=="], "@octokit/plugin-rest-endpoint-methods": ["@octokit/plugin-rest-endpoint-methods@16.1.0", "", { "dependencies": { "@octokit/types": "^15.0.0" }, "peerDependencies": { "@octokit/core": ">=6" } }, "sha512-nCsyiKoGRnhH5LkH8hJEZb9swpqOcsW+VXv1QoyUNQXJeVODG4+xM6UICEqyqe9XFr6LkL8BIiFCPev8zMDXPw=="], - "@octokit/plugin-retry": ["@octokit/plugin-retry@8.0.1", "", { "dependencies": { "@octokit/request-error": "^7.0.0", "@octokit/types": "^14.0.0", "bottleneck": "^2.15.3" }, "peerDependencies": { "@octokit/core": ">=7" } }, "sha512-KUoYR77BjF5O3zcwDQHRRZsUvJwepobeqiSSdCJ8lWt27FZExzb0GgVxrhhfuyF6z2B2zpO0hN5pteni1sqWiw=="], + "@octokit/plugin-retry": ["@octokit/plugin-retry@8.0.2", "", { "dependencies": { "@octokit/request-error": "^7.0.1", "@octokit/types": "^15.0.0", "bottleneck": "^2.15.3" }, "peerDependencies": { "@octokit/core": ">=7" } }, "sha512-mVPCe77iaD8g1lIX46n9bHPUirFLzc3BfIzsZOpB7bcQh1ecS63YsAgcsyMGqvGa2ARQWKEFTrhMJX2MLJVHVw=="], - "@octokit/plugin-throttling": ["@octokit/plugin-throttling@11.0.1", "", { "dependencies": { "@octokit/types": "^14.0.0", "bottleneck": "^2.15.3" }, "peerDependencies": { "@octokit/core": "^7.0.0" } }, "sha512-S+EVhy52D/272L7up58dr3FNSMXWuNZolkL4zMJBNIfIxyZuUcczsQAU4b5w6dewJXnKYVgSHSV5wxitMSW1kw=="], + "@octokit/plugin-throttling": ["@octokit/plugin-throttling@11.0.2", "", { "dependencies": { "@octokit/types": "^15.0.0", "bottleneck": "^2.15.3" }, "peerDependencies": { "@octokit/core": "^7.0.0" } }, "sha512-ntNIig4zZhQVOZF4fG9Wt8QCoz9ehb+xnlUwp74Ic2ANChCk8oKmRwV9zDDCtrvU1aERIOvtng8wsalEX7Jk5Q=="], - "@octokit/request": ["@octokit/request@10.0.3", "", { "dependencies": { "@octokit/endpoint": "^11.0.0", "@octokit/request-error": "^7.0.0", "@octokit/types": "^14.0.0", "fast-content-type-parse": "^3.0.0", "universal-user-agent": "^7.0.2" } }, "sha512-V6jhKokg35vk098iBqp2FBKunk3kMTXlmq+PtbV9Gl3TfskWlebSofU9uunVKhUN7xl+0+i5vt0TGTG8/p/7HA=="], + "@octokit/request": ["@octokit/request@10.0.5", "", { "dependencies": { "@octokit/endpoint": "^11.0.1", "@octokit/request-error": "^7.0.1", "@octokit/types": "^15.0.0", "fast-content-type-parse": "^3.0.0", "universal-user-agent": "^7.0.2" } }, "sha512-TXnouHIYLtgDhKo+N6mXATnDBkV05VwbR0TtMWpgTHIoQdRQfCSzmy/LGqR1AbRMbijq/EckC/E3/ZNcU92NaQ=="], - "@octokit/request-error": ["@octokit/request-error@7.0.0", "", { "dependencies": { "@octokit/types": "^14.0.0" } }, "sha512-KRA7VTGdVyJlh0cP5Tf94hTiYVVqmt2f3I6mnimmaVz4UG3gQV/k4mDJlJv3X67iX6rmN7gSHCF8ssqeMnmhZg=="], + "@octokit/request-error": ["@octokit/request-error@7.0.1", "", { "dependencies": { "@octokit/types": "^15.0.0" } }, "sha512-CZpFwV4+1uBrxu7Cw8E5NCXDWFNf18MSY23TdxCBgjw1tXXHvTrZVsXlW8hgFTOLw8RQR1BBrMvYRtuyaijHMA=="], - "@octokit/types": ["@octokit/types@14.1.0", "", { "dependencies": { "@octokit/openapi-types": "^25.1.0" } }, "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g=="], + "@octokit/types": ["@octokit/types@15.0.0", "", { "dependencies": { "@octokit/openapi-types": "^26.0.0" } }, "sha512-8o6yDfmoGJUIeR9OfYU0/TUJTnMPG2r68+1yEdUeG2Fdqpj8Qetg0ziKIgcBm0RW/j29H41WP37CYCEhp6GoHQ=="], "@octokit/webhooks": ["@octokit/webhooks@14.1.3", "", { "dependencies": { "@octokit/openapi-webhooks-types": "12.0.3", "@octokit/request-error": "^7.0.0", "@octokit/webhooks-methods": "^6.0.0" } }, "sha512-gcK4FNaROM9NjA0mvyfXl0KPusk7a1BeA8ITlYEZVQCXF5gcETTd4yhAU0Kjzd8mXwYHppzJBWgdBVpIR9wUcQ=="], @@ -655,25 +652,25 @@ "@open-draft/until": ["@open-draft/until@2.1.0", "", {}, "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg=="], - "@orval/angular": ["@orval/angular@7.11.2", "", { "dependencies": { "@orval/core": "7.11.2" } }, "sha512-v7I3MXlc1DTFHZlCo10uqBmss/4puXi1EbYdlYGfeZ2sYQiwtRFEYAMnSIxHzMtdtI4jd7iDEH0fZRA7W6yloA=="], + "@orval/angular": ["@orval/angular@7.14.0", "", { "dependencies": { "@orval/core": "7.14.0" } }, "sha512-z2V5svW0WwwsugG91v6k05HxeJNtbIy4V8wrTFxRZ7dzT0jhfayJvTnLW1DnaUkJ5PieS/yqytk53LVIIhRM6g=="], - "@orval/axios": ["@orval/axios@7.11.2", "", { "dependencies": { "@orval/core": "7.11.2" } }, "sha512-X5TJTFofCeJrQcHWoH0wz/032DBhPOQuZUUOPYO3DItOnq9/nfHJYKnUfg13wtYw0LVjCxyTZpeGLUBZnY804A=="], + "@orval/axios": ["@orval/axios@7.14.0", "", { "dependencies": { "@orval/core": "7.14.0" } }, "sha512-z2qdyTJ+O5cZHd3R635RDvhs2bv8omg0mNsKxULinWXOfGvSDWuCQtuVyh9m8hsNJKCJnOVdPiNVXNegBbFXaw=="], - "@orval/core": ["@orval/core@7.11.2", "", { "dependencies": { "@apidevtools/swagger-parser": "^10.1.1", "@ibm-cloud/openapi-ruleset": "^1.29.4", "acorn": "^8.14.1", "ajv": "^8.17.1", "chalk": "^4.1.2", "compare-versions": "^6.1.1", "debug": "^4.4.1", "esbuild": "^0.25.8", "esutils": "2.0.3", "fs-extra": "^11.3.0", "globby": "11.1.0", "lodash.isempty": "^4.4.0", "lodash.uniq": "^4.5.0", "lodash.uniqby": "^4.7.0", "lodash.uniqwith": "^4.5.0", "micromatch": "^4.0.8", "openapi3-ts": "4.4.0", "swagger2openapi": "^7.0.8" } }, "sha512-5k2j4ro53yZ3J+tGMu3LpLgVb2OBtxNDgyrJik8qkrFyuORBLx/a+AJRFoPYwZmtnMZzzRXoH4J/fbpW5LXIyg=="], + "@orval/core": ["@orval/core@7.14.0", "", { "dependencies": { "@apidevtools/swagger-parser": "^12.0.0", "@ibm-cloud/openapi-ruleset": "^1.32.1", "@stoplight/spectral-core": "^1.20.0", "acorn": "^8.15.0", "chalk": "^4.1.2", "compare-versions": "^6.1.1", "debug": "^4.4.3", "esbuild": "^0.25.9", "esutils": "2.0.3", "fs-extra": "^11.3.1", "globby": "11.1.0", "lodash.isempty": "^4.4.0", "lodash.uniq": "^4.5.0", "lodash.uniqby": "^4.7.0", "lodash.uniqwith": "^4.5.0", "micromatch": "^4.0.8", "openapi3-ts": "4.5.0", "swagger2openapi": "^7.0.8", "typedoc": "^0.28.12" } }, "sha512-iGY7T8XJORPGpkZ0CDSnVxlv1ryHr4ieCvBO9YeP0BWXYoLO2ptvkkNvDhhJOfpMKjDppjo4227TxUU6Accl3g=="], - "@orval/fetch": ["@orval/fetch@7.11.2", "", { "dependencies": { "@orval/core": "7.11.2" } }, "sha512-FuupASqk4Dn8ZET7u5Ra5djKy22KfRfec60zRR/o5+L5iQkWKEe/A5DBT1PwjTMnp9789PEGlFPQjZNwMG98Tg=="], + "@orval/fetch": ["@orval/fetch@7.14.0", "", { "dependencies": { "@orval/core": "7.14.0", "openapi3-ts": "4.5.0" } }, "sha512-TJeUc29EnRN3gq716E9SnepvroBiOWXjUS6PebllwxgSIpL2W3fimqYZuZR7T55dkneu/O09Kw3SBzVkfAHXGQ=="], - "@orval/hono": ["@orval/hono@7.11.2", "", { "dependencies": { "@orval/core": "7.11.2", "@orval/zod": "7.11.2", "lodash.uniq": "^4.5.0" } }, "sha512-SddhKMYMB/dJH3YQx3xi0Zd+4tfhrEkqJdqQaYLXgENJiw0aGbdaZTdY6mb/e6qP38TTK6ME2PkYOqwkl2DQ7g=="], + "@orval/hono": ["@orval/hono@7.14.0", "", { "dependencies": { "@orval/core": "7.14.0", "@orval/zod": "7.14.0", "fs-extra": "^11.3.1", "lodash.uniq": "^4.5.0", "openapi3-ts": "4.5.0" } }, "sha512-zChGuWkWbbsQqEmmAzcNeENgAZ+R3pU4J/JN9VRtcIbh3Wwt+JFEOvCxkBydGbPkQiCwOWrXyFxmGbDqrXKpuQ=="], - "@orval/mcp": ["@orval/mcp@7.11.2", "", { "dependencies": { "@orval/core": "7.11.2", "@orval/fetch": "7.11.2", "@orval/zod": "7.11.2" } }, "sha512-9kGKko8wLuCbeETp8Pd8lXLtBpLzEJfR2kl2m19AI3nAoHXE/Tnn3KgjMIg0qvCcsRXGXdYJB7wfxy2URdAxVA=="], + "@orval/mcp": ["@orval/mcp@7.14.0", "", { "dependencies": { "@orval/core": "7.14.0", "@orval/fetch": "7.14.0", "@orval/zod": "7.14.0", "openapi3-ts": "4.5.0" } }, "sha512-gSvQvzi1/SSRvpA7Kslt5rhcm9+MXCwH+Qg0xJ0R/RtnBwvsBVezsDOvXCLmhrFz+7B6vT5+VHwN264mIrw4xQ=="], - "@orval/mock": ["@orval/mock@7.11.2", "", { "dependencies": { "@orval/core": "7.11.2", "openapi3-ts": "^4.2.2" } }, "sha512-+uRq6BT6NU2z0UQtgeD6FMuLAxQ5bjJ5PZK3AsbDYFRSmAWUWoeaQcoWyF38F4t7ez779beGs3AlUg+z0Ec4rQ=="], + "@orval/mock": ["@orval/mock@7.14.0", "", { "dependencies": { "@orval/core": "7.14.0", "openapi3-ts": "4.5.0" } }, "sha512-PQgY4guB+v4hnyiNAX9/Zx/ydzInL0ei3NruuBub7zEniuwIrBzHejGOqmFulGlNWRcWvAVrpJP9Arga2oNYKg=="], - "@orval/query": ["@orval/query@7.11.2", "", { "dependencies": { "@orval/core": "7.11.2", "@orval/fetch": "7.11.2", "lodash.omitby": "^4.6.0" } }, "sha512-C/it+wNfcDtuvpB6h/78YwWU+Rjk7eU1Av8jAoGnvxMRli4nnzhSZ83HMILGhYQbE9WcfNZxQJ6OaBoTWqACPg=="], + "@orval/query": ["@orval/query@7.14.0", "", { "dependencies": { "@orval/core": "7.14.0", "@orval/fetch": "7.14.0", "chalk": "^4.1.2", "lodash.omitby": "^4.6.0" } }, "sha512-yo8EN12cDKZwvrQdULMGmVsanQehFK3pxDGTrSM0BTCFowP4Fd407+2TLlRLjAoRFG8/zLs4rCETNvMgPtlo3w=="], - "@orval/swr": ["@orval/swr@7.11.2", "", { "dependencies": { "@orval/core": "7.11.2", "@orval/fetch": "7.11.2" } }, "sha512-95GkKLVy67xJvsiVvK4nTOsCpebWM54FvQdKQaqlJ0FGCNUbqDjVRwBKbjP6dLc/B3wTmBAWlFSLbdVmjGCTYg=="], + "@orval/swr": ["@orval/swr@7.14.0", "", { "dependencies": { "@orval/core": "7.14.0", "@orval/fetch": "7.14.0" } }, "sha512-KgD3Z8NGSNo7RT/qjdpzVmPSGlLJ4oBirldYEFFUWe/G9KSi4uSXOuQiBpCO56aqQ6BV38kVQFXM6vvYQ0vn3w=="], - "@orval/zod": ["@orval/zod@7.11.2", "", { "dependencies": { "@orval/core": "7.11.2", "lodash.uniq": "^4.5.0" } }, "sha512-4MzTg5Wms8/LlM3CbYu80dvCbP88bVlQjnYsBdFXuEv0K2GYkBCAhVOrmXCVrPXE89neV6ABkvWQeuKZQpkdxQ=="], + "@orval/zod": ["@orval/zod@7.14.0", "", { "dependencies": { "@orval/core": "7.14.0", "lodash.uniq": "^4.5.0", "openapi3-ts": "4.5.0" } }, "sha512-MJN43DxSNccG0sExxFZ92lCeF1kL6D6OaQNDRaxjtm4sdUgTsWdIkifAhyWyuP2ucWsARPfMef19EQT6rzrgwA=="], "@pkgjs/parseargs": ["@pkgjs/parseargs@0.11.0", "", {}, "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg=="], @@ -707,53 +704,53 @@ "@rollup/pluginutils": ["@rollup/pluginutils@5.3.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", "picomatch": "^4.0.2" }, "peerDependencies": { "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "optionalPeers": ["rollup"] }, "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q=="], - "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.52.0", "", { "os": "android", "cpu": "arm" }, "sha512-VxDYCDqOaR7NXzAtvRx7G1u54d2kEHopb28YH/pKzY6y0qmogP3gG7CSiWsq9WvDFxOQMpNEyjVAHZFXfH3o/A=="], + "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.52.5", "", { "os": "android", "cpu": "arm" }, "sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ=="], - "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.52.0", "", { "os": "android", "cpu": "arm64" }, "sha512-pqDirm8koABIKvzL59YI9W9DWbRlTX7RWhN+auR8HXJxo89m4mjqbah7nJZjeKNTNYopqL+yGg+0mhCpf3xZtQ=="], + "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.52.5", "", { "os": "android", "cpu": "arm64" }, "sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA=="], - "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.52.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-YCdWlY/8ltN6H78HnMsRHYlPiKvqKagBP1r+D7SSylxX+HnsgXGCmLiV3Y4nSyY9hW8qr8U9LDUx/Lo7M6MfmQ=="], + "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.52.5", "", { "os": "darwin", "cpu": "arm64" }, "sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA=="], - "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.52.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-z4nw6y1j+OOSGzuVbSWdIp1IUks9qNw4dc7z7lWuWDKojY38VMWBlEN7F9jk5UXOkUcp97vA1N213DF+Lz8BRg=="], + "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.52.5", "", { "os": "darwin", "cpu": "x64" }, "sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA=="], - "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.52.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-Q/dv9Yvyr5rKlK8WQJZVrp5g2SOYeZUs9u/t2f9cQ2E0gJjYB/BWoedXfUT0EcDJefi2zzVfhcOj8drWCzTviw=="], + "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.52.5", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA=="], - "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.52.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-kdBsLs4Uile/fbjZVvCRcKB4q64R+1mUq0Yd7oU1CMm1Av336ajIFqNFovByipciuUQjBCPMxwJhCgfG2re3rg=="], + "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.52.5", "", { "os": "freebsd", "cpu": "x64" }, "sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ=="], - "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.52.0", "", { "os": "linux", "cpu": "arm" }, "sha512-aL6hRwu0k7MTUESgkg7QHY6CoqPgr6gdQXRJI1/VbFlUMwsSzPGSR7sG5d+MCbYnJmJwThc2ol3nixj1fvI/zQ=="], + "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.52.5", "", { "os": "linux", "cpu": "arm" }, "sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ=="], - "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.52.0", "", { "os": "linux", "cpu": "arm" }, "sha512-BTs0M5s1EJejgIBJhCeiFo7GZZ2IXWkFGcyZhxX4+8usnIo5Mti57108vjXFIQmmJaRyDwmV59Tw64Ap1dkwMw=="], + "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.52.5", "", { "os": "linux", "cpu": "arm" }, "sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ=="], - "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.52.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-uj672IVOU9m08DBGvoPKPi/J8jlVgjh12C9GmjjBxCTQc3XtVmRkRKyeHSmIKQpvJ7fIm1EJieBUcnGSzDVFyw=="], + "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.52.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg=="], - "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.52.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-/+IVbeDMDCtB/HP/wiWsSzduD10SEGzIZX2945KSgZRNi4TSkjHqRJtNTVtVb8IRwhJ65ssI56krlLik+zFWkw=="], + "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.52.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q=="], - "@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.52.0", "", { "os": "linux", "cpu": "none" }, "sha512-U1vVzvSWtSMWKKrGoROPBXMh3Vwn93TA9V35PldokHGqiUbF6erSzox/5qrSMKp6SzakvyjcPiVF8yB1xKr9Pg=="], + "@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.52.5", "", { "os": "linux", "cpu": "none" }, "sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA=="], - "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.52.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-X/4WfuBAdQRH8cK3DYl8zC00XEE6aM472W+QCycpQJeLWVnHfkv7RyBFVaTqNUMsTgIX8ihMjCvFF9OUgeABzw=="], + "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.52.5", "", { "os": "linux", "cpu": "ppc64" }, "sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw=="], - "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.52.0", "", { "os": "linux", "cpu": "none" }, "sha512-xIRYc58HfWDBZoLmWfWXg2Sq8VCa2iJ32B7mqfWnkx5mekekl0tMe7FHpY8I72RXEcUkaWawRvl3qA55og+cwQ=="], + "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.52.5", "", { "os": "linux", "cpu": "none" }, "sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw=="], - "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.52.0", "", { "os": "linux", "cpu": "none" }, "sha512-mbsoUey05WJIOz8U1WzNdf+6UMYGwE3fZZnQqsM22FZ3wh1N887HT6jAOjXs6CNEK3Ntu2OBsyQDXfIjouI4dw=="], + "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.52.5", "", { "os": "linux", "cpu": "none" }, "sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg=="], - "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.52.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-qP6aP970bucEi5KKKR4AuPFd8aTx9EF6BvutvYxmZuWLJHmnq4LvBfp0U+yFDMGwJ+AIJEH5sIP+SNypauMWzg=="], + "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.52.5", "", { "os": "linux", "cpu": "s390x" }, "sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ=="], - "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.52.0", "", { "os": "linux", "cpu": "x64" }, "sha512-nmSVN+F2i1yKZ7rJNKO3G7ZzmxJgoQBQZ/6c4MuS553Grmr7WqR7LLDcYG53Z2m9409z3JLt4sCOhLdbKQ3HmA=="], + "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.52.5", "", { "os": "linux", "cpu": "x64" }, "sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q=="], - "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.52.0", "", { "os": "linux", "cpu": "x64" }, "sha512-2d0qRo33G6TfQVjaMR71P+yJVGODrt5V6+T0BDYH4EMfGgdC/2HWDVjSSFw888GSzAZUwuska3+zxNUCDco6rQ=="], + "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.52.5", "", { "os": "linux", "cpu": "x64" }, "sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg=="], - "@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.52.0", "", { "os": "none", "cpu": "arm64" }, "sha512-A1JalX4MOaFAAyGgpO7XP5khquv/7xKzLIyLmhNrbiCxWpMlnsTYr8dnsWM7sEeotNmxvSOEL7F65j0HXFcFsw=="], + "@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.52.5", "", { "os": "none", "cpu": "arm64" }, "sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw=="], - "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.52.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-YQugafP/rH0eOOHGjmNgDURrpYHrIX0yuojOI8bwCyXwxC9ZdTd3vYkmddPX0oHONLXu9Rb1dDmT0VNpjkzGGw=="], + "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.52.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w=="], - "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.52.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-zYdUYhi3Qe2fndujBqL5FjAFzvNeLxtIqfzNEVKD1I7C37/chv1VxhscWSQHTNfjPCrBFQMnynwA3kpZpZ8w4A=="], + "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.52.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg=="], - "@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.52.0", "", { "os": "win32", "cpu": "x64" }, "sha512-fGk03kQylNaCOQ96HDMeT7E2n91EqvCDd3RwvT5k+xNdFCeMGnj5b5hEgTGrQuyidqSsD3zJDQ21QIaxXqTBJw=="], + "@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.52.5", "", { "os": "win32", "cpu": "x64" }, "sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ=="], - "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.52.0", "", { "os": "win32", "cpu": "x64" }, "sha512-6iKDCVSIUQ8jPMoIV0OytRKniaYyy5EbY/RRydmLW8ZR3cEBhxbWl5ro0rkUNe0ef6sScvhbY79HrjRm8i3vDQ=="], + "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.52.5", "", { "os": "win32", "cpu": "x64" }, "sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg=="], "@rtsao/scc": ["@rtsao/scc@1.1.0", "", {}, "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g=="], - "@rushstack/eslint-patch": ["@rushstack/eslint-patch@1.12.0", "", {}, "sha512-5EwMtOqvJMMa3HbmxLlF74e+3/HhwBTMcvt3nqVJgGCozO6hzIPOBlwm8mGVNR9SN2IJpxSnlxczyDjcn7qIyw=="], + "@rushstack/eslint-patch": ["@rushstack/eslint-patch@1.14.0", "", {}, "sha512-WJFej426qe4RWOm9MMtP4V3CV4AucXolQty+GRgAWLgQXmpCuwzs7hEpxxhSc/znXUSxum9d/P/32MW0FlAAlA=="], "@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@3.13.0", "", { "dependencies": { "@shikijs/types": "3.13.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-O42rBGr4UDSlhT2ZFMxqM7QzIU+IcpoTMzb3W7AlziI1ZF7R8eS2M0yt5Ry35nnnTX/LTLXFPUjRFCIW+Operg=="], @@ -797,19 +794,19 @@ "@stoplight/spectral-runtime": ["@stoplight/spectral-runtime@1.1.4", "", { "dependencies": { "@stoplight/json": "^3.20.1", "@stoplight/path": "^1.3.2", "@stoplight/types": "^13.6.0", "abort-controller": "^3.0.0", "lodash": "^4.17.21", "node-fetch": "^2.7.0", "tslib": "^2.8.1" } }, "sha512-YHbhX3dqW0do6DhiPSgSGQzr6yQLlWybhKwWx0cqxjMwxej3TqLv3BXMfIUYFKKUqIwH4Q2mV8rrMM8qD2N0rQ=="], - "@stoplight/types": ["@stoplight/types@13.20.0", "", { "dependencies": { "@types/json-schema": "^7.0.4", "utility-types": "^3.10.0" } }, "sha512-2FNTv05If7ib79VPDA/r9eUet76jewXFH2y2K5vuge6SXbRHtWBhcaRmu+6QpF4/WRNoJj5XYRSwLGXDxysBGA=="], + "@stoplight/types": ["@stoplight/types@13.6.0", "", { "dependencies": { "@types/json-schema": "^7.0.4", "utility-types": "^3.10.0" } }, "sha512-dzyuzvUjv3m1wmhPfq82lCVYGcXG0xUYgqnWfCq3PCVR4BKFhjdkHrnJ+jIDoMKvXb05AZP/ObQF6+NpDo29IQ=="], "@stoplight/yaml": ["@stoplight/yaml@4.3.0", "", { "dependencies": { "@stoplight/ordered-object-literal": "^1.0.5", "@stoplight/types": "^14.1.1", "@stoplight/yaml-ast-parser": "0.0.50", "tslib": "^2.2.0" } }, "sha512-JZlVFE6/dYpP9tQmV0/ADfn32L9uFarHWxfcRhReKUnljz1ZiUM5zpX+PH8h5CJs6lao3TuFqnPm9IJJCEkE2w=="], "@stoplight/yaml-ast-parser": ["@stoplight/yaml-ast-parser@0.0.50", "", {}, "sha512-Pb6M8TDO9DtSVla9yXSTAxmo9GVEouq5P40DWXdOie69bXogZTkgvopCq+yEvTMA0F6PEvdJmbtTV3ccIp11VQ=="], - "@storybook/addon-docs": ["@storybook/addon-docs@9.1.7", "", { "dependencies": { "@mdx-js/react": "^3.0.0", "@storybook/csf-plugin": "9.1.7", "@storybook/icons": "^1.4.0", "@storybook/react-dom-shim": "9.1.7", "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", "ts-dedent": "^2.0.0" }, "peerDependencies": { "storybook": "^9.1.7" } }, "sha512-ZwD25QBWOeZS2T/JSHl6iqMx7w2yCxREnZIQaLpyOoGl2mRUk2NHcsGfdXQ4sL0zd7YT7CTfzH5tbwQfLIiEog=="], + "@storybook/addon-docs": ["@storybook/addon-docs@9.1.13", "", { "dependencies": { "@mdx-js/react": "^3.0.0", "@storybook/csf-plugin": "9.1.13", "@storybook/icons": "^1.4.0", "@storybook/react-dom-shim": "9.1.13", "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", "ts-dedent": "^2.0.0" }, "peerDependencies": { "storybook": "^9.1.13" } }, "sha512-V1nCo7bfC3kQ5VNVq0VDcHsIhQf507m+BxMA5SIYiwdJHljH2BXpW2fL3FFn9gv9Wp57AEEzhm+wh4zANaJgkg=="], "@storybook/addon-vitest": ["@storybook/addon-vitest@9.0.17", "", { "dependencies": { "@storybook/global": "^5.0.0", "@storybook/icons": "^1.4.0", "prompts": "^2.4.0", "ts-dedent": "^2.2.0" }, "peerDependencies": { "@vitest/browser": "^3.0.0", "@vitest/runner": "^3.0.0", "storybook": "^9.0.17", "vitest": "^3.0.0" }, "optionalPeers": ["@vitest/browser", "@vitest/runner", "vitest"] }, "sha512-eogqcGbACR1sTedBSE2SP/4QV1ruicHYEhYjBtoPIjvYgymN1g5KSuQNysLx4f0SvAzczrcNjX2WVVLX2DVyzA=="], - "@storybook/builder-vite": ["@storybook/builder-vite@9.1.7", "", { "dependencies": { "@storybook/csf-plugin": "9.1.7", "ts-dedent": "^2.0.0" }, "peerDependencies": { "storybook": "^9.1.7", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0" } }, "sha512-9nflIekC220TSKprN/dDW+tAZSxwkRaq0C6mc5UCgXKjgq4oXditpdwrAcoH0v91RC/bN7LW9Xu5IbvnLNiqLQ=="], + "@storybook/builder-vite": ["@storybook/builder-vite@9.1.13", "", { "dependencies": { "@storybook/csf-plugin": "9.1.13", "ts-dedent": "^2.0.0" }, "peerDependencies": { "storybook": "^9.1.13", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0" } }, "sha512-pmtIjU02ASJOZKdL8DoxWXJgZnpTDgD5WmMnjKJh9FaWmc2YiCW2Y6VRxPox96OM655jYHQe5+UIbk3Cwtwb4A=="], - "@storybook/csf-plugin": ["@storybook/csf-plugin@9.1.7", "", { "dependencies": { "unplugin": "^1.3.1" }, "peerDependencies": { "storybook": "^9.1.7" } }, "sha512-xrPKWt16hBXvyHliuIEzPLvHdRbEe5Oubk/NIPibFVG4cxhEmNxMeHo3uFua3wgtEXyp4UErRWteviNjYSzjUA=="], + "@storybook/csf-plugin": ["@storybook/csf-plugin@9.1.13", "", { "dependencies": { "unplugin": "^1.3.1" }, "peerDependencies": { "storybook": "^9.1.13" } }, "sha512-EMpzYuyt9FDcxxfBChWzfId50y8QMpdenviEQ8m+pa6c+ANx3pC5J6t7y0khD8TQu815sTy+nc6cc8PC45dPUA=="], "@storybook/global": ["@storybook/global@5.0.0", "", {}, "sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ=="], @@ -817,13 +814,13 @@ "@storybook/instrumenter": ["@storybook/instrumenter@8.6.14", "", { "dependencies": { "@storybook/global": "^5.0.0", "@vitest/utils": "^2.1.1" }, "peerDependencies": { "storybook": "^8.6.14" } }, "sha512-iG4MlWCcz1L7Yu8AwgsnfVAmMbvyRSk700Mfy2g4c8y5O+Cv1ejshE1LBBsCwHgkuqU0H4R0qu4g23+6UnUemQ=="], - "@storybook/nextjs-vite": ["@storybook/nextjs-vite@9.1.7", "", { "dependencies": { "@storybook/builder-vite": "9.1.7", "@storybook/react": "9.1.7", "@storybook/react-vite": "9.1.7", "styled-jsx": "5.1.6", "vite-plugin-storybook-nextjs": "^2.0.7" }, "peerDependencies": { "next": "^14.1.0 || ^15.0.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "storybook": "^9.1.7", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0" } }, "sha512-Z9u1hyWaqOCHyYiiw5y9qTl+XaEYc++VNaD9IvsXE/gi5dK2RpDnNdTdotZ7cDBDEqc1WGzndmovlRF3MlClTA=="], + "@storybook/nextjs-vite": ["@storybook/nextjs-vite@9.1.13", "", { "dependencies": { "@storybook/builder-vite": "9.1.13", "@storybook/react": "9.1.13", "@storybook/react-vite": "9.1.13", "styled-jsx": "5.1.6", "vite-plugin-storybook-nextjs": "^2.0.7" }, "peerDependencies": { "next": "^14.1.0 || ^15.0.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "storybook": "^9.1.13", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0" } }, "sha512-iUQbfAndUag5ehPPldvVCM8T4GylOEZqf13EEHvjgh8F33vOiANq7WTGbvO+aBpBNug3x+1pG1hmKXRKVmA6xQ=="], - "@storybook/react": ["@storybook/react@9.1.7", "", { "dependencies": { "@storybook/global": "^5.0.0", "@storybook/react-dom-shim": "9.1.7" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "storybook": "^9.1.7", "typescript": ">= 4.9.x" }, "optionalPeers": ["typescript"] }, "sha512-GxuA2Eh3LlkEF4HHDKFGP+bqQ1+7VtABVacSXukMu82WV4VAOXhhHEDII8R9AVl2Fbs/iPJnNVj06wnkDeUZhA=="], + "@storybook/react": ["@storybook/react@9.1.13", "", { "dependencies": { "@storybook/global": "^5.0.0", "@storybook/react-dom-shim": "9.1.13" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "storybook": "^9.1.13", "typescript": ">= 4.9.x" }, "optionalPeers": ["typescript"] }, "sha512-B0UpYikKf29t8QGcdmumWojSQQ0phSDy/Ne2HYdrpNIxnUvHHUVOlGpq4lFcIDt52Ip5YG5GuAwJg3+eR4LCRg=="], - "@storybook/react-dom-shim": ["@storybook/react-dom-shim@9.1.7", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "storybook": "^9.1.7" } }, "sha512-ktjCuZ42g3TAF6nMiSdLbJu/EcvC039hYrmVltKpfF7krf+0xHkK3dCuYqSBp5nv3fS+IemrqmzJwREu5BJLuQ=="], + "@storybook/react-dom-shim": ["@storybook/react-dom-shim@9.1.13", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "storybook": "^9.1.13" } }, "sha512-/tMr9TmV3+98GEQO0S03k4gtKHGCpv9+k9Dmnv+TJK3TBz7QsaFEzMwe3gCgoTaebLACyVveDiZkWnCYAWB6NA=="], - "@storybook/react-vite": ["@storybook/react-vite@9.1.7", "", { "dependencies": { "@joshwooding/vite-plugin-react-docgen-typescript": "0.6.1", "@rollup/pluginutils": "^5.0.2", "@storybook/builder-vite": "9.1.7", "@storybook/react": "9.1.7", "find-up": "^7.0.0", "magic-string": "^0.30.0", "react-docgen": "^8.0.0", "resolve": "^1.22.8", "tsconfig-paths": "^4.2.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "storybook": "^9.1.7", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0" } }, "sha512-552jMY5eKnP/rWKpcEjyE4ppyGmO+r9IoYNIJQBWA4DpXAQ8NjhsygCFhdDPFGfCxx7+KmfRgOBPcXeywWNgtQ=="], + "@storybook/react-vite": ["@storybook/react-vite@9.1.13", "", { "dependencies": { "@joshwooding/vite-plugin-react-docgen-typescript": "0.6.1", "@rollup/pluginutils": "^5.0.2", "@storybook/builder-vite": "9.1.13", "@storybook/react": "9.1.13", "find-up": "^7.0.0", "magic-string": "^0.30.0", "react-docgen": "^8.0.0", "resolve": "^1.22.8", "tsconfig-paths": "^4.2.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "storybook": "^9.1.13", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0" } }, "sha512-mV1bZ1bpkNQygnuDo1xMGAS5ZXuoXFF0WGmr/BzNDGmRhZ1K1HQh42kC0w3PklckFBUwCFxmP58ZwTFzf+/dJA=="], "@storybook/test": ["@storybook/test@8.6.14", "", { "dependencies": { "@storybook/global": "^5.0.0", "@storybook/instrumenter": "8.6.14", "@testing-library/dom": "10.4.0", "@testing-library/jest-dom": "6.5.0", "@testing-library/user-event": "14.5.2", "@vitest/expect": "2.0.5", "@vitest/spy": "2.0.5" }, "peerDependencies": { "storybook": "^8.6.14" } }, "sha512-GkPNBbbZmz+XRdrhMtkxPotCLOQ1BaGNp/gFZYdGDk2KmUWBKmvc5JxxOhtoXM2703IzNFlQHSSNnhrDZYuLlw=="], @@ -831,15 +828,15 @@ "@swc/helpers": ["@swc/helpers@0.5.13", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w=="], - "@tanstack/query-core": ["@tanstack/query-core@5.90.1", "", {}, "sha512-hmi8i+mWP3QnD8yq3+6LWri9IEZAlFbpbM/UVB+TJtp5RIxUfzuARqyW39b+HCfBKKnFKSHWMXNB5YN8lo/E/Q=="], + "@tanstack/query-core": ["@tanstack/query-core@5.90.5", "", {}, "sha512-wLamYp7FaDq6ZnNehypKI5fNvxHPfTYylE0m/ZpuuzJfJqhR5Pxg9gvGBHZx4n7J+V5Rg5mZxHHTlv25Zt5u+w=="], - "@tanstack/query-persist-client-core": ["@tanstack/query-persist-client-core@5.90.1", "", { "dependencies": { "@tanstack/query-core": "5.90.1" } }, "sha512-0G5/r/ovaPOoFXdO+VUV6s5pVnUQbjGv1EwYKeC5GkkGBLD1KQwYxudwj4+U8ue722EtGdB7Y4nTijpVN+Z6gA=="], + "@tanstack/query-persist-client-core": ["@tanstack/query-persist-client-core@5.91.4", "", { "dependencies": { "@tanstack/query-core": "5.90.5" } }, "sha512-HZ8kvAbhttLZKUO4ASHl49u7dQXzRVEogi7/6CCZ5BBItWh2hoEUqy9QHUS4ji7iZiuXe4jwTJNzq2VIuxlnsQ=="], - "@tanstack/query-sync-storage-persister": ["@tanstack/query-sync-storage-persister@5.90.1", "", { "dependencies": { "@tanstack/query-core": "5.90.1", "@tanstack/query-persist-client-core": "5.90.1" } }, "sha512-3JsxssQcFxGaMgWmyLtgAhWRsDS9lwKlWFDNLuLN1o9lhgD6do4ZOcZO7SVKvg51Hq55wWOKLwD3LDkwXeVrHw=="], + "@tanstack/query-sync-storage-persister": ["@tanstack/query-sync-storage-persister@5.90.7", "", { "dependencies": { "@tanstack/query-core": "5.90.5", "@tanstack/query-persist-client-core": "5.91.4" } }, "sha512-Go4QSOv0wz5RNaJR54wvCp5D+mVUBYidKTYj4zvUU8GGkLxL1E+yx0lBkGNvfRmFRjdgWrJb5XS+0Clc5tKzpQ=="], - "@tanstack/react-query": ["@tanstack/react-query@5.90.1", "", { "dependencies": { "@tanstack/query-core": "5.90.1" }, "peerDependencies": { "react": "^18 || ^19" } }, "sha512-tN7Fx2HuV2SBhl+STgL8enbfSInRoNU1B1+5LIU62klcMElE4lFzol4aReuRSUeD6ntzPayK0KrM6w9+ZlHEkw=="], + "@tanstack/react-query": ["@tanstack/react-query@5.90.5", "", { "dependencies": { "@tanstack/query-core": "5.90.5" }, "peerDependencies": { "react": "^18 || ^19" } }, "sha512-pN+8UWpxZkEJ/Rnnj2v2Sxpx1WFlaa9L6a4UO89p6tTQbeo+m0MS8oYDjbggrR8QcTyjKoYWKS3xJQGr3ExT8Q=="], - "@tanstack/react-query-persist-client": ["@tanstack/react-query-persist-client@5.90.1", "", { "dependencies": { "@tanstack/query-persist-client-core": "5.90.1" }, "peerDependencies": { "@tanstack/react-query": "^5.90.1", "react": "^18 || ^19" } }, "sha512-bgVtF3jQFEBbmzGiU8W9MR7oVrjq8CcSRmq4YWS4iXwdRHPcjCZvPXGTZ3d43JO8d56B9e0OTlHkho1MQFFKjA=="], + "@tanstack/react-query-persist-client": ["@tanstack/react-query-persist-client@5.90.7", "", { "dependencies": { "@tanstack/query-persist-client-core": "5.91.4" }, "peerDependencies": { "@tanstack/react-query": "^5.90.5", "react": "^18 || ^19" } }, "sha512-TlEzewa4YN51ZhbLZ9HzIBTY/b1K7xFJGSm1cUCE+tNnzSUwiLWhoD6H7EvgWb/KJePYDIJ3hGWLwQPdP86fmA=="], "@testing-library/dom": ["@testing-library/dom@10.4.0", "", { "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", "@types/aria-query": "^5.0.1", "aria-query": "5.3.0", "chalk": "^4.1.0", "dom-accessibility-api": "^0.5.9", "lz-string": "^1.5.0", "pretty-format": "^27.0.2" } }, "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ=="], @@ -853,7 +850,7 @@ "@types/async-busboy": ["@types/async-busboy@1.1.4", "", { "dependencies": { "@types/busboy": "^0" } }, "sha512-frekd/kencMauuae9LXdHxCOI4c0zt3929Yk3pKOjFLjuIWGcxlHPh1YjLqNwJ2tU1JTR6PEQrO79S6dvh/zlg=="], - "@types/aws-lambda": ["@types/aws-lambda@8.10.152", "", {}, "sha512-soT/c2gYBnT5ygwiHPmd9a1bftj462NWVk2tKCc1PYHSIacB2UwbTS2zYG4jzag1mRDuzg/OjtxQjQ2NKRB6Rw=="], + "@types/aws-lambda": ["@types/aws-lambda@8.10.156", "", {}, "sha512-LElQP+QliVWykC7OF8dNr04z++HJCMO2lF7k9HuKoSDARqhcjHq8MzbrRwujCSDeBHIlvaimbuY/tVZL36KXFQ=="], "@types/babel__core": ["@types/babel__core@7.20.5", "", { "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", "@types/babel__generator": "*", "@types/babel__template": "*", "@types/babel__traverse": "*" } }, "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA=="], @@ -867,8 +864,6 @@ "@types/chai": ["@types/chai@5.2.2", "", { "dependencies": { "@types/deep-eql": "*" } }, "sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg=="], - "@types/cookie": ["@types/cookie@0.6.0", "", {}, "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA=="], - "@types/css-font-loading-module": ["@types/css-font-loading-module@0.0.7", "", {}, "sha512-nl09VhutdjINdWyXxHWN/w9zlNCfr60JUqJbd24YXUuCwgeL0TpFSdElCwb6cxfB6ybE19Gjj4g0jsgkXxKv1Q=="], "@types/d3": ["@types/d3@7.4.3", "", { "dependencies": { "@types/d3-array": "*", "@types/d3-axis": "*", "@types/d3-brush": "*", "@types/d3-chord": "*", "@types/d3-color": "*", "@types/d3-contour": "*", "@types/d3-delaunay": "*", "@types/d3-dispatch": "*", "@types/d3-drag": "*", "@types/d3-dsv": "*", "@types/d3-ease": "*", "@types/d3-fetch": "*", "@types/d3-force": "*", "@types/d3-format": "*", "@types/d3-geo": "*", "@types/d3-hierarchy": "*", "@types/d3-interpolate": "*", "@types/d3-path": "*", "@types/d3-polygon": "*", "@types/d3-quadtree": "*", "@types/d3-random": "*", "@types/d3-scale": "*", "@types/d3-scale-chromatic": "*", "@types/d3-selection": "*", "@types/d3-shape": "*", "@types/d3-time": "*", "@types/d3-time-format": "*", "@types/d3-timer": "*", "@types/d3-transition": "*", "@types/d3-zoom": "*" } }, "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww=="], @@ -975,7 +970,7 @@ "@types/json5": ["@types/json5@0.0.29", "", {}, "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ=="], - "@types/md5": ["@types/md5@2.3.5", "", {}, "sha512-/i42wjYNgE6wf0j2bcTX6kuowmdL/6PE4IVitMpm2eYKBUuYCprdcWVK+xEF0gcV6ufMCRhtxmReGfc6hIK7Jw=="], + "@types/md5": ["@types/md5@2.3.6", "", {}, "sha512-WD69gNXtRBnpknfZcb4TRQ0XJQbUPZcai/Qdhmka3sxUR3Et8NrXoeAoknG/LghYHTf4ve795rInVYHBTQdNVA=="], "@types/mdast": ["@types/mdast@4.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA=="], @@ -985,7 +980,7 @@ "@types/ms": ["@types/ms@2.1.0", "", {}, "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="], - "@types/node": ["@types/node@20.19.17", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-gfehUI8N1z92kygssiuWvLiwcbOB3IRktR6hTDgJlXMYh5OvkPSRmgfoBUmfZt+vhwJtX7v1Yw4KvvAf7c5QKQ=="], + "@types/node": ["@types/node@20.19.22", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-hRnu+5qggKDSyWHlnmThnUqg62l29Aj/6vcYgUaSFL9oc7DVjeWEQN3PRgdSc6F8d9QRMWkf36CLMch1Do/+RQ=="], "@types/prop-types": ["@types/prop-types@15.7.15", "", {}, "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw=="], @@ -1005,7 +1000,7 @@ "@types/react-syntax-highlighter": ["@types/react-syntax-highlighter@15.5.13", "", { "dependencies": { "@types/react": "*" } }, "sha512-uLGJ87j6Sz8UaBAooU0T6lWJ0dBmjZgN1PZTrj05TNql2/XpC6+4HhMT5syIdFUUt+FASfCeLLv4kBygNU+8qA=="], - "@types/resolve": ["@types/resolve@1.20.6", "", {}, "sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ=="], + "@types/resolve": ["@types/resolve@1.20.2", "", {}, "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q=="], "@types/scheduler": ["@types/scheduler@0.26.0", "", {}, "sha512-WFHp9YUJQ6CKshqoC37iOlHnQSmxNc795UhB26CyBBttrN9svdIrUjl/NjnNmfcwtncN0h/0PPAFWv9ovP8mLA=="], @@ -1015,8 +1010,6 @@ "@types/statuses": ["@types/statuses@2.0.6", "", {}, "sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA=="], - "@types/trusted-types": ["@types/trusted-types@1.0.6", "", {}, "sha512-230RC8sFeHoT6sSUlRO6a8cAnclO06eeiq1QDfiv2FGCLWFvvERWgwIQD4FWqD9A69BN7Lzee4OXwoMVnnsWDw=="], - "@types/unist": ["@types/unist@3.0.3", "", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="], "@types/urijs": ["@types/urijs@1.19.25", "", {}, "sha512-XOfUup9r3Y06nFAZh3WvO0rBU4OtlfPB/vgxpjg+NRdGU6CN6djdc6OEiH+PcqHCY6eFLo9Ista73uarf4gnBg=="], @@ -1031,11 +1024,11 @@ "@typescript-eslint/parser": ["@typescript-eslint/parser@6.21.0", "", { "dependencies": { "@typescript-eslint/scope-manager": "6.21.0", "@typescript-eslint/types": "6.21.0", "@typescript-eslint/typescript-estree": "6.21.0", "@typescript-eslint/visitor-keys": "6.21.0", "debug": "^4.3.4" }, "peerDependencies": { "eslint": "^7.0.0 || ^8.0.0" } }, "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ=="], - "@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.44.1", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.44.1", "@typescript-eslint/types": "^8.44.1", "debug": "^4.3.4" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-ycSa60eGg8GWAkVsKV4E6Nz33h+HjTXbsDT4FILyL8Obk5/mx4tbvCNsLf9zret3ipSumAOG89UcCs/KRaKYrA=="], + "@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.46.2", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.46.2", "@typescript-eslint/types": "^8.46.2", "debug": "^4.3.4" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-PULOLZ9iqwI7hXcmL4fVfIsBi6AN9YxRc0frbvmg8f+4hQAjQ5GYNKK0DIArNo+rOKmR/iBYwkpBmnIwin4wBg=="], "@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@6.21.0", "", { "dependencies": { "@typescript-eslint/types": "6.21.0", "@typescript-eslint/visitor-keys": "6.21.0" } }, "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg=="], - "@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.44.1", "", { "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-B5OyACouEjuIvof3o86lRMvyDsFwZm+4fBOqFHccIctYgBjqR3qT39FBYGN87khcgf0ExpdCBeGKpKRhSFTjKQ=="], + "@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.46.2", "", { "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-a7QH6fw4S57+F5y2FIxxSDyi5M4UfGF+Jl1bCGd7+L4KsaUY80GsiF/t0UoRFDHAguKlBaACWJRmdrc6Xfkkag=="], "@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@6.21.0", "", { "dependencies": { "@typescript-eslint/typescript-estree": "6.21.0", "@typescript-eslint/utils": "6.21.0", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, "peerDependencies": { "eslint": "^7.0.0 || ^8.0.0" } }, "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag=="], @@ -1133,7 +1126,7 @@ "ansi-colors": ["ansi-colors@4.1.3", "", {}, "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw=="], - "ansi-escapes": ["ansi-escapes@7.1.0", "", { "dependencies": { "environment": "^1.0.0" } }, "sha512-YdhtCd19sKRKfAAUsrcC1wzm4JuzJoiX4pOJqIoW2qmKj5WzG/dL8uUJ0361zaXtHqK7gEhOwtAtz7t3Yq3X5g=="], + "ansi-escapes": ["ansi-escapes@7.1.1", "", { "dependencies": { "environment": "^1.0.0" } }, "sha512-Zhl0ErHcSRUaVfGUeUdDuLgpkEo8KIFjB4Y9uAc46ScOpdDiU1Dbyplh7qWJeJ/ZHpbyMSM26+X3BySgnIz40Q=="], "ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], @@ -1173,7 +1166,7 @@ "ast-types-flow": ["ast-types-flow@0.0.8", "", {}, "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ=="], - "ast-v8-to-istanbul": ["ast-v8-to-istanbul@0.3.5", "", { "dependencies": { "@jridgewell/trace-mapping": "^0.3.30", "estree-walker": "^3.0.3", "js-tokens": "^9.0.1" } }, "sha512-9SdXjNheSiE8bALAQCQQuT6fgQaoxJh7IRYrRGZ8/9nv8WhJeC1aXAwN8TbaOssGOukUvyvnkgD9+Yuykvl1aA=="], + "ast-v8-to-istanbul": ["ast-v8-to-istanbul@0.3.7", "", { "dependencies": { "@jridgewell/trace-mapping": "^0.3.31", "estree-walker": "^3.0.3", "js-tokens": "^9.0.1" } }, "sha512-kr1Hy6YRZBkGQSb6puP+D6FQ59Cx4m0siYhAxygMCAgadiWQ6oxAxQXHOMvJx67SJ63jRoVIIg5eXzUbbct1ww=="], "astring": ["astring@1.9.0", "", { "bin": { "astring": "bin/astring" } }, "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg=="], @@ -1185,7 +1178,7 @@ "available-typed-arrays": ["available-typed-arrays@1.0.7", "", { "dependencies": { "possible-typed-array-names": "^1.0.0" } }, "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ=="], - "axe-core": ["axe-core@4.10.3", "", {}, "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg=="], + "axe-core": ["axe-core@4.11.0", "", {}, "sha512-ilYanEU8vxxBexpJd8cWM4ElSQq4QctCLKih0TSfjIfCQTeyH/6zVrmIJfLPrKTKJRbiG+cfnZbQIjAlJmF1jQ=="], "axios": ["axios@1.12.2", "", { "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.4", "proxy-from-env": "^1.1.0" } }, "sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw=="], @@ -1197,7 +1190,7 @@ "base64-arraybuffer": ["base64-arraybuffer@1.0.2", "", {}, "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ=="], - "baseline-browser-mapping": ["baseline-browser-mapping@2.8.6", "", { "bin": { "baseline-browser-mapping": "dist/cli.js" } }, "sha512-wrH5NNqren/QMtKUEEJf7z86YjfqW/2uw3IL3/xpqZUC95SSVIFXYQeeGjL6FT/X68IROu6RMehZQS5foy2BXw=="], + "baseline-browser-mapping": ["baseline-browser-mapping@2.8.18", "", { "bin": { "baseline-browser-mapping": "dist/cli.js" } }, "sha512-UYmTpOBwgPScZpS4A+YbapwWuBwasxvO/2IOHArSsAhL/+ZdmATBXTex3t+l2hXwLVYK382ibr/nKoY9GKe86w=="], "before-after-hook": ["before-after-hook@4.0.0", "", {}, "sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ=="], @@ -1211,7 +1204,7 @@ "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], - "browserslist": ["browserslist@4.26.2", "", { "dependencies": { "baseline-browser-mapping": "^2.8.3", "caniuse-lite": "^1.0.30001741", "electron-to-chromium": "^1.5.218", "node-releases": "^2.0.21", "update-browserslist-db": "^1.1.3" }, "bin": { "browserslist": "cli.js" } }, "sha512-ECFzp6uFOSB+dcZ5BK/IBaGWssbSYBHvuMeMt3MMFyhI0Z8SqGgEkBLARgpRH3hutIgPVsALcMwbDrJqPxQ65A=="], + "browserslist": ["browserslist@4.26.3", "", { "dependencies": { "baseline-browser-mapping": "^2.8.9", "caniuse-lite": "^1.0.30001746", "electron-to-chromium": "^1.5.227", "node-releases": "^2.0.21", "update-browserslist-db": "^1.1.3" }, "bin": { "browserslist": "cli.js" } }, "sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w=="], "bser": ["bser@2.1.1", "", { "dependencies": { "node-int64": "^0.4.0" } }, "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ=="], @@ -1219,7 +1212,7 @@ "buffer-from": ["buffer-from@1.1.2", "", {}, "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="], - "bun-types": ["bun-types@1.2.22", "", { "dependencies": { "@types/node": "*" }, "peerDependencies": { "@types/react": "^19" } }, "sha512-hwaAu8tct/Zn6Zft4U9BsZcXkYomzpHJX28ofvx7k0Zz2HNz54n1n+tDgxoWFGB4PcFvJXJQloPhaV2eP3Q6EA=="], + "bun-types": ["bun-types@1.3.0", "", { "dependencies": { "@types/node": "*" }, "peerDependencies": { "@types/react": "^19" } }, "sha512-u8X0thhx+yJ0KmkxuEo9HAtdfgCBaM/aI9K90VQcQioAmkVp3SG3FkwWGibUFz3WdXAdcsqOcbU40lK7tbHdkQ=="], "busboy": ["busboy@1.6.0", "", { "dependencies": { "streamsearch": "^1.1.0" } }, "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA=="], @@ -1237,7 +1230,7 @@ "camelcase-css": ["camelcase-css@2.0.1", "", {}, "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA=="], - "caniuse-lite": ["caniuse-lite@1.0.30001743", "", {}, "sha512-e6Ojr7RV14Un7dz6ASD0aZDmQPT/A+eZU+nuTNfjqmRrmkmQlnTNWH0SKmqagx9PeW87UVqapSurtAXifmtdmw=="], + "caniuse-lite": ["caniuse-lite@1.0.30001751", "", {}, "sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw=="], "ccount": ["ccount@2.0.1", "", {}, "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="], @@ -1259,7 +1252,7 @@ "chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="], - "chromatic": ["chromatic@13.2.0", "", { "peerDependencies": { "@chromatic-com/cypress": "^0.*.* || ^1.0.0", "@chromatic-com/playwright": "^0.*.* || ^1.0.0" }, "optionalPeers": ["@chromatic-com/cypress", "@chromatic-com/playwright"], "bin": { "chroma": "dist/bin.js", "chromatic": "dist/bin.js", "chromatic-cli": "dist/bin.js" } }, "sha512-7ikJxdpLdYa6zmd+nLoP1U0HX6oCCtyj2eiAMd0rD4L9kbkWpl1pVIyI3CUQ/lQLtD3VKMTVi+bI3cWD+qz/IA=="], + "chromatic": ["chromatic@13.3.0", "", { "peerDependencies": { "@chromatic-com/cypress": "^0.*.* || ^1.0.0", "@chromatic-com/playwright": "^0.*.* || ^1.0.0" }, "optionalPeers": ["@chromatic-com/cypress", "@chromatic-com/playwright"], "bin": { "chroma": "dist/bin.js", "chromatic": "dist/bin.js", "chromatic-cli": "dist/bin.js" } }, "sha512-OtXVKSFqGS1x6E6xYzmYX2iImSknbvo5CfTxP3ztFvXQhIAwhJzJuA3XpnIewER9gtWUNnV2DDi8/f9JyZJSfg=="], "chrome-trace-event": ["chrome-trace-event@1.0.4", "", {}, "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ=="], @@ -1311,7 +1304,7 @@ "convert-source-map": ["convert-source-map@1.9.0", "", {}, "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A=="], - "cookie": ["cookie@0.7.2", "", {}, "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="], + "cookie": ["cookie@1.0.2", "", {}, "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA=="], "copy-to-clipboard": ["copy-to-clipboard@3.3.3", "", { "dependencies": { "toggle-selection": "^1.0.6" } }, "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA=="], @@ -1429,7 +1422,7 @@ "dequal": ["dequal@2.0.3", "", {}, "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="], - "detect-libc": ["detect-libc@2.1.0", "", {}, "sha512-vEtk+OcP7VBRtQZ1EJ3bdgzSfBjgnEalLTp5zjJrS+2Z1w2KZly4SBdac/WDU3hhsNAZ9E8SC96ME4Ey8MZ7cg=="], + "detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], "devlop": ["devlop@1.1.0", "", { "dependencies": { "dequal": "^2.0.0" } }, "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="], @@ -1445,6 +1438,8 @@ "dom-accessibility-api": ["dom-accessibility-api@0.5.16", "", {}, "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg=="], + "dompurify": ["dompurify@3.1.7", "", {}, "sha512-VaTstWtsneJY8xzy7DekmYWEOZcmzIe3Qb3zPd4STve1OBTa+e+WmS1ITQec1fZYXI3HCsOZZiSMpG6oxoWMWQ=="], + "dotenv": ["dotenv@16.6.1", "", {}, "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow=="], "downloadjs": ["downloadjs@1.4.7", "", {}, "sha512-LN1gO7+u9xjU5oEScGFKvXhYf7Y/empUIIEAGBs1LzUq/rg5duiDrkuH5A2lQGd5jfMOb9X9usDa2oVXwJ0U/Q=="], @@ -1453,7 +1448,7 @@ "eastasianwidth": ["eastasianwidth@0.2.0", "", {}, "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="], - "electron-to-chromium": ["electron-to-chromium@1.5.222", "", {}, "sha512-gA7psSwSwQRE60CEoLz6JBCQPIxNeuzB2nL8vE03GK/OHxlvykbLyeiumQy1iH5C2f3YbRAZpGCMT12a/9ih9w=="], + "electron-to-chromium": ["electron-to-chromium@1.5.237", "", {}, "sha512-icUt1NvfhGLar5lSWH3tHNzablaA5js3HVHacQimfP8ViEBOQv+L7DKEuHdbTZ0SKCO1ogTJTIL1Gwk9S6Qvcg=="], "emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], @@ -1497,7 +1492,7 @@ "esast-util-from-js": ["esast-util-from-js@2.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "acorn": "^8.0.0", "esast-util-from-estree": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw=="], - "esbuild": ["esbuild@0.25.10", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.10", "@esbuild/android-arm": "0.25.10", "@esbuild/android-arm64": "0.25.10", "@esbuild/android-x64": "0.25.10", "@esbuild/darwin-arm64": "0.25.10", "@esbuild/darwin-x64": "0.25.10", "@esbuild/freebsd-arm64": "0.25.10", "@esbuild/freebsd-x64": "0.25.10", "@esbuild/linux-arm": "0.25.10", "@esbuild/linux-arm64": "0.25.10", "@esbuild/linux-ia32": "0.25.10", "@esbuild/linux-loong64": "0.25.10", "@esbuild/linux-mips64el": "0.25.10", "@esbuild/linux-ppc64": "0.25.10", "@esbuild/linux-riscv64": "0.25.10", "@esbuild/linux-s390x": "0.25.10", "@esbuild/linux-x64": "0.25.10", "@esbuild/netbsd-arm64": "0.25.10", "@esbuild/netbsd-x64": "0.25.10", "@esbuild/openbsd-arm64": "0.25.10", "@esbuild/openbsd-x64": "0.25.10", "@esbuild/openharmony-arm64": "0.25.10", "@esbuild/sunos-x64": "0.25.10", "@esbuild/win32-arm64": "0.25.10", "@esbuild/win32-ia32": "0.25.10", "@esbuild/win32-x64": "0.25.10" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-9RiGKvCwaqxO2owP61uQ4BgNborAQskMR6QusfWzQqv7AZOg5oGehdY2pRJMTKuwxd1IDBP4rSbI5lHzU7SMsQ=="], + "esbuild": ["esbuild@0.25.11", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.11", "@esbuild/android-arm": "0.25.11", "@esbuild/android-arm64": "0.25.11", "@esbuild/android-x64": "0.25.11", "@esbuild/darwin-arm64": "0.25.11", "@esbuild/darwin-x64": "0.25.11", "@esbuild/freebsd-arm64": "0.25.11", "@esbuild/freebsd-x64": "0.25.11", "@esbuild/linux-arm": "0.25.11", "@esbuild/linux-arm64": "0.25.11", "@esbuild/linux-ia32": "0.25.11", "@esbuild/linux-loong64": "0.25.11", "@esbuild/linux-mips64el": "0.25.11", "@esbuild/linux-ppc64": "0.25.11", "@esbuild/linux-riscv64": "0.25.11", "@esbuild/linux-s390x": "0.25.11", "@esbuild/linux-x64": "0.25.11", "@esbuild/netbsd-arm64": "0.25.11", "@esbuild/netbsd-x64": "0.25.11", "@esbuild/openbsd-arm64": "0.25.11", "@esbuild/openbsd-x64": "0.25.11", "@esbuild/openharmony-arm64": "0.25.11", "@esbuild/sunos-x64": "0.25.11", "@esbuild/win32-arm64": "0.25.11", "@esbuild/win32-ia32": "0.25.11", "@esbuild/win32-x64": "0.25.11" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q=="], "esbuild-register": ["esbuild-register@3.6.0", "", { "dependencies": { "debug": "^4.3.4" }, "peerDependencies": { "esbuild": ">=0.12 <1" } }, "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg=="], @@ -1525,7 +1520,7 @@ "eslint-plugin-react-hooks": ["eslint-plugin-react-hooks@4.6.2", "", { "peerDependencies": { "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" } }, "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ=="], - "eslint-plugin-storybook": ["eslint-plugin-storybook@9.1.7", "", { "dependencies": { "@typescript-eslint/utils": "^8.8.1" }, "peerDependencies": { "eslint": ">=8", "storybook": "^9.1.7" } }, "sha512-Bq9VNutFGX7T0jw7luWt5eEyRFInIsE0+FSaXdayqBNW6NPaGuE+hoBhhTowvohNqEqn5DXwIkPHiI1GhONE9g=="], + "eslint-plugin-storybook": ["eslint-plugin-storybook@9.1.13", "", { "dependencies": { "@typescript-eslint/utils": "^8.8.1" }, "peerDependencies": { "eslint": ">=8", "storybook": "^9.1.13" } }, "sha512-kPuhbtGDiJLB5OLZuwFZAxgzWakNDw64sJtXUPN8g0+VAeXfHyZEmsE28qIIETHxtal71lPKVm8QNnERaJHPJQ=="], "eslint-scope": ["eslint-scope@7.2.2", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg=="], @@ -1649,6 +1644,8 @@ "functions-have-names": ["functions-have-names@1.2.3", "", {}, "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ=="], + "generator-function": ["generator-function@2.0.1", "", {}, "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g=="], + "gensync": ["gensync@1.0.0-beta.2", "", {}, "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="], "get-caller-file": ["get-caller-file@2.0.5", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="], @@ -1741,7 +1738,7 @@ "i18n-extract": ["i18n-extract@0.6.8", "", { "dependencies": { "@babel/core": "^7.4.0", "@babel/plugin-proposal-class-properties": "^7.4.0", "@babel/plugin-proposal-decorators": "^7.4.0", "@babel/plugin-syntax-dynamic-import": "^7.2.0", "@babel/register": "^7.4.0", "@babel/traverse": "^7.4.0", "gettext-parser": "^3.1.1", "glob": "^7.1.3" } }, "sha512-m3Zbjbimi+fLamwn2bcEAzq0Nts5O/rkdgTLUuV80qT2njQagq7T4Oinrxm5BXdXhylZ8UdZhtCltbXwFSfeYQ=="], - "i18next": ["i18next@25.5.2", "", { "dependencies": { "@babel/runtime": "^7.27.6" }, "peerDependencies": { "typescript": "^5" }, "optionalPeers": ["typescript"] }, "sha512-lW8Zeh37i/o0zVr+NoCHfNnfvVw+M6FQbRp36ZZ/NyHDJ3NJVpp2HhAUyU9WafL5AssymNoOjMRB48mmx2P6Hw=="], + "i18next": ["i18next@25.6.0", "", { "dependencies": { "@babel/runtime": "^7.27.6" }, "peerDependencies": { "typescript": "^5" }, "optionalPeers": ["typescript"] }, "sha512-tTn8fLrwBYtnclpL5aPXK/tAYBLWVvoHM1zdfXoRNLcI+RvtMsoZRV98ePlaW3khHYKuNh/Q65W/+NVFUeIwVw=="], "i18next-browser-languagedetector": ["i18next-browser-languagedetector@8.2.0", "", { "dependencies": { "@babel/runtime": "^7.23.2" } }, "sha512-P+3zEKLnOF0qmiesW383vsLdtQVyKtCNA9cjSoKCppTKPQVfKd2W8hbVo5ZhNJKDqeM7BOcvNoKJOjpHh4Js9g=="], @@ -1821,7 +1818,7 @@ "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], - "is-generator-function": ["is-generator-function@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "get-proto": "^1.0.0", "has-tostringtag": "^1.0.2", "safe-regex-test": "^1.1.0" } }, "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ=="], + "is-generator-function": ["is-generator-function@1.1.2", "", { "dependencies": { "call-bound": "^1.0.4", "generator-function": "^2.0.0", "get-proto": "^1.0.1", "has-tostringtag": "^1.0.2", "safe-regex-test": "^1.1.0" } }, "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA=="], "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], @@ -1955,13 +1952,13 @@ "linkify-it": ["linkify-it@5.0.0", "", { "dependencies": { "uc.micro": "^2.0.0" } }, "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ=="], - "lint-staged": ["lint-staged@16.2.0", "", { "dependencies": { "commander": "14.0.1", "listr2": "9.0.4", "micromatch": "4.0.8", "nano-spawn": "1.0.3", "pidtree": "0.6.0", "string-argv": "0.3.2", "yaml": "2.8.1" }, "bin": { "lint-staged": "bin/lint-staged.js" } }, "sha512-spdYSOCQ2MdZ9CM1/bu/kDmaYGsrpNOeu1InFFV8uhv14x6YIubGxbCpSmGILFoxkiheNQPDXSg5Sbb5ZuVnug=="], + "lint-staged": ["lint-staged@16.2.5", "", { "dependencies": { "commander": "^14.0.1", "listr2": "^9.0.4", "micromatch": "^4.0.8", "nano-spawn": "^2.0.0", "pidtree": "^0.6.0", "string-argv": "^0.3.2", "yaml": "^2.8.1" }, "bin": { "lint-staged": "bin/lint-staged.js" } }, "sha512-o36wH3OX0jRWqDw5dOa8a8x6GXTKaLM+LvhRaucZxez0IxA+KNDUCiyjBfNgsMNmchwSX6urLSL7wShcUqAang=="], - "listr2": ["listr2@9.0.4", "", { "dependencies": { "cli-truncate": "^5.0.0", "colorette": "^2.0.20", "eventemitter3": "^5.0.1", "log-update": "^6.1.0", "rfdc": "^1.4.1", "wrap-ansi": "^9.0.0" } }, "sha512-1wd/kpAdKRLwv7/3OKC8zZ5U8e/fajCfWMxacUvB79S5nLrYGPtUI/8chMQhn3LQjsRVErTb9i1ECAwW0ZIHnQ=="], + "listr2": ["listr2@9.0.5", "", { "dependencies": { "cli-truncate": "^5.0.0", "colorette": "^2.0.20", "eventemitter3": "^5.0.1", "log-update": "^6.1.0", "rfdc": "^1.4.1", "wrap-ansi": "^9.0.0" } }, "sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g=="], "load-json-file": ["load-json-file@4.0.0", "", { "dependencies": { "graceful-fs": "^4.1.2", "parse-json": "^4.0.0", "pify": "^3.0.0", "strip-bom": "^3.0.0" } }, "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw=="], - "loader-runner": ["loader-runner@4.3.0", "", {}, "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg=="], + "loader-runner": ["loader-runner@4.3.1", "", {}, "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q=="], "locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "^5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="], @@ -2015,6 +2012,8 @@ "markdown-it": ["markdown-it@14.1.0", "", { "dependencies": { "argparse": "^2.0.1", "entities": "^4.4.0", "linkify-it": "^5.0.0", "mdurl": "^2.0.0", "punycode.js": "^2.3.1", "uc.micro": "^2.1.0" }, "bin": { "markdown-it": "bin/markdown-it.mjs" } }, "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg=="], + "marked": ["marked@14.0.0", "", { "bin": { "marked": "bin/marked.js" } }, "sha512-uIj4+faQ+MgHgwUW1l2PsPglZLOLOT1uErt06dAPtx2kjteLAkbsd/0FiYg/MGS+i7ZKLb7w2WClxHkzOOuryQ=="], + "math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="], "md5": ["md5@2.3.0", "", { "dependencies": { "charenc": "0.0.2", "crypt": "0.0.2", "is-buffer": "~1.1.6" } }, "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g=="], @@ -2125,21 +2124,21 @@ "mitt": ["mitt@3.0.1", "", {}, "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw=="], - "mixpanel-browser": ["mixpanel-browser@2.70.0", "", { "dependencies": { "@mixpanel/rrweb": "2.0.0-alpha.18.1" } }, "sha512-iXSD6t9iNTHd1cHbBlP4LrJACgAKfFrssttGKAy4sNu+BodVccTlJQJeBxINZUBsP/WbWMFSuDo2xHRUr3OG/A=="], + "mixpanel-browser": ["mixpanel-browser@2.71.0", "", { "dependencies": { "@mixpanel/rrweb": "2.0.0-alpha.18.2" } }, "sha512-jKmDXe68/oQFgk/9ns9Z36bA0CJ31PH8Y77XTLLGfJvhsUPbvu+7Se9e281NejZF6+OMqx7cE+zFxToozYyNrA=="], "mkdirp": ["mkdirp@0.3.0", "", {}, "sha512-OHsdUcVAQ6pOtg5JYWpCBo9W/GySVuwvP9hueRMW7UqshC0tbfzLv8wjySTPm3tfUZ/21CE9E1pJagOA91Pxew=="], "module-alias": ["module-alias@2.2.3", "", {}, "sha512-23g5BFj4zdQL/b6tor7Ji+QY4pEfNH784BMslY9Qb0UnJWRAt+lQGLYmRaM0KDBwIG23ffEBELhZDP2rhi9f/Q=="], - "monaco-editor": ["monaco-editor@0.53.0", "", { "dependencies": { "@types/trusted-types": "^1.0.6" } }, "sha512-0WNThgC6CMWNXXBxTbaYYcunj08iB5rnx4/G56UOPeL9UVIUGGHA1GR0EWIh9Ebabj7NpCRawQ5b0hfN1jQmYQ=="], + "monaco-editor": ["monaco-editor@0.54.0", "", { "dependencies": { "dompurify": "3.1.7", "marked": "14.0.0" } }, "sha512-hx45SEUoLatgWxHKCmlLJH81xBo0uXP4sRkESUpmDQevfi+e7K1VuiSprK6UpQ8u4zOcKNiH0pMvHvlMWA/4cw=="], "mrmime": ["mrmime@2.0.1", "", {}, "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ=="], "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], - "msw": ["msw@2.11.3", "", { "dependencies": { "@bundled-es-modules/cookie": "^2.0.1", "@bundled-es-modules/statuses": "^1.0.1", "@inquirer/confirm": "^5.0.0", "@mswjs/interceptors": "^0.39.1", "@open-draft/deferred-promise": "^2.2.0", "@types/cookie": "^0.6.0", "@types/statuses": "^2.0.4", "graphql": "^16.8.1", "headers-polyfill": "^4.0.2", "is-node-process": "^1.2.0", "outvariant": "^1.4.3", "path-to-regexp": "^6.3.0", "picocolors": "^1.1.1", "rettime": "^0.7.0", "strict-event-emitter": "^0.5.1", "tough-cookie": "^6.0.0", "type-fest": "^4.26.1", "until-async": "^3.0.2", "yargs": "^17.7.2" }, "peerDependencies": { "typescript": ">= 4.8.x" }, "optionalPeers": ["typescript"], "bin": { "msw": "cli/index.js" } }, "sha512-878imp8jxIpfzuzxYfX0qqTq1IFQz/1/RBHs/PyirSjzi+xKM/RRfIpIqHSCWjH0GxidrjhgiiXC+DWXNDvT9w=="], + "msw": ["msw@2.11.6", "", { "dependencies": { "@inquirer/confirm": "^5.0.0", "@mswjs/interceptors": "^0.40.0", "@open-draft/deferred-promise": "^2.2.0", "@types/statuses": "^2.0.4", "cookie": "^1.0.2", "graphql": "^16.8.1", "headers-polyfill": "^4.0.2", "is-node-process": "^1.2.0", "outvariant": "^1.4.3", "path-to-regexp": "^6.3.0", "picocolors": "^1.1.1", "rettime": "^0.7.0", "statuses": "^2.0.2", "strict-event-emitter": "^0.5.1", "tough-cookie": "^6.0.0", "type-fest": "^4.26.1", "until-async": "^3.0.2", "yargs": "^17.7.2" }, "peerDependencies": { "typescript": ">= 4.8.x" }, "optionalPeers": ["typescript"], "bin": { "msw": "cli/index.js" } }, "sha512-MCYMykvmiYScyUm7I6y0VCxpNq1rgd5v7kG8ks5dKtvmxRUUPjribX6mUoUNBbM5/3PhUyoelEWiKXGOz84c+w=="], - "msw-storybook-addon": ["msw-storybook-addon@2.0.5", "", { "dependencies": { "is-node-process": "^1.0.1" }, "peerDependencies": { "msw": "^2.0.0" } }, "sha512-uum2gtprDBoUb8GV/rPMwPytHmB8+AUr25BQUY0MpjYey5/ujaew2Edt+4oHiXpLTd0ThyMqmEvGy/sRpDV4lg=="], + "msw-storybook-addon": ["msw-storybook-addon@2.0.6", "", { "dependencies": { "is-node-process": "^1.0.1" }, "peerDependencies": { "msw": "^2.0.0" } }, "sha512-ExCwDbcJoM2V3iQU+fZNp+axVfNc7DWMRh4lyTXebDO8IbpUNYKGFUrA8UqaeWiRGKVuS7+fU+KXEa9b0OP6uA=="], "mute-stream": ["mute-stream@2.0.0", "", {}, "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA=="], @@ -2147,7 +2146,7 @@ "nano-css": ["nano-css@5.6.2", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15", "css-tree": "^1.1.2", "csstype": "^3.1.2", "fastest-stable-stringify": "^2.0.2", "inline-style-prefixer": "^7.0.1", "rtl-css-js": "^1.16.1", "stacktrace-js": "^2.0.2", "stylis": "^4.3.0" }, "peerDependencies": { "react": "*", "react-dom": "*" } }, "sha512-+6bHaC8dSDGALM1HJjOHVXpuastdu2xFoZlC77Jh4cg+33Zcgm+Gxd+1xsnpZK14eyHObSp82+ll5y3SX75liw=="], - "nano-spawn": ["nano-spawn@1.0.3", "", {}, "sha512-jtpsQDetTnvS2Ts1fiRdci5rx0VYws5jGyC+4IYOTnIQ/wwdf6JdomlHBwqC3bJYOvaKu0C2GSZ1A60anrYpaA=="], + "nano-spawn": ["nano-spawn@2.0.0", "", {}, "sha512-tacvGzUY5o2D8CBh2rrwxyNojUsZNU2zjNTzKQrkgGJQTbGAfArVWXSKMBokBeeg6C7OLRGUEyoFlYbfeWQIqw=="], "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], @@ -2169,7 +2168,7 @@ "node-readfiles": ["node-readfiles@0.2.0", "", { "dependencies": { "es6-promise": "^3.2.1" } }, "sha512-SU00ZarexNlE4Rjdm83vglt5Y9yiQ+XI1XpflWlb7q7UTN1JUItm69xMeiQCTxtTfnzt+83T8Cx+vI2ED++VDA=="], - "node-releases": ["node-releases@2.0.21", "", {}, "sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw=="], + "node-releases": ["node-releases@2.0.25", "", {}, "sha512-4auku8B/vw5psvTiiN9j1dAOsXvMoGqJuKJcR+dTdqiXEK20mMTk1UEo3HS16LeGQsVG6+qKTPM9u/qQ2LqATA=="], "nopt": ["nopt@1.0.10", "", { "dependencies": { "abbrev": "1" }, "bin": { "nopt": "./bin/nopt.js" } }, "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg=="], @@ -2211,7 +2210,7 @@ "object.values": ["object.values@1.2.1", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA=="], - "octokit": ["octokit@5.0.3", "", { "dependencies": { "@octokit/app": "^16.0.1", "@octokit/core": "^7.0.2", "@octokit/oauth-app": "^8.0.1", "@octokit/plugin-paginate-graphql": "^6.0.0", "@octokit/plugin-paginate-rest": "^13.0.0", "@octokit/plugin-rest-endpoint-methods": "^16.0.0", "@octokit/plugin-retry": "^8.0.1", "@octokit/plugin-throttling": "^11.0.1", "@octokit/request-error": "^7.0.0", "@octokit/types": "^14.0.0", "@octokit/webhooks": "^14.0.0" } }, "sha512-+bwYsAIRmYv30NTmBysPIlgH23ekVDriB07oRxlPIAH5PI0yTMSxg5i5Xy0OetcnZw+nk/caD4szD7a9YZ3QyQ=="], + "octokit": ["octokit@5.0.4", "", { "dependencies": { "@octokit/app": "^16.1.1", "@octokit/core": "^7.0.5", "@octokit/oauth-app": "^8.0.2", "@octokit/plugin-paginate-graphql": "^6.0.0", "@octokit/plugin-paginate-rest": "^13.2.0", "@octokit/plugin-rest-endpoint-methods": "^16.1.0", "@octokit/plugin-retry": "^8.0.2", "@octokit/plugin-throttling": "^11.0.2", "@octokit/request-error": "^7.0.1", "@octokit/types": "^15.0.0", "@octokit/webhooks": "^14.0.0" } }, "sha512-4n/mMoLQs2npBE+aTG5o4H+hZhFKu8aDqZFP/nmUNRUYrTpXpaqvX1ppK5eiCtQ+uP/8jI6vbdfCB2udlBgccA=="], "once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="], @@ -2221,11 +2220,11 @@ "openapi-types": ["openapi-types@12.1.3", "", {}, "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw=="], - "openapi3-ts": ["openapi3-ts@4.2.2", "", { "dependencies": { "yaml": "^2.3.4" } }, "sha512-+9g4actZKeb3czfi9gVQ4Br2Ju3KwhCAQJBNaKgye5KggqcBLIhFHH+nIkcm0BUX00TrAJl6dH4JWgM4G4JWrw=="], + "openapi3-ts": ["openapi3-ts@4.5.0", "", { "dependencies": { "yaml": "^2.8.0" } }, "sha512-jaL+HgTq2Gj5jRcfdutgRGLosCy/hT8sQf6VOy+P+g36cZOjI1iukdPnijC+4CmeRzg/jEllJUboEic2FhxhtQ=="], "optionator": ["optionator@0.9.4", "", { "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", "word-wrap": "^1.2.5" } }, "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g=="], - "orval": ["orval@7.11.2", "", { "dependencies": { "@apidevtools/swagger-parser": "^10.1.1", "@orval/angular": "7.11.2", "@orval/axios": "7.11.2", "@orval/core": "7.11.2", "@orval/fetch": "7.11.2", "@orval/hono": "7.11.2", "@orval/mcp": "7.11.2", "@orval/mock": "7.11.2", "@orval/query": "7.11.2", "@orval/swr": "7.11.2", "@orval/zod": "7.11.2", "ajv": "^8.17.1", "cac": "^6.7.14", "chalk": "^4.1.2", "chokidar": "^4.0.3", "enquirer": "^2.4.1", "execa": "^5.1.1", "find-up": "5.0.0", "fs-extra": "^11.3.0", "lodash.uniq": "^4.5.0", "openapi3-ts": "4.2.2", "string-argv": "^0.3.2", "tsconfck": "^2.0.1", "typedoc": "^0.28.7", "typedoc-plugin-markdown": "^4.8.0", "typescript": "^5.6.3" }, "bin": { "orval": "dist/bin/orval.js" } }, "sha512-Cjc/dgnQwAOkvymzvPpFqFc2nQwZ29E+ZFWUI8yKejleHaoFKIdwvkM/b1njtLEjePDcF0hyqXXCTz2wWaXLig=="], + "orval": ["orval@7.14.0", "", { "dependencies": { "@apidevtools/swagger-parser": "^12.0.0", "@commander-js/extra-typings": "^14.0.0", "@orval/angular": "7.14.0", "@orval/axios": "7.14.0", "@orval/core": "7.14.0", "@orval/fetch": "7.14.0", "@orval/hono": "7.14.0", "@orval/mcp": "7.14.0", "@orval/mock": "7.14.0", "@orval/query": "7.14.0", "@orval/swr": "7.14.0", "@orval/zod": "7.14.0", "chalk": "^4.1.2", "chokidar": "^4.0.3", "commander": "^14.0.1", "enquirer": "^2.4.1", "execa": "^5.1.1", "find-up": "5.0.0", "fs-extra": "^11.3.1", "js-yaml": "4.1.0", "lodash.uniq": "^4.5.0", "openapi3-ts": "4.5.0", "string-argv": "^0.3.2", "tsconfck": "^2.1.2", "typedoc": "^0.28.12", "typedoc-plugin-coverage": "^4.0.1", "typedoc-plugin-markdown": "^4.8.1" }, "bin": "./dist/bin/orval.js" }, "sha512-m8WGuNmbzZkSaMBwF+uXPS73KOqJGaPaQw6/cM7QNYlcBmZdFg09a3xz9vxfbcSbk4rMr3/aCm8SzVO1ealf+g=="], "outvariant": ["outvariant@1.4.3", "", {}, "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA=="], @@ -2283,9 +2282,9 @@ "pkg-dir": ["pkg-dir@3.0.0", "", { "dependencies": { "find-up": "^3.0.0" } }, "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw=="], - "playwright": ["playwright@1.55.0", "", { "dependencies": { "playwright-core": "1.55.0" }, "optionalDependencies": { "fsevents": "2.3.2" }, "bin": { "playwright": "cli.js" } }, "sha512-sdCWStblvV1YU909Xqx0DhOjPZE4/5lJsIS84IfN9dAZfcl/CIZ5O8l3o0j7hPMjDvqoTF8ZUcc+i/GL5erstA=="], + "playwright": ["playwright@1.56.1", "", { "dependencies": { "playwright-core": "1.56.1" }, "optionalDependencies": { "fsevents": "2.3.2" }, "bin": { "playwright": "cli.js" } }, "sha512-aFi5B0WovBHTEvpM3DzXTUaeN6eN0qWnTkKx4NQaH4Wvcmc153PdaY2UBdSYKaGYw+UyWXSVyxDUg5DoPEttjw=="], - "playwright-core": ["playwright-core@1.55.0", "", { "bin": { "playwright-core": "cli.js" } }, "sha512-GvZs4vU3U5ro2nZpeiwyb0zuFaqb9sUiAJuyrWpcGouD8y9/HLgGbNRjIph7zU9D3hnPaisMl9zG9CgFi/biIg=="], + "playwright-core": ["playwright-core@1.56.1", "", { "bin": { "playwright-core": "cli.js" } }, "sha512-hutraynyn31F+Bifme+Ps9Vq59hKuUCz7H1kDOcBs+2oGguKkWTU50bBWrtz34OUWmIwpBTWDxaRPXrIXkgvmQ=="], "polyfill-text-decoder-stream": ["polyfill-text-decoder-stream@0.0.10", "", { "peerDependencies": { "typescript": "^5.0.0" } }, "sha512-qiFgrQbd2XOGD7yHVOzoZ6zWHEWp1rRct1ZIauh+m6J+Qu0KHMlOFtYcCHesQnt0N97kYoMF3rJURuNyvd9qlg=="], @@ -2301,7 +2300,7 @@ "postcss-js": ["postcss-js@4.1.0", "", { "dependencies": { "camelcase-css": "^2.0.1" }, "peerDependencies": { "postcss": "^8.4.21" } }, "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw=="], - "postcss-load-config": ["postcss-load-config@4.0.2", "", { "dependencies": { "lilconfig": "^3.0.0", "yaml": "^2.3.4" }, "peerDependencies": { "postcss": ">=8.0.9", "ts-node": ">=9.0.0" }, "optionalPeers": ["postcss", "ts-node"] }, "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ=="], + "postcss-load-config": ["postcss-load-config@6.0.1", "", { "dependencies": { "lilconfig": "^3.1.1" }, "peerDependencies": { "jiti": ">=1.21.0", "postcss": ">=8.0.9", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["jiti", "postcss", "tsx", "yaml"] }, "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g=="], "postcss-nested": ["postcss-nested@6.2.0", "", { "dependencies": { "postcss-selector-parser": "^6.1.1" }, "peerDependencies": { "postcss": "^8.2.14" } }, "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ=="], @@ -2343,7 +2342,7 @@ "react": ["react@18.2.0", "", { "dependencies": { "loose-envify": "^1.1.0" } }, "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ=="], - "react-docgen": ["react-docgen@8.0.1", "", { "dependencies": { "@babel/core": "^7.28.0", "@babel/traverse": "^7.28.0", "@babel/types": "^7.28.2", "@types/babel__core": "^7.20.5", "@types/babel__traverse": "^7.20.7", "@types/doctrine": "^0.0.9", "@types/resolve": "^1.20.2", "doctrine": "^3.0.0", "resolve": "^1.22.1", "strip-indent": "^4.0.0" } }, "sha512-kQKsqPLplY3Hx4jGnM3jpQcG3FQDt7ySz32uTHt3C9HAe45kNXG+3o16Eqn3Fw1GtMfHoN3b4J/z2e6cZJCmqQ=="], + "react-docgen": ["react-docgen@8.0.2", "", { "dependencies": { "@babel/core": "^7.28.0", "@babel/traverse": "^7.28.0", "@babel/types": "^7.28.2", "@types/babel__core": "^7.20.5", "@types/babel__traverse": "^7.20.7", "@types/doctrine": "^0.0.9", "@types/resolve": "^1.20.2", "doctrine": "^3.0.0", "resolve": "^1.22.1", "strip-indent": "^4.0.0" } }, "sha512-+NRMYs2DyTP4/tqWz371Oo50JqmWltR1h2gcdgUMAWZJIAvrd0/SqlCfx7tpzpl/s36rzw6qH2MjoNrxtRNYhA=="], "react-docgen-typescript": ["react-docgen-typescript@2.4.0", "", { "peerDependencies": { "typescript": ">= 4.3.x" } }, "sha512-ZtAp5XTO5HRzQctjPU0ybY0RRCQO19X/8fxn3w7y2VVTUbGHDKULPTL4ky3vB05euSgG5NpALhEhDPvQ56wvXg=="], @@ -2351,7 +2350,7 @@ "react-firebase-hooks": ["react-firebase-hooks@5.1.1", "", { "peerDependencies": { "firebase": ">= 9.0.0", "react": ">= 16.8.0" } }, "sha512-y2UpWs82xs+39q5Rc/wq316ca52QsC0n8m801V+yM4IC4hbfOL4yQPVSh7w+ydstdvjN9F+lvs1WrO2VYxpmdA=="], - "react-hook-form": ["react-hook-form@7.63.0", "", { "peerDependencies": { "react": "^16.8.0 || ^17 || ^18 || ^19" } }, "sha512-ZwueDMvUeucovM2VjkCf7zIHcs1aAlDimZu2Hvel5C5907gUzMpm4xCrQXtRzCvsBqFjonB4m3x4LzCFI1ZKWA=="], + "react-hook-form": ["react-hook-form@7.65.0", "", { "peerDependencies": { "react": "^16.8.0 || ^17 || ^18 || ^19" } }, "sha512-xtOzDz063WcXvGWaHgLNrNzlsdFgtUWcb32E6WFaGTd7kPZG3EeDusjdZfUsPwKCKVXy1ZlntifaHZ4l8pAsmw=="], "react-i18next": ["react-i18next@15.1.4", "", { "dependencies": { "@babel/runtime": "^7.25.0", "html-parse-stringify": "^3.0.1" }, "peerDependencies": { "i18next": ">= 23.2.3", "react": ">= 16.8.0" } }, "sha512-2tai71gmehbvl9ZIqPMqlCCkm/cbeV1G4STpmM3C8Uzo6T2l8jDvZxEVSsQKt8blP9X34iRFP/k1ROqG2296MQ=="], @@ -2441,7 +2440,7 @@ "robust-predicates": ["robust-predicates@3.0.2", "", {}, "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg=="], - "rollup": ["rollup@4.52.0", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.52.0", "@rollup/rollup-android-arm64": "4.52.0", "@rollup/rollup-darwin-arm64": "4.52.0", "@rollup/rollup-darwin-x64": "4.52.0", "@rollup/rollup-freebsd-arm64": "4.52.0", "@rollup/rollup-freebsd-x64": "4.52.0", "@rollup/rollup-linux-arm-gnueabihf": "4.52.0", "@rollup/rollup-linux-arm-musleabihf": "4.52.0", "@rollup/rollup-linux-arm64-gnu": "4.52.0", "@rollup/rollup-linux-arm64-musl": "4.52.0", "@rollup/rollup-linux-loong64-gnu": "4.52.0", "@rollup/rollup-linux-ppc64-gnu": "4.52.0", "@rollup/rollup-linux-riscv64-gnu": "4.52.0", "@rollup/rollup-linux-riscv64-musl": "4.52.0", "@rollup/rollup-linux-s390x-gnu": "4.52.0", "@rollup/rollup-linux-x64-gnu": "4.52.0", "@rollup/rollup-linux-x64-musl": "4.52.0", "@rollup/rollup-openharmony-arm64": "4.52.0", "@rollup/rollup-win32-arm64-msvc": "4.52.0", "@rollup/rollup-win32-ia32-msvc": "4.52.0", "@rollup/rollup-win32-x64-gnu": "4.52.0", "@rollup/rollup-win32-x64-msvc": "4.52.0", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-+IuescNkTJQgX7AkIDtITipZdIGcWF0pnVvZTWStiazUmcGA2ag8dfg0urest2XlXUi9kuhfQ+qmdc5Stc3z7g=="], + "rollup": ["rollup@4.52.5", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.52.5", "@rollup/rollup-android-arm64": "4.52.5", "@rollup/rollup-darwin-arm64": "4.52.5", "@rollup/rollup-darwin-x64": "4.52.5", "@rollup/rollup-freebsd-arm64": "4.52.5", "@rollup/rollup-freebsd-x64": "4.52.5", "@rollup/rollup-linux-arm-gnueabihf": "4.52.5", "@rollup/rollup-linux-arm-musleabihf": "4.52.5", "@rollup/rollup-linux-arm64-gnu": "4.52.5", "@rollup/rollup-linux-arm64-musl": "4.52.5", "@rollup/rollup-linux-loong64-gnu": "4.52.5", "@rollup/rollup-linux-ppc64-gnu": "4.52.5", "@rollup/rollup-linux-riscv64-gnu": "4.52.5", "@rollup/rollup-linux-riscv64-musl": "4.52.5", "@rollup/rollup-linux-s390x-gnu": "4.52.5", "@rollup/rollup-linux-x64-gnu": "4.52.5", "@rollup/rollup-linux-x64-musl": "4.52.5", "@rollup/rollup-openharmony-arm64": "4.52.5", "@rollup/rollup-win32-arm64-msvc": "4.52.5", "@rollup/rollup-win32-ia32-msvc": "4.52.5", "@rollup/rollup-win32-x64-gnu": "4.52.5", "@rollup/rollup-win32-x64-msvc": "4.52.5", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw=="], "rtl-css-js": ["rtl-css-js@1.16.1", "", { "dependencies": { "@babel/runtime": "^7.1.2" } }, "sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg=="], @@ -2465,7 +2464,7 @@ "scheduler": ["scheduler@0.23.2", "", { "dependencies": { "loose-envify": "^1.1.0" } }, "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ=="], - "schema-utils": ["schema-utils@4.3.2", "", { "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", "ajv-formats": "^2.1.1", "ajv-keywords": "^5.1.0" } }, "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ=="], + "schema-utils": ["schema-utils@4.3.3", "", { "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", "ajv-formats": "^2.1.1", "ajv-keywords": "^5.1.0" } }, "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA=="], "screenfull": ["screenfull@5.2.0", "", {}, "sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA=="], @@ -2483,7 +2482,7 @@ "set-proto": ["set-proto@1.0.0", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0" } }, "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw=="], - "sflow": ["sflow@1.25.1", "", { "dependencies": { "@types/d3": "^7.4.3", "bson": "^6.8.0", "d3": "^7.9.0", "from-node-stream": "0.0.4", "npm-run-all": "^4.1.5", "phpdie": "^1.2.12", "polyfill-text-decoder-stream": "0.0.10", "polyfill-text-encoder-stream": "^0.0.9", "rambda": "^9.2.1", "string-replace-async": "^3.0.2", "ts-essentials": "^10.1.1", "unwind-array": "^1.1.4", "web-streams-extensions": "^0.12.0" }, "peerDependencies": { "react-hook-form": "^7.52.2", "typescript": "^5.0.0" } }, "sha512-EPilMl81V8L3h572CYO+cThIcZ7cKBNxDyrQnjdQ7VRlk+FccXnqkYZ0p9bxey8Gb9G9RyBO5tsma/bQPcKqBA=="], + "sflow": ["sflow@1.26.1", "", { "dependencies": { "@types/d3": "^7.4.3", "bson": "^6.8.0", "d3": "^7.9.0", "from-node-stream": "0.0.4", "npm-run-all": "^4.1.5", "phpdie": "^1.2.12", "polyfill-text-decoder-stream": "0.0.10", "polyfill-text-encoder-stream": "^0.0.9", "rambda": "^9.2.1", "string-replace-async": "^3.0.2", "ts-essentials": "^10.1.1", "unwind-array": "^1.1.4", "web-streams-extensions": "^0.12.0" }, "peerDependencies": { "react-hook-form": "^7.52.2", "typescript": "^5.0.0" } }, "sha512-QsIrQw9IEjFT+RV2Wkm6tTN8/IK2RucCqzGWJRkvrytKnUqCjbZ2shXnxZ3AlmCUEmL3qtBaSy51baXeQyJjwg=="], "shallow-clone": ["shallow-clone@3.0.1", "", { "dependencies": { "kind-of": "^6.0.2" } }, "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA=="], @@ -2563,11 +2562,11 @@ "statuses": ["statuses@2.0.2", "", {}, "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw=="], - "std-env": ["std-env@3.9.0", "", {}, "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw=="], + "std-env": ["std-env@3.10.0", "", {}, "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg=="], "stop-iteration-iterator": ["stop-iteration-iterator@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "internal-slot": "^1.1.0" } }, "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ=="], - "storybook": ["storybook@9.1.7", "", { "dependencies": { "@storybook/global": "^5.0.0", "@testing-library/jest-dom": "^6.6.3", "@testing-library/user-event": "^14.6.1", "@vitest/expect": "3.2.4", "@vitest/mocker": "3.2.4", "@vitest/spy": "3.2.4", "better-opn": "^3.0.2", "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0", "esbuild-register": "^3.5.0", "recast": "^0.23.5", "semver": "^7.6.2", "ws": "^8.18.0" }, "peerDependencies": { "prettier": "^2 || ^3" }, "optionalPeers": ["prettier"], "bin": "./bin/index.cjs" }, "sha512-X8YSQMNuqV9DklQLZH6mLKpDn15Z5tuUUTAIYsiGqx5BwsjtXnv5K04fXgl3jqTZyUauzV/ii8KdT04NVLtMwQ=="], + "storybook": ["storybook@9.1.13", "", { "dependencies": { "@storybook/global": "^5.0.0", "@testing-library/jest-dom": "^6.6.3", "@testing-library/user-event": "^14.6.1", "@vitest/expect": "3.2.4", "@vitest/mocker": "3.2.4", "@vitest/spy": "3.2.4", "better-opn": "^3.0.2", "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0", "esbuild-register": "^3.5.0", "recast": "^0.23.5", "semver": "^7.6.2", "ws": "^8.18.0" }, "peerDependencies": { "prettier": "^2 || ^3" }, "optionalPeers": ["prettier"], "bin": "./bin/index.cjs" }, "sha512-G3KZ36EVzXyHds72B/qtWiJnhUpM0xOUeYlDcO9DSHL1bDTv15cW4+upBl+mcBZrDvU838cn7Bv4GpF+O5MCfw=="], "streamsearch": ["streamsearch@1.1.0", "", {}, "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg=="], @@ -2607,15 +2606,15 @@ "strip-final-newline": ["strip-final-newline@2.0.0", "", {}, "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA=="], - "strip-indent": ["strip-indent@4.1.0", "", {}, "sha512-OA95x+JPmL7kc7zCu+e+TeYxEiaIyndRx0OrBcK2QPPH09oAndr2ALvymxWA+Lx1PYYvFUm4O63pRkdJAaW96w=="], + "strip-indent": ["strip-indent@4.1.1", "", {}, "sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA=="], "strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="], - "strip-literal": ["strip-literal@3.0.0", "", { "dependencies": { "js-tokens": "^9.0.1" } }, "sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA=="], + "strip-literal": ["strip-literal@3.1.0", "", { "dependencies": { "js-tokens": "^9.0.1" } }, "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg=="], - "style-to-js": ["style-to-js@1.1.17", "", { "dependencies": { "style-to-object": "1.0.9" } }, "sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA=="], + "style-to-js": ["style-to-js@1.1.18", "", { "dependencies": { "style-to-object": "1.0.11" } }, "sha512-JFPn62D4kJaPTnhFUI244MThx+FEGbi+9dw1b9yBBQ+1CZpV7QAT8kUtJ7b7EUNdHajjF/0x8fT+16oLJoojLg=="], - "style-to-object": ["style-to-object@1.0.9", "", { "dependencies": { "inline-style-parser": "0.2.4" } }, "sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw=="], + "style-to-object": ["style-to-object@1.0.11", "", { "dependencies": { "inline-style-parser": "0.2.4" } }, "sha512-5A560JmXr7wDyGLK12Nq/EYS38VkGlglVzkis1JEdbGWSnbQIEhZzTJhzURXN5/8WwwFCs/f/VVcmkTppbXLow=="], "styled-jsx": ["styled-jsx@5.1.7", "", { "dependencies": { "client-only": "0.0.1" }, "peerDependencies": { "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" } }, "sha512-HPLmEIYprxCeWDMLYiaaAhsV3yGfIlCqzuVOybE6fjF3SUJmH67nCoMDO+nAvHNHo46OfvpCNu4Rcue82dMNFg=="], @@ -2633,9 +2632,9 @@ "tailwind-merge": ["tailwind-merge@2.6.0", "", {}, "sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA=="], - "tailwindcss": ["tailwindcss@3.4.17", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", "chokidar": "^3.6.0", "didyoumean": "^1.2.2", "dlv": "^1.1.3", "fast-glob": "^3.3.2", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", "jiti": "^1.21.6", "lilconfig": "^3.1.3", "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", "picocolors": "^1.1.1", "postcss": "^8.4.47", "postcss-import": "^15.1.0", "postcss-js": "^4.0.1", "postcss-load-config": "^4.0.2", "postcss-nested": "^6.2.0", "postcss-selector-parser": "^6.1.2", "resolve": "^1.22.8", "sucrase": "^3.35.0" }, "bin": { "tailwind": "lib/cli.js", "tailwindcss": "lib/cli.js" } }, "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og=="], + "tailwindcss": ["tailwindcss@3.4.18", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", "chokidar": "^3.6.0", "didyoumean": "^1.2.2", "dlv": "^1.1.3", "fast-glob": "^3.3.2", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", "jiti": "^1.21.7", "lilconfig": "^3.1.3", "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", "picocolors": "^1.1.1", "postcss": "^8.4.47", "postcss-import": "^15.1.0", "postcss-js": "^4.0.1", "postcss-load-config": "^4.0.2 || ^5.0 || ^6.0", "postcss-nested": "^6.2.0", "postcss-selector-parser": "^6.1.2", "resolve": "^1.22.8", "sucrase": "^3.35.0" }, "bin": { "tailwind": "lib/cli.js", "tailwindcss": "lib/cli.js" } }, "sha512-6A2rnmW5xZMdw11LYjhcI5846rt9pbLSabY5XPxo+XWdxwZaFEn47Go4NzFiHu9sNNmr/kXivP1vStfvMaK1GQ=="], - "tapable": ["tapable@2.2.3", "", {}, "sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg=="], + "tapable": ["tapable@2.3.0", "", {}, "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg=="], "terser": ["terser@5.44.0", "", { "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.15.0", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, "bin": { "terser": "bin/terser" } }, "sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w=="], @@ -2665,9 +2664,9 @@ "tinyspy": ["tinyspy@3.0.2", "", {}, "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q=="], - "tldts": ["tldts@7.0.15", "", { "dependencies": { "tldts-core": "^7.0.15" }, "bin": { "tldts": "bin/cli.js" } }, "sha512-heYRCiGLhtI+U/D0V8YM3QRwPfsLJiP+HX+YwiHZTnWzjIKC+ZCxQRYlzvOoTEc6KIP62B1VeAN63diGCng2hg=="], + "tldts": ["tldts@7.0.17", "", { "dependencies": { "tldts-core": "^7.0.17" }, "bin": { "tldts": "bin/cli.js" } }, "sha512-Y1KQBgDd/NUc+LfOtKS6mNsC9CCaH+m2P1RoIZy7RAPo3C3/t8X45+zgut31cRZtZ3xKPjfn3TkGTrctC2TQIQ=="], - "tldts-core": ["tldts-core@7.0.15", "", {}, "sha512-YBkp2VfS9VTRMPNL2PA6PMESmxV1JEVoAr5iBlZnB5JG3KUrWzNCB3yNNkRa2FZkqClaBgfNYCp8PgpYmpjkZw=="], + "tldts-core": ["tldts-core@7.0.17", "", {}, "sha512-DieYoGrP78PWKsrXr8MZwtQ7GLCUeLxihtjC1jZsW1DnvSMdKPitJSe8OSYDM2u5H6g3kWJZpePqkp43TfLh0g=="], "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], @@ -2717,7 +2716,9 @@ "typed-array-length": ["typed-array-length@1.0.7", "", { "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", "is-typed-array": "^1.1.13", "possible-typed-array-names": "^1.0.0", "reflect.getprototypeof": "^1.0.6" } }, "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg=="], - "typedoc": ["typedoc@0.28.13", "", { "dependencies": { "@gerrit0/mini-shiki": "^3.12.0", "lunr": "^2.3.9", "markdown-it": "^14.1.0", "minimatch": "^9.0.5", "yaml": "^2.8.1" }, "peerDependencies": { "typescript": "5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x" }, "bin": { "typedoc": "bin/typedoc" } }, "sha512-dNWY8msnYB2a+7Audha+aTF1Pu3euiE7ySp53w8kEsXoYw7dMouV5A1UsTUY345aB152RHnmRMDiovuBi7BD+w=="], + "typedoc": ["typedoc@0.28.14", "", { "dependencies": { "@gerrit0/mini-shiki": "^3.12.0", "lunr": "^2.3.9", "markdown-it": "^14.1.0", "minimatch": "^9.0.5", "yaml": "^2.8.1" }, "peerDependencies": { "typescript": "5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x" }, "bin": { "typedoc": "bin/typedoc" } }, "sha512-ftJYPvpVfQvFzpkoSfHLkJybdA/geDJ8BGQt/ZnkkhnBYoYW6lBgPQXu6vqLxO4X75dA55hX8Af847H5KXlEFA=="], + + "typedoc-plugin-coverage": ["typedoc-plugin-coverage@4.0.2", "", { "peerDependencies": { "typedoc": "0.28.x" } }, "sha512-mfn0e7NCqB8x2PfvhXrtmd7KWlsNf1+B2N9y8gR/jexXBLrXl/0e+b2HdG5HaTXGi7i0t2pyQY2VRmq7gtdEHQ=="], "typedoc-plugin-markdown": ["typedoc-plugin-markdown@4.9.0", "", { "peerDependencies": { "typedoc": "0.28.x" } }, "sha512-9Uu4WR9L7ZBgAl60N/h+jqmPxxvnC9nQAlnnO/OujtG2ubjnKTVUFY1XDhcMY+pCqlX3N2HsQM2QTYZIU9tJuw=="], @@ -2735,7 +2736,7 @@ "unified": ["unified@11.0.5", "", { "dependencies": { "@types/unist": "^3.0.0", "bail": "^2.0.0", "devlop": "^1.0.0", "extend": "^3.0.0", "is-plain-obj": "^4.0.0", "trough": "^2.0.0", "vfile": "^6.0.0" } }, "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA=="], - "unist-util-is": ["unist-util-is@6.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw=="], + "unist-util-is": ["unist-util-is@6.0.1", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g=="], "unist-util-position": ["unist-util-position@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA=="], @@ -2745,7 +2746,7 @@ "unist-util-visit": ["unist-util-visit@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg=="], - "unist-util-visit-parents": ["unist-util-visit-parents@6.0.1", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw=="], + "unist-util-visit-parents": ["unist-util-visit-parents@6.0.2", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ=="], "universal-github-app-jwt": ["universal-github-app-jwt@2.2.2", "", {}, "sha512-dcmbeSrOdTnsjGjUfAlqNDJrhxXizjAz94ija9Qw8YkZ1uu0d+GoZzyH+Jb9tIIqvGsadUfwg+22k5aDqqwzbw=="], @@ -2765,7 +2766,9 @@ "urijs": ["urijs@1.19.11", "", {}, "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ=="], - "use-sync-external-store": ["use-sync-external-store@1.5.0", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A=="], + "use-async": ["use-async@1.2.0", "", { "peerDependencies": { "react": ">=16.8.0" } }, "sha512-gG7lA2PiqYpBIcdRN6p7NaSOsq/Rt6rNkf7e1y6e+7yvfVnc2YkDzVbkQbDQ2z+teEbhracinIB1DZIQRm8zHA=="], + + "use-sync-external-store": ["use-sync-external-store@1.6.0", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w=="], "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="], @@ -2779,11 +2782,11 @@ "vfile-message": ["vfile-message@4.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw=="], - "vite": ["vite@7.1.7", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-VbA8ScMvAISJNJVbRDTJdCwqQoAareR/wutevKanhR2/1EkoXVZVkkORaYm/tNVCjP/UDTKtcw3bAkwOUdedmA=="], + "vite": ["vite@7.1.11", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-uzcxnSDVjAopEUjljkWh8EIrg6tlzrjFUfMcR1EVsRDGwf/ccef0qQPRyOrROwhrTDaApueq+ja+KLPlzR/zdg=="], "vite-node": ["vite-node@3.2.4", "", { "dependencies": { "cac": "^6.7.14", "debug": "^4.4.1", "es-module-lexer": "^1.7.0", "pathe": "^2.0.3", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" }, "bin": { "vite-node": "vite-node.mjs" } }, "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg=="], - "vite-plugin-storybook-nextjs": ["vite-plugin-storybook-nextjs@2.0.7", "", { "dependencies": { "@next/env": "^15.0.3", "image-size": "^2.0.0", "magic-string": "^0.30.11", "module-alias": "^2.2.3", "ts-dedent": "^2.2.0", "vite-tsconfig-paths": "^5.1.4" }, "peerDependencies": { "next": "^14.1.0 || ^15.0.0", "storybook": "^0.0.0-0 || ^9.0.0 || ^9.1.0-0", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0" } }, "sha512-32xEq8+uLrFWQcdDB9rX9epsq0nht9nFyIY+NFjdOI68MwAAWgKWlRif6gRBsxFkT/B9shQt2jTYzWWM3U+nMg=="], + "vite-plugin-storybook-nextjs": ["vite-plugin-storybook-nextjs@2.0.8", "", { "dependencies": { "@next/env": "^15.0.3", "image-size": "^2.0.0", "magic-string": "^0.30.11", "module-alias": "^2.2.3", "ts-dedent": "^2.2.0", "vite-tsconfig-paths": "^5.1.4" }, "peerDependencies": { "next": "^14.1.0 || ^15.0.0", "storybook": "^0.0.0-0 || ^9.0.0 || ^9.1.0-0", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0" } }, "sha512-ZBTq79Y7+9w5JsjsMPWrEkYzpBXr5a5Uz22FH1X9fpPJ3wcUNB71lR8LziX5qnqpHNCi4RQapNf0DGMZjs6hiw=="], "vite-tsconfig-paths": ["vite-tsconfig-paths@5.1.4", "", { "dependencies": { "debug": "^4.1.1", "globrex": "^0.1.2", "tsconfck": "^3.0.3" }, "peerDependencies": { "vite": "*" }, "optionalPeers": ["vite"] }, "sha512-cYj0LRuLV2c2sMqhqhGpaO3LretdtMn/BVX4cPLanIZuwwrkVl+lK84E/miEXkCHWXuq65rhNN4rXsBcOB3S4w=="], @@ -2797,7 +2800,7 @@ "webidl-conversions": ["webidl-conversions@3.0.1", "", {}, "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="], - "webpack": ["webpack@5.101.3", "", { "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", "@types/json-schema": "^7.0.15", "@webassemblyjs/ast": "^1.14.1", "@webassemblyjs/wasm-edit": "^1.14.1", "@webassemblyjs/wasm-parser": "^1.14.1", "acorn": "^8.15.0", "acorn-import-phases": "^1.0.3", "browserslist": "^4.24.0", "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^5.17.3", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", "schema-utils": "^4.3.2", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.3.11", "watchpack": "^2.4.1", "webpack-sources": "^3.3.3" }, "bin": { "webpack": "bin/webpack.js" } }, "sha512-7b0dTKR3Ed//AD/6kkx/o7duS8H3f1a4w3BYpIriX4BzIhjkn4teo05cptsxvLesHFKK5KObnadmCHBwGc+51A=="], + "webpack": ["webpack@5.102.1", "", { "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", "@types/json-schema": "^7.0.15", "@webassemblyjs/ast": "^1.14.1", "@webassemblyjs/wasm-edit": "^1.14.1", "@webassemblyjs/wasm-parser": "^1.14.1", "acorn": "^8.15.0", "acorn-import-phases": "^1.0.3", "browserslist": "^4.26.3", "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^5.17.3", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", "schema-utils": "^4.3.3", "tapable": "^2.3.0", "terser-webpack-plugin": "^5.3.11", "watchpack": "^2.4.4", "webpack-sources": "^3.3.3" }, "bin": { "webpack": "bin/webpack.js" } }, "sha512-7h/weGm9d/ywQ6qzJ+Xy+r9n/3qgp/thalBbpOi5i223dPXKi04IBtqPN9nTd+jBc7QKfvDbaBnFipYp4sJAUQ=="], "webpack-sources": ["webpack-sources@3.3.3", "", {}, "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg=="], @@ -2879,26 +2882,12 @@ "@next/eslint-plugin-next/glob": ["glob@7.1.7", "", { "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.0.4", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ=="], - "@octokit/core/@octokit/types": ["@octokit/types@15.0.0", "", { "dependencies": { "@octokit/openapi-types": "^26.0.0" } }, "sha512-8o6yDfmoGJUIeR9OfYU0/TUJTnMPG2r68+1yEdUeG2Fdqpj8Qetg0ziKIgcBm0RW/j29H41WP37CYCEhp6GoHQ=="], - - "@octokit/plugin-rest-endpoint-methods/@octokit/types": ["@octokit/types@15.0.0", "", { "dependencies": { "@octokit/openapi-types": "^26.0.0" } }, "sha512-8o6yDfmoGJUIeR9OfYU0/TUJTnMPG2r68+1yEdUeG2Fdqpj8Qetg0ziKIgcBm0RW/j29H41WP37CYCEhp6GoHQ=="], - - "@orval/core/ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], - - "@orval/core/openapi3-ts": ["openapi3-ts@4.4.0", "", { "dependencies": { "yaml": "^2.5.0" } }, "sha512-9asTNB9IkKEzWMcHmVZE7Ts3kC9G7AFHfs8i7caD8HbI76gEjdkId4z/AkP83xdZsH7PLAnnbl47qZkXuxpArw=="], - - "@orval/mock/openapi3-ts": ["openapi3-ts@4.4.0", "", { "dependencies": { "yaml": "^2.5.0" } }, "sha512-9asTNB9IkKEzWMcHmVZE7Ts3kC9G7AFHfs8i7caD8HbI76gEjdkId4z/AkP83xdZsH7PLAnnbl47qZkXuxpArw=="], - - "@rollup/plugin-node-resolve/@types/resolve": ["@types/resolve@1.20.2", "", {}, "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q=="], - "@rollup/pluginutils/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], "@stoplight/better-ajv-errors/ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], "@stoplight/json-ref-readers/tslib": ["tslib@1.14.1", "", {}, "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="], - "@stoplight/spectral-core/@stoplight/types": ["@stoplight/types@13.6.0", "", { "dependencies": { "@types/json-schema": "^7.0.4", "utility-types": "^3.10.0" } }, "sha512-dzyuzvUjv3m1wmhPfq82lCVYGcXG0xUYgqnWfCq3PCVR4BKFhjdkHrnJ+jIDoMKvXb05AZP/ObQF6+NpDo29IQ=="], - "@stoplight/spectral-core/ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], "@stoplight/spectral-functions/ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], @@ -2921,6 +2910,8 @@ "@testing-library/dom/pretty-format": ["pretty-format@27.5.1", "", { "dependencies": { "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", "react-is": "^17.0.1" } }, "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ=="], + "@testing-library/jest-dom/aria-query": ["aria-query@5.3.2", "", {}, "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw=="], + "@testing-library/jest-dom/chalk": ["chalk@3.0.0", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg=="], "@testing-library/jest-dom/dom-accessibility-api": ["dom-accessibility-api@0.6.3", "", {}, "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w=="], @@ -2929,15 +2920,15 @@ "@types/react-instantsearch-native/@types/react-instantsearch-core": ["@types/react-instantsearch-core@6.26.10", "", { "dependencies": { "@types/react": "*", "algoliasearch": ">=4", "algoliasearch-helper": ">=3" } }, "sha512-izn21BqXtO3GA5Tx3x7SP6kfk1GJppkVdowuenKIOUj1sCJ3VHwoggsqVWv1DYVcsS8wydjR8Ra91XtI2a12rw=="], - "@typescript-eslint/eslint-plugin/semver": ["semver@7.7.2", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA=="], + "@typescript-eslint/eslint-plugin/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], - "@typescript-eslint/project-service/@typescript-eslint/types": ["@typescript-eslint/types@8.44.1", "", {}, "sha512-Lk7uj7y9uQUOEguiDIDLYLJOrYHQa7oBiURYVFqIpGxclAFQ78f6VUOM8lI2XEuNOKNB7XuvM2+2cMXAoq4ALQ=="], + "@typescript-eslint/project-service/@typescript-eslint/types": ["@typescript-eslint/types@8.46.2", "", {}, "sha512-lNCWCbq7rpg7qDsQrd3D6NyWYu+gkTENkG5IKYhUIcxSb59SQC/hEQ+MrG4sTgBVghTonNWq42bA/d4yYumldQ=="], "@typescript-eslint/typescript-estree/minimatch": ["minimatch@9.0.3", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg=="], - "@typescript-eslint/typescript-estree/semver": ["semver@7.7.2", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA=="], + "@typescript-eslint/typescript-estree/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], - "@typescript-eslint/utils/semver": ["semver@7.7.2", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA=="], + "@typescript-eslint/utils/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], "@vitest/browser/@testing-library/user-event": ["@testing-library/user-event@14.6.1", "", { "peerDependencies": { "@testing-library/dom": ">=7.21.4" } }, "sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw=="], @@ -3007,7 +2998,7 @@ "eslint-plugin-react/resolve": ["resolve@2.0.0-next.5", "", { "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA=="], - "eslint-plugin-storybook/@typescript-eslint/utils": ["@typescript-eslint/utils@8.44.1", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", "@typescript-eslint/scope-manager": "8.44.1", "@typescript-eslint/types": "8.44.1", "@typescript-eslint/typescript-estree": "8.44.1" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-DpX5Fp6edTlocMCwA+mHY8Mra+pPjRZ0TfHkXI8QFelIKcbADQz1LUPNtzOFUriBB2UYqw4Pi9+xV4w9ZczHFg=="], + "eslint-plugin-storybook/@typescript-eslint/utils": ["@typescript-eslint/utils@8.46.2", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", "@typescript-eslint/scope-manager": "8.46.2", "@typescript-eslint/types": "8.46.2", "@typescript-eslint/typescript-estree": "8.46.2" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-sExxzucx0Tud5tE0XqR0lT0psBQvEpnpiul9XbGUB1QwpWJJAps1O/Z7hJxLGiZLBKMCutjTzDgmd1muEhBnVg=="], "espree/eslint-visitor-keys": ["eslint-visitor-keys@4.2.1", "", {}, "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ=="], @@ -3039,7 +3030,7 @@ "load-json-file/pify": ["pify@3.0.0", "", {}, "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg=="], - "make-dir/semver": ["semver@7.7.2", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA=="], + "make-dir/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], "mdast-util-mdx-jsx/parse-entities": ["parse-entities@4.0.2", "", { "dependencies": { "@types/unist": "^2.0.0", "character-entities-legacy": "^3.0.0", "character-reference-invalid": "^2.0.0", "decode-named-character-reference": "^1.0.0", "is-alphanumerical": "^2.0.0", "is-decimal": "^2.0.0", "is-hexadecimal": "^2.0.0" } }, "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw=="], @@ -3067,9 +3058,7 @@ "oas-validator/yaml": ["yaml@1.10.2", "", {}, "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="], - "orval/ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], - - "path-scurry/lru-cache": ["lru-cache@11.2.1", "", {}, "sha512-r8LA6i4LP4EeWOhqBaZZjDWwehd1xUJPCJd9Sv300H0ZmcUER4+JPh7bqqZeqs1o5pgtgvXm+d9UGrB5zZGDiQ=="], + "path-scurry/lru-cache": ["lru-cache@11.2.2", "", {}, "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg=="], "path-type/pify": ["pify@3.0.0", "", {}, "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg=="], @@ -3111,7 +3100,7 @@ "schema-utils/ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], - "sharp/semver": ["semver@7.7.2", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA=="], + "sharp/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], "slice-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], @@ -3123,7 +3112,7 @@ "stacktrace-gps/source-map": ["source-map@0.5.6", "", {}, "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA=="], - "storybook/@testing-library/jest-dom": ["@testing-library/jest-dom@6.8.0", "", { "dependencies": { "@adobe/css-tools": "^4.4.0", "aria-query": "^5.0.0", "css.escape": "^1.5.1", "dom-accessibility-api": "^0.6.3", "picocolors": "^1.1.1", "redent": "^3.0.0" } }, "sha512-WgXcWzVM6idy5JaftTVC8Vs83NKRmGJz4Hqs4oyOuO2J4r/y79vvKZsb+CaGyCSEbUPI6OsewfPd0G1A0/TUZQ=="], + "storybook/@testing-library/jest-dom": ["@testing-library/jest-dom@6.9.1", "", { "dependencies": { "@adobe/css-tools": "^4.4.0", "aria-query": "^5.0.0", "css.escape": "^1.5.1", "dom-accessibility-api": "^0.6.3", "picocolors": "^1.1.1", "redent": "^3.0.0" } }, "sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA=="], "storybook/@testing-library/user-event": ["@testing-library/user-event@14.6.1", "", { "peerDependencies": { "@testing-library/dom": ">=7.21.4" } }, "sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw=="], @@ -3131,7 +3120,7 @@ "storybook/@vitest/spy": ["@vitest/spy@3.2.4", "", { "dependencies": { "tinyspy": "^4.0.3" } }, "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw=="], - "storybook/semver": ["semver@7.7.2", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA=="], + "storybook/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], "string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], @@ -3205,12 +3194,6 @@ "@joshwooding/vite-plugin-react-docgen-typescript/glob/path-scurry": ["path-scurry@1.11.1", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA=="], - "@octokit/core/@octokit/types/@octokit/openapi-types": ["@octokit/openapi-types@26.0.0", "", {}, "sha512-7AtcfKtpo77j7Ts73b4OWhOZHTKo/gGY8bB3bNBQz4H+GRSWqx2yvj8TXRsbdTE0eRmYmXOEY66jM7mJ7LzfsA=="], - - "@octokit/plugin-rest-endpoint-methods/@octokit/types/@octokit/openapi-types": ["@octokit/openapi-types@26.0.0", "", {}, "sha512-7AtcfKtpo77j7Ts73b4OWhOZHTKo/gGY8bB3bNBQz4H+GRSWqx2yvj8TXRsbdTE0eRmYmXOEY66jM7mJ7LzfsA=="], - - "@orval/core/ajv/json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], - "@stoplight/better-ajv-errors/ajv/json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], "@stoplight/spectral-core/ajv/json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], @@ -3259,11 +3242,11 @@ "eslint-plugin-import/tsconfig-paths/json5": ["json5@1.0.2", "", { "dependencies": { "minimist": "^1.2.0" }, "bin": { "json5": "lib/cli.js" } }, "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA=="], - "eslint-plugin-storybook/@typescript-eslint/utils/@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.44.1", "", { "dependencies": { "@typescript-eslint/types": "8.44.1", "@typescript-eslint/visitor-keys": "8.44.1" } }, "sha512-NdhWHgmynpSvyhchGLXh+w12OMT308Gm25JoRIyTZqEbApiBiQHD/8xgb6LqCWCFcxFtWwaVdFsLPQI3jvhywg=="], + "eslint-plugin-storybook/@typescript-eslint/utils/@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.46.2", "", { "dependencies": { "@typescript-eslint/types": "8.46.2", "@typescript-eslint/visitor-keys": "8.46.2" } }, "sha512-LF4b/NmGvdWEHD2H4MsHD8ny6JpiVNDzrSZr3CsckEgCbAGZbYM4Cqxvi9L+WqDMT+51Ozy7lt2M+d0JLEuBqA=="], - "eslint-plugin-storybook/@typescript-eslint/utils/@typescript-eslint/types": ["@typescript-eslint/types@8.44.1", "", {}, "sha512-Lk7uj7y9uQUOEguiDIDLYLJOrYHQa7oBiURYVFqIpGxclAFQ78f6VUOM8lI2XEuNOKNB7XuvM2+2cMXAoq4ALQ=="], + "eslint-plugin-storybook/@typescript-eslint/utils/@typescript-eslint/types": ["@typescript-eslint/types@8.46.2", "", {}, "sha512-lNCWCbq7rpg7qDsQrd3D6NyWYu+gkTENkG5IKYhUIcxSb59SQC/hEQ+MrG4sTgBVghTonNWq42bA/d4yYumldQ=="], - "eslint-plugin-storybook/@typescript-eslint/utils/@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.44.1", "", { "dependencies": { "@typescript-eslint/project-service": "8.44.1", "@typescript-eslint/tsconfig-utils": "8.44.1", "@typescript-eslint/types": "8.44.1", "@typescript-eslint/visitor-keys": "8.44.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-qnQJ+mVa7szevdEyvfItbO5Vo+GfZ4/GZWWDRRLjrxYPkhM+6zYB2vRYwCsoJLzqFCdZT4mEqyJoyzkunsZ96A=="], + "eslint-plugin-storybook/@typescript-eslint/utils/@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.46.2", "", { "dependencies": { "@typescript-eslint/project-service": "8.46.2", "@typescript-eslint/tsconfig-utils": "8.46.2", "@typescript-eslint/types": "8.46.2", "@typescript-eslint/visitor-keys": "8.46.2", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-f7rW7LJ2b7Uh2EiQ+7sza6RDZnajbNbemn54Ob6fRwQbgcIn+GWfyuHDHRYgRoZu1P4AayVScrRW+YfbTvPQoQ=="], "eslint/globals/type-fest": ["type-fest@0.20.2", "", {}, "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ=="], @@ -3325,7 +3308,7 @@ "next/sharp/@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.33.5", "", { "os": "win32", "cpu": "x64" }, "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg=="], - "next/sharp/semver": ["semver@7.7.2", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA=="], + "next/sharp/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], "npm-run-all/ansi-styles/color-convert": ["color-convert@1.9.3", "", { "dependencies": { "color-name": "1.1.3" } }, "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg=="], @@ -3341,8 +3324,6 @@ "npm-run-all/cross-spawn/which": ["which@1.3.1", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "which": "./bin/which" } }, "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ=="], - "orval/ajv/json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], - "pkg-dir/find-up/locate-path": ["locate-path@3.0.0", "", { "dependencies": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" } }, "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A=="], "react-docgen/@babel/core/convert-source-map": ["convert-source-map@2.0.0", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="], @@ -3383,7 +3364,7 @@ "wrap-ansi-cjs/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], - "wrap-ansi/string-width/emoji-regex": ["emoji-regex@10.5.0", "", {}, "sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg=="], + "wrap-ansi/string-width/emoji-regex": ["emoji-regex@10.6.0", "", {}, "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A=="], "@inquirer/core/wrap-ansi/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], @@ -3397,15 +3378,15 @@ "eslint-config-next/@typescript-eslint/parser/@typescript-eslint/typescript-estree/@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@5.62.0", "", { "dependencies": { "@typescript-eslint/types": "5.62.0", "eslint-visitor-keys": "^3.3.0" } }, "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw=="], - "eslint-config-next/@typescript-eslint/parser/@typescript-eslint/typescript-estree/semver": ["semver@7.7.2", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA=="], + "eslint-config-next/@typescript-eslint/parser/@typescript-eslint/typescript-estree/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], - "eslint-plugin-storybook/@typescript-eslint/utils/@typescript-eslint/scope-manager/@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.44.1", "", { "dependencies": { "@typescript-eslint/types": "8.44.1", "eslint-visitor-keys": "^4.2.1" } }, "sha512-576+u0QD+Jp3tZzvfRfxon0EA2lzcDt3lhUbsC6Lgzy9x2VR4E+JUiNyGHi5T8vk0TV+fpJ5GLG1JsJuWCaKhw=="], + "eslint-plugin-storybook/@typescript-eslint/utils/@typescript-eslint/scope-manager/@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.46.2", "", { "dependencies": { "@typescript-eslint/types": "8.46.2", "eslint-visitor-keys": "^4.2.1" } }, "sha512-tUFMXI4gxzzMXt4xpGJEsBsTox0XbNQ1y94EwlD/CuZwFcQP79xfQqMhau9HsRc/J0cAPA/HZt1dZPtGn9V/7w=="], - "eslint-plugin-storybook/@typescript-eslint/utils/@typescript-eslint/typescript-estree/@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.44.1", "", { "dependencies": { "@typescript-eslint/types": "8.44.1", "eslint-visitor-keys": "^4.2.1" } }, "sha512-576+u0QD+Jp3tZzvfRfxon0EA2lzcDt3lhUbsC6Lgzy9x2VR4E+JUiNyGHi5T8vk0TV+fpJ5GLG1JsJuWCaKhw=="], + "eslint-plugin-storybook/@typescript-eslint/utils/@typescript-eslint/typescript-estree/@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.46.2", "", { "dependencies": { "@typescript-eslint/types": "8.46.2", "eslint-visitor-keys": "^4.2.1" } }, "sha512-tUFMXI4gxzzMXt4xpGJEsBsTox0XbNQ1y94EwlD/CuZwFcQP79xfQqMhau9HsRc/J0cAPA/HZt1dZPtGn9V/7w=="], "eslint-plugin-storybook/@typescript-eslint/utils/@typescript-eslint/typescript-estree/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], - "eslint-plugin-storybook/@typescript-eslint/utils/@typescript-eslint/typescript-estree/semver": ["semver@7.7.2", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA=="], + "eslint-plugin-storybook/@typescript-eslint/utils/@typescript-eslint/typescript-estree/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], "eslint-plugin-storybook/@typescript-eslint/utils/@typescript-eslint/typescript-estree/ts-api-utils": ["ts-api-utils@2.1.0", "", { "peerDependencies": { "typescript": ">=4.8.4" } }, "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ=="], diff --git a/components/AccessTokens/CopyAccessKeyModal.tsx b/components/AccessTokens/CopyAccessKeyModal.tsx index 0ee64676..cac37d2f 100644 --- a/components/AccessTokens/CopyAccessKeyModal.tsx +++ b/components/AccessTokens/CopyAccessKeyModal.tsx @@ -4,117 +4,109 @@ import { customThemeTModal } from 'utils/comfyTheme' import { useNextTranslation } from '@/src/hooks/i18n' type CopyAccessTokenModalProps = { - openModal: boolean - onCloseModal: () => void - accessToken: string + openModal: boolean + onCloseModal: () => void + accessToken: string } export const CopyAccessTokenModal: React.FC = ({ - openModal, - onCloseModal, - accessToken, + openModal, + onCloseModal, + accessToken, }) => { - const { t } = useNextTranslation() - const handleSubmit = (event) => { - event.preventDefault() - } - // Copy a string to the clipboard - const copyToClipboard = (accessToken: string) => { - navigator.clipboard.writeText(accessToken).then(() => { - const successMessage = document.getElementById('success-message') - const defaultMessage = document.getElementById('default-message') - if (successMessage && defaultMessage) { - successMessage.classList.remove('hidden') - defaultMessage.classList.add('hidden') - } - }) - } + const { t } = useNextTranslation() + const handleSubmit = (event) => { + event.preventDefault() + } + // Copy a string to the clipboard + const copyToClipboard = (accessToken: string) => { + navigator.clipboard.writeText(accessToken).then(() => { + const successMessage = document.getElementById('success-message') + const defaultMessage = document.getElementById('default-message') + if (successMessage && defaultMessage) { + successMessage.classList.remove('hidden') + defaultMessage.classList.add('hidden') + } + }) + } - return ( - - -
-
-

- {t('Save your key')} -

-

- {t( - "Please save this secret key somewhere safe and accessible. If you lose this secret key, you'll need to generate a new one. It can only be copied once." - )} -

+ return ( + + + +
+

+ {t('Save your key')} +

+

+ {t( + "Please save this secret key somewhere safe and accessible. If you lose this secret key, you'll need to generate a new one. It can only be copied once." + )} +

-
- - - -
-
-
- -
- -
-
- ) +
+ + + +
+
+
+ +
+ +
+
+ ) } diff --git a/components/AccessTokens/CreateSecretKeyModal.tsx b/components/AccessTokens/CreateSecretKeyModal.tsx index 1f7bd6a5..8a434281 100644 --- a/components/AccessTokens/CreateSecretKeyModal.tsx +++ b/components/AccessTokens/CreateSecretKeyModal.tsx @@ -7,144 +7,135 @@ import { useNextTranslation } from '@/src/hooks/i18n' import { CopyAccessTokenModal } from './CopyAccessKeyModal' type CreateSecretKeyModalProps = { - openModal: boolean - onCloseModal: () => void - onCreationSuccess: () => void - publisherId: string + openModal: boolean + onCloseModal: () => void + onCreationSuccess: () => void + publisherId: string } export const CreateSecretKeyModal: React.FC = ({ - openModal, - onCloseModal, - onCreationSuccess, - publisherId, + openModal, + onCloseModal, + onCreationSuccess, + publisherId, }) => { - const { t } = useNextTranslation() - const [showSecondModal, setShowSecondModal] = useState(false) - const [name, setName] = useState('') - const [description, setDescription] = useState('') - const createAccessTokenMutation = useCreatePersonalAccessToken() - const openSecondModal = () => setShowSecondModal(true) - const closeSecondModal = () => setShowSecondModal(false) - const handleFormSubmit = (e) => { - e.preventDefault() + const { t } = useNextTranslation() + const [showSecondModal, setShowSecondModal] = useState(false) + const [name, setName] = useState('') + const [description, setDescription] = useState('') + const createAccessTokenMutation = useCreatePersonalAccessToken() + const openSecondModal = () => setShowSecondModal(true) + const closeSecondModal = () => setShowSecondModal(false) + const handleFormSubmit = (e) => { + e.preventDefault() - createAccessTokenMutation.mutate( - { - publisherId, - data: { - name, - description, - }, - }, - { - onError: (error) => { - toast.error(t('Failed to create secret key')) - }, - onSuccess: () => { - toast.success(t('Secret key created')) - onCloseModal() - openSecondModal() - setName('') - setDescription('') - onCreationSuccess() - }, - } - ) - } - - return ( - <> - - {/* */} - -
-

- {t('Create a new secret key')} -

-
-
- - setName(e.target.value)} - /> -
-
- - - setDescription(e.target.value) - } - /> -
+ createAccessTokenMutation.mutate( + { + publisherId, + data: { + name, + description, + }, + }, + { + onError: (error) => { + toast.error(t('Failed to create secret key')) + }, + onSuccess: () => { + toast.success(t('Secret key created')) + onCloseModal() + openSecondModal() + setName('') + setDescription('') + onCreationSuccess() + }, + } + ) + } -
- - -
-
-
-
-
- {showSecondModal && ( - + + {/* */} + +
+

+ {t('Create a new secret key')} +

+
+
+ + setName(e.target.value)} /> - )} - - ) +
+
+ + setDescription(e.target.value)} + /> +
+ +
+ + +
+
+
+
+
+ {showSecondModal && ( + + )} + + ) } diff --git a/components/AccessTokens/PersonalAccessTokenTable.tsx b/components/AccessTokens/PersonalAccessTokenTable.tsx index 72e12f45..b4af2f63 100644 --- a/components/AccessTokens/PersonalAccessTokenTable.tsx +++ b/components/AccessTokens/PersonalAccessTokenTable.tsx @@ -4,114 +4,106 @@ import { PersonalAccessToken } from '@/src/api/generated' import { useNextTranslation } from '@/src/hooks/i18n' type PersonAccessTokenTableProps = { - accessTokens: PersonalAccessToken[] - handleCreateButtonClick: () => void - deleteToken: (id: string) => void - isLoading: boolean + accessTokens: PersonalAccessToken[] + handleCreateButtonClick: () => void + deleteToken: (id: string) => void + isLoading: boolean } const PersonalAccessTokenTable: React.FC = ({ - handleCreateButtonClick, - accessTokens, - isLoading, - deleteToken, + handleCreateButtonClick, + accessTokens, + isLoading, + deleteToken, }) => { - const { t } = useNextTranslation() + const { t } = useNextTranslation() - return ( -
-

- - {t('API Keys')} -

- {isLoading && } + return ( +
+

+ + {t('API Keys')} +

+ {isLoading && } - {!isLoading && accessTokens.length > 0 && ( -
-
- - - - - - - - - - {accessTokens.map((token, i) => { - return ( - - - - - - ) - })} - -
- {t('Name')} - - {t('Secret Key')} -
- {token.name} - - {token.token} - - -
-
-
- )} - + {!isLoading && accessTokens.length > 0 && ( +
+
+ + + + + + + + + + {accessTokens.map((token, i) => { + return ( + + + + + + ) + })} + +
+ {t('Name')} + + {t('Secret Key')} +
{token.name}{token.token} + +
+
- ) + )} + +
+ ) } export default PersonalAccessTokenTable diff --git a/components/AuthUI/AuthUI.tsx b/components/AuthUI/AuthUI.tsx index 2c707da5..e853aa43 100644 --- a/components/AuthUI/AuthUI.tsx +++ b/components/AuthUI/AuthUI.tsx @@ -5,8 +5,8 @@ import Link from 'next/link' import { useRouter } from 'next/router' import React from 'react' import { - useSignInWithGithub, - useSignInWithGoogle, + useSignInWithGithub, + useSignInWithGoogle, } from 'react-firebase-hooks/auth' import { toast } from 'react-toastify' import analytic from 'src/analytic/analytic' @@ -18,171 +18,165 @@ import { useFromUrl } from '../common/HOC/useFromUrl' import LanguageSwitcher from '../common/LanguageSwitcher' const AuthUI: React.FC<{}> = ({}) => { - const { t } = useNextTranslation() - const router = useRouter() - const auth = getAuth(app) - const [ - signInWithGoogle, - _googleUser, - _loadingGoogleSignin, - googleSignInError, - ] = useSignInWithGoogle(auth) - const [ - signInWithGithub, - _githubUser, - _loadingGithubSignIn, - githubSignInError, - ] = useSignInWithGithub(auth) + const { t } = useNextTranslation() + const router = useRouter() + const auth = getAuth(app) + const [ + signInWithGoogle, + _googleUser, + _loadingGoogleSignin, + googleSignInError, + ] = useSignInWithGoogle(auth) + const [ + signInWithGithub, + _githubUser, + _loadingGithubSignIn, + githubSignInError, + ] = useSignInWithGithub(auth) - // redirect back when user is logged in - const [firebaseUser, _loadingFirebaseUser] = useFirebaseUser() - const loggedIn = Boolean(firebaseUser) - const fromUrl = useFromUrl() - React.useEffect(() => { - if (loggedIn) router.push(fromUrl ?? '/nodes') - }, [loggedIn, router, fromUrl]) + // redirect back when user is logged in + const [firebaseUser, _loadingFirebaseUser] = useFirebaseUser() + const loggedIn = Boolean(firebaseUser) + const fromUrl = useFromUrl() + React.useEffect(() => { + if (loggedIn) router.push(fromUrl ?? '/nodes') + }, [loggedIn, router, fromUrl]) - // handle errors - React.useEffect(() => { - if (googleSignInError) { - if ( - googleSignInError.code === - 'auth/account-exists-with-different-credential' - ) { - toast.error( - t('Account already exists with different credential') - ) - } else { - toast.error(googleSignInError?.message) - console.log(googleSignInError) - } - } - if (githubSignInError) { - if ( - githubSignInError.code === - 'auth/account-exists-with-different-credential' - ) { - toast.error( - t('Account already exists with different credential') - ) - } else { - toast.error(githubSignInError?.message) - console.log(githubSignInError) - } - } - }, [t, googleSignInError, githubSignInError]) + // handle errors + React.useEffect(() => { + if (googleSignInError) { + if ( + googleSignInError.code === + 'auth/account-exists-with-different-credential' + ) { + toast.error(t('Account already exists with different credential')) + } else { + toast.error(googleSignInError?.message) + console.log(googleSignInError) + } + } + if (githubSignInError) { + if ( + githubSignInError.code === + 'auth/account-exists-with-different-credential' + ) { + toast.error(t('Account already exists with different credential')) + } else { + toast.error(githubSignInError?.message) + console.log(githubSignInError) + } + } + }, [t, googleSignInError, githubSignInError]) - return ( -
-
- -
+ return ( +
+
+ +
-
-
- - - Comfy Logo - +
+
+ + + Comfy Logo + -

- {t('Sign In')} -

+

+ {t('Sign In')} +

-
- -
- -
-
+
+
-
- ) + + +
+ + + ) } export default AuthUI diff --git a/components/AuthUI/Logout.tsx b/components/AuthUI/Logout.tsx index fab8d637..7926852c 100644 --- a/components/AuthUI/Logout.tsx +++ b/components/AuthUI/Logout.tsx @@ -8,41 +8,41 @@ import { useNextTranslation } from '@/src/hooks/i18n' import app from '../../src/firebase' export function useLogout() { - const auth = getAuth(app) - const { t } = useNextTranslation() - const qc = useQueryClient() - const [signOut, loading, error] = useSignOut(auth) - const logout = async () => { - await signOut() - qc.resetQueries() // Reset all queries, which will refetch data on next access - qc.clear() // Clear the query cache to remove user data - window.localStorage.clear() // Clear local storage - window.sessionStorage.clear() // Clear session storage - } - useEffect(() => { - if (error) - toast.error( - t('Logout error: {{error}}', { - error: String(error?.message || error), - }) - ) - }, [error, t]) - return [logout, loading, error] as const + const auth = getAuth(app) + const { t } = useNextTranslation() + const qc = useQueryClient() + const [signOut, loading, error] = useSignOut(auth) + const logout = async () => { + await signOut() + qc.resetQueries() // Reset all queries, which will refetch data on next access + qc.clear() // Clear the query cache to remove user data + window.localStorage.clear() // Clear local storage + window.sessionStorage.clear() // Clear session storage + } + useEffect(() => { + if (error) + toast.error( + t('Logout error: {{error}}', { + error: String(error?.message || error), + }) + ) + }, [error, t]) + return [logout, loading, error] as const } const Logout = () => { - const { t } = useNextTranslation() - const [onLogout, loading, error] = useLogout() - return ( -
-
-
- - {loading &&

{t('Logging out...')}

} -
-
+ const { t } = useNextTranslation() + const [onLogout, loading, error] = useLogout() + return ( +
+
+
+ + {loading &&

{t('Logging out...')}

}
- ) +
+
+ ) } export default Logout diff --git a/components/CodeBlock/CodeBlock.stories.tsx b/components/CodeBlock/CodeBlock.stories.tsx index 48e58390..a62dd5c8 100644 --- a/components/CodeBlock/CodeBlock.stories.tsx +++ b/components/CodeBlock/CodeBlock.stories.tsx @@ -2,34 +2,34 @@ import { Meta, StoryObj } from '@storybook/nextjs-vite' import CopyableCodeBlock from '@/components/CodeBlock/CodeBlock' const meta: Meta = { - title: 'Components/CodeBlock', - component: CopyableCodeBlock, - parameters: { - layout: 'centered', - backgrounds: { default: 'dark' }, - }, - tags: ['autodocs'], + title: 'Components/CodeBlock', + component: CopyableCodeBlock, + parameters: { + layout: 'centered', + backgrounds: { default: 'dark' }, + }, + tags: ['autodocs'], } export default meta type Story = StoryObj export const Default: Story = { - args: { - code: 'comfy install my-node-id', - }, + args: { + code: 'comfy install my-node-id', + }, } export const LongCommand: Story = { - args: { - code: 'comfy install my-node-id --token=12345abcde --registry=https://comfyregistry.org', - }, + args: { + code: 'comfy install my-node-id --token=12345abcde --registry=https://comfyregistry.org', + }, } export const MultiLine: Story = { - args: { - code: `npm install -g comfy-cli + args: { + code: `npm install -g comfy-cli comfy login comfy install my-node-id`, - }, + }, } diff --git a/components/CodeBlock/CodeBlock.tsx b/components/CodeBlock/CodeBlock.tsx index e05fa79b..f6004946 100644 --- a/components/CodeBlock/CodeBlock.tsx +++ b/components/CodeBlock/CodeBlock.tsx @@ -3,46 +3,44 @@ import { IoIosInformationCircle } from 'react-icons/io' import { useNextTranslation } from '@/src/hooks/i18n' const CopyableCodeBlock = ({ code }) => { - const { t } = useNextTranslation() - const [isCopied, setIsCopied] = useState(false) + const { t } = useNextTranslation() + const [isCopied, setIsCopied] = useState(false) - const handleCopy = async () => { - try { - await navigator.clipboard.writeText(code) - setIsCopied(true) - setTimeout(() => setIsCopied(false), 2000) // Reset copied state after 2 seconds - } catch (err) { - console.error('Failed to copy!', err) - } + const handleCopy = async () => { + try { + await navigator.clipboard.writeText(code) + setIsCopied(true) + setTimeout(() => setIsCopied(false), 2000) // Reset copied state after 2 seconds + } catch (err) { + console.error('Failed to copy!', err) } + } - return ( -
-
- - - -
{code}
- -
-
- ) + return ( +
+
+ + + +
{code}
+ +
+
+ ) } export default CopyableCodeBlock diff --git a/components/DeveloperRegistry/DeveloperRegister.tsx b/components/DeveloperRegistry/DeveloperRegister.tsx index 527638a6..0ca39c9f 100644 --- a/components/DeveloperRegistry/DeveloperRegister.tsx +++ b/components/DeveloperRegistry/DeveloperRegister.tsx @@ -3,39 +3,39 @@ import DrCard from './DrCard' import DrHeader from './DrHeader' const cardData = [ - { - title: 'NodesOrg 1', - createdDate: '5/20/24', - members: ['Robin Huang', 'Yoland Yan'], - }, - { - title: 'NodesOrg 2', - createdDate: '5/21/24', - members: ['John Doe', 'Jane Smith'], - }, - { - title: 'NodesOrg 3', - createdDate: '5/22/24', - members: ['Alice Johnson', 'Bob Anderson'], - }, - { - title: 'NodesOrg 4', - createdDate: '5/23/24', - members: ['Ella Parker', 'Tom Wilson'], - }, + { + title: 'NodesOrg 1', + createdDate: '5/20/24', + members: ['Robin Huang', 'Yoland Yan'], + }, + { + title: 'NodesOrg 2', + createdDate: '5/21/24', + members: ['John Doe', 'Jane Smith'], + }, + { + title: 'NodesOrg 3', + createdDate: '5/22/24', + members: ['Alice Johnson', 'Bob Anderson'], + }, + { + title: 'NodesOrg 4', + createdDate: '5/23/24', + members: ['Ella Parker', 'Tom Wilson'], + }, ] const DeveloperRegister = () => { - return ( -
- -
- {cardData.map((member, index) => ( - - ))} -
-
- ) + return ( +
+ +
+ {cardData.map((member, index) => ( + + ))} +
+
+ ) } export default DeveloperRegister diff --git a/components/DeveloperRegistry/DrCard.tsx b/components/DeveloperRegistry/DrCard.tsx index e58e2a1d..197615e9 100644 --- a/components/DeveloperRegistry/DrCard.tsx +++ b/components/DeveloperRegistry/DrCard.tsx @@ -2,24 +2,22 @@ import { Button, Card } from 'flowbite-react' import { useNextTranslation } from '@/src/hooks/i18n' const DrCard = () => { - const { t } = useNextTranslation() - return ( - -

- NodesOrg -

-

{t('Created')} 5/20/24

-

{t('MEMBERS')}

-

Robin Huang

-

Yoland Yan

-
- {' '} - -
-
- ) + const { t } = useNextTranslation() + return ( + +

NodesOrg

+

{t('Created')} 5/20/24

+

{t('MEMBERS')}

+

Robin Huang

+

Yoland Yan

+
+ {' '} + +
+
+ ) } export default DrCard diff --git a/components/DeveloperRegistry/DrHeader.tsx b/components/DeveloperRegistry/DrHeader.tsx index df6b3ba9..a43dd3d5 100644 --- a/components/DeveloperRegistry/DrHeader.tsx +++ b/components/DeveloperRegistry/DrHeader.tsx @@ -2,38 +2,35 @@ import { Button } from 'flowbite-react' import { useNextTranslation } from '@/src/hooks/i18n' const DrHeader = () => { - const { t } = useNextTranslation() - return ( -
-

- {t('Publishers')} -

+ const { t } = useNextTranslation() + return ( +
+

+ {t('Publishers')} +

- -
- ) + +
+ ) } export default DrHeader diff --git a/components/Header/GenericHeader.stories.tsx b/components/Header/GenericHeader.stories.tsx index 172d1f77..7a65c749 100644 --- a/components/Header/GenericHeader.stories.tsx +++ b/components/Header/GenericHeader.stories.tsx @@ -2,42 +2,42 @@ import { Meta, StoryObj } from '@storybook/nextjs-vite' import GenericHeader from '@/components/common/GenericHeader' const meta: Meta = { - title: 'Components/Common/GenericHeader', - component: GenericHeader, - parameters: { - layout: 'centered', - }, - tags: ['autodocs'], + title: 'Components/Common/GenericHeader', + component: GenericHeader, + parameters: { + layout: 'centered', + }, + tags: ['autodocs'], } export default meta type Story = StoryObj export const Default: Story = { - args: { - title: 'Welcome to ComfyUI Registry', - subTitle: 'View nodes or sign in to create and publish your own', - buttonText: 'Get Started', - buttonLink: '/nodes', - }, + args: { + title: 'Welcome to ComfyUI Registry', + subTitle: 'View nodes or sign in to create and publish your own', + buttonText: 'Get Started', + buttonLink: '/nodes', + }, } export const WithIcon: Story = { - args: { - title: 'Create a Node', - subTitle: 'Add your custom node to the registry', - buttonText: 'Create Node', - buttonLink: '/nodes/create', - showIcon: true, - }, + args: { + title: 'Create a Node', + subTitle: 'Add your custom node to the registry', + buttonText: 'Create Node', + buttonLink: '/nodes/create', + showIcon: true, + }, } export const CustomColor: Story = { - args: { - title: 'Debug Console', - subTitle: 'Advanced tools for developers', - buttonText: 'Access Console', - buttonLink: '/debug', - buttonColor: 'red', - }, + args: { + title: 'Debug Console', + subTitle: 'Advanced tools for developers', + buttonText: 'Access Console', + buttonLink: '/debug', + buttonColor: 'red', + }, } diff --git a/components/Header/Header.stories.tsx b/components/Header/Header.stories.tsx index 8fd1b372..c477fcd6 100644 --- a/components/Header/Header.stories.tsx +++ b/components/Header/Header.stories.tsx @@ -2,33 +2,33 @@ import { Meta, StoryObj } from '@storybook/nextjs-vite' import Header from '@/components/Header/Header' const meta: Meta = { - title: 'Components/Header/Header', - component: Header, - parameters: { - layout: 'fullscreen', - backgrounds: { default: 'dark' }, - }, - tags: ['autodocs'], + title: 'Components/Header/Header', + component: Header, + parameters: { + layout: 'fullscreen', + backgrounds: { default: 'dark' }, + }, + tags: ['autodocs'], } export default meta type Story = StoryObj export const LoggedOut: Story = { - args: { - isLoggedIn: false, - }, + args: { + isLoggedIn: false, + }, } export const LoggedIn: Story = { - args: { - isLoggedIn: true, - }, + args: { + isLoggedIn: true, + }, } export const WithTitle: Story = { - args: { - isLoggedIn: false, - title: 'Custom Title', - }, + args: { + isLoggedIn: false, + title: 'Custom Title', + }, } diff --git a/components/Header/Header.tsx b/components/Header/Header.tsx index 3abe97c5..0da552a1 100644 --- a/components/Header/Header.tsx +++ b/components/Header/Header.tsx @@ -11,90 +11,83 @@ import LanguageSwitcher from '../common/LanguageSwitcher' import ProfileDropdown from './ProfileDropdown' interface HeaderProps { - isLoggedIn?: boolean - title?: string + isLoggedIn?: boolean + title?: string } const GithubIcon: React.FC> = (props) => ( - + ) const DiscordIcon: React.FC> = (props) => ( - + ) const Header: React.FC = ({ isLoggedIn, title }) => { - const router = useRouter() - const { t } = useNextTranslation() - const fromUrlParam = useFromUrlParam() - const handleLogIn = () => router.push(`/auth/login?${fromUrlParam}`) - const handleSignUp = () => router.push(`/auth/signup?${fromUrlParam}`) - return ( - - - Comfy Logo - - {t('Comfy Registry')} - - -
- {isLoggedIn ? ( - - ) : ( - <> - + const router = useRouter() + const { t } = useNextTranslation() + const fromUrlParam = useFromUrlParam() + const handleLogIn = () => router.push(`/auth/login?${fromUrlParam}`) + const handleSignUp = () => router.push(`/auth/signup?${fromUrlParam}`) + return ( + + + Comfy Logo + + {t('Comfy Registry')} + + +
+ {isLoggedIn ? ( + + ) : ( + <> + - - - )} - + + + )} + - + - {/* place in the most-right to reduce ... when switching language */} - -
-
- ) + {/* place in the most-right to reduce ... when switching language */} + +
+
+ ) } export default Header diff --git a/components/Header/ProfileDropdown.stories.tsx b/components/Header/ProfileDropdown.stories.tsx index 03491d95..2518edab 100644 --- a/components/Header/ProfileDropdown.stories.tsx +++ b/components/Header/ProfileDropdown.stories.tsx @@ -3,22 +3,22 @@ import { HttpResponse, http } from 'msw' import ProfileDropdown from '@/components/Header/ProfileDropdown' import { User } from '@/src/api/generated' import { - mockFirebaseUser, - useFirebaseUser, + mockFirebaseUser, + useFirebaseUser, } from '@/src/hooks/useFirebaseUser.mock' import { CAPI } from '@/src/mocks/apibase' import { handlers } from '@/src/mocks/handlers' const meta = { - title: 'Components/Header/ProfileDropdown', - component: ProfileDropdown, - parameters: { - layout: 'centered', - backgrounds: { default: 'dark' }, - msw: { - handlers: handlers, - }, + title: 'Components/Header/ProfileDropdown', + component: ProfileDropdown, + parameters: { + layout: 'centered', + backgrounds: { default: 'dark' }, + msw: { + handlers: handlers, }, + }, } satisfies Meta export default meta @@ -27,92 +27,92 @@ type Story = StoryObj // Mock user data variations const regularUser: User = { - id: 'user-123', - name: 'John Doe', - email: 'john.doe@example.com', - isAdmin: false, - isApproved: true, + id: 'user-123', + name: 'John Doe', + email: 'john.doe@example.com', + isAdmin: false, + isApproved: true, } const adminUser: User = { - id: 'admin-456', - name: 'Admin User', - email: 'admin@example.com', - isAdmin: true, - isApproved: true, + id: 'admin-456', + name: 'Admin User', + email: 'admin@example.com', + isAdmin: true, + isApproved: true, } export const RegularUser: Story = { - parameters: { - msw: { - handlers: [ - http.get(CAPI('/users'), () => HttpResponse.json(regularUser)), - ...handlers, - ], - }, - }, - async beforeEach() { - // Mock Firebase user as logged in - useFirebaseUser.mockReturnValue([mockFirebaseUser, false, undefined]) + parameters: { + msw: { + handlers: [ + http.get(CAPI('/users'), () => HttpResponse.json(regularUser)), + ...handlers, + ], }, + }, + async beforeEach() { + // Mock Firebase user as logged in + useFirebaseUser.mockReturnValue([mockFirebaseUser, false, undefined]) + }, } export const AdminUser: Story = { - parameters: { - msw: { - handlers: [ - http.get(CAPI('/users'), () => HttpResponse.json(adminUser)), - ...handlers, - ], - }, - }, - async beforeEach() { - // Mock Firebase user as admin - useFirebaseUser.mockReturnValue([ - { - ...mockFirebaseUser, - email: 'admin@example.com', - displayName: 'Admin User', - }, - false, - undefined, - ]) + parameters: { + msw: { + handlers: [ + http.get(CAPI('/users'), () => HttpResponse.json(adminUser)), + ...handlers, + ], }, + }, + async beforeEach() { + // Mock Firebase user as admin + useFirebaseUser.mockReturnValue([ + { + ...mockFirebaseUser, + email: 'admin@example.com', + displayName: 'Admin User', + }, + false, + undefined, + ]) + }, } export const UnapprovedUser: Story = { - parameters: { - msw: { - handlers: [ - http.get(CAPI('/users'), () => - HttpResponse.json({ - ...regularUser, - isApproved: false, - }) - ), - ...handlers, - ], - }, - }, - async beforeEach() { - // Mock Firebase user as unapproved - useFirebaseUser.mockReturnValue([mockFirebaseUser, false, undefined]) + parameters: { + msw: { + handlers: [ + http.get(CAPI('/users'), () => + HttpResponse.json({ + ...regularUser, + isApproved: false, + }) + ), + ...handlers, + ], }, + }, + async beforeEach() { + // Mock Firebase user as unapproved + useFirebaseUser.mockReturnValue([mockFirebaseUser, false, undefined]) + }, } export const LoggedOut: Story = { - parameters: { - msw: { - handlers: [ - http.get(CAPI('/users'), () => - HttpResponse.json(null, { status: 401 }) - ), - ...handlers, - ], - }, - }, - async beforeEach() { - // Mock Firebase user as logged out - useFirebaseUser.mockReturnValue([null, false, undefined]) + parameters: { + msw: { + handlers: [ + http.get(CAPI('/users'), () => + HttpResponse.json(null, { status: 401 }) + ), + ...handlers, + ], }, + }, + async beforeEach() { + // Mock Firebase user as logged out + useFirebaseUser.mockReturnValue([null, false, undefined]) + }, } diff --git a/components/Header/ProfileDropdown.tsx b/components/Header/ProfileDropdown.tsx index b8bdab26..75806e50 100644 --- a/components/Header/ProfileDropdown.tsx +++ b/components/Header/ProfileDropdown.tsx @@ -8,61 +8,59 @@ import { useFirebaseUser } from '@/src/hooks/useFirebaseUser' import { useLogout } from '../AuthUI/Logout' export default function ProfileDropdown() { - const router = useRouter() - const { t } = useNextTranslation() - const [onSignOut, isSignoutLoading, error] = useLogout() - const { data: user } = useGetUser() + const router = useRouter() + const { t } = useNextTranslation() + const [onSignOut, isSignoutLoading, error] = useLogout() + const { data: user } = useGetUser() - // // debug - // return <>{JSON.stringify(useFirebaseUser(), null, 2)} - const [firebaseUser] = useFirebaseUser() - if (!firebaseUser) return null + // // debug + // return <>{JSON.stringify(useFirebaseUser(), null, 2)} + const [firebaseUser] = useFirebaseUser() + if (!firebaseUser) return null - return ( - - - - {firebaseUser.displayName || firebaseUser.email} - - -
+ return ( + + - - - {firebaseUser.displayName || t('User')} - - - {firebaseUser.email} - - - router.push('/nodes')}> - {t('Your Nodes')} - - {user?.isAdmin && ( - router.push('/admin')}> - {t('Admin Dashboard')} - - )} - - {t('Logout')} - - ) + /> + + {firebaseUser.displayName || firebaseUser.email} + + + + } + > + + + {firebaseUser.displayName || t('User')} + + + {firebaseUser.email} + + + router.push('/nodes')}> + {t('Your Nodes')} + + {user?.isAdmin && ( + router.push('/admin')}> + {t('Admin Dashboard')} + + )} + + {t('Logout')} + + ) } diff --git a/components/Labels/ClearableLabel.stories.tsx b/components/Labels/ClearableLabel.stories.tsx index 3f857350..8bb678c1 100644 --- a/components/Labels/ClearableLabel.stories.tsx +++ b/components/Labels/ClearableLabel.stories.tsx @@ -4,54 +4,54 @@ import { ClearableLabel } from '@/components/Labels/ClearableLabel' // We need to use a functional component for this because it has state const ClearableLabelWithState = ({ - label, - initialValue = '', - disabled = false, + label, + initialValue = '', + disabled = false, }) => { - const [value, setValue] = useState(initialValue) + const [value, setValue] = useState(initialValue) - return ( - setValue('')} - disabled={disabled} - /> - ) + return ( + setValue('')} + disabled={disabled} + /> + ) } const meta: Meta = { - title: 'Components/Labels/ClearableLabel', - component: ClearableLabelWithState, - parameters: { - layout: 'centered', - }, - tags: ['autodocs'], + title: 'Components/Labels/ClearableLabel', + component: ClearableLabelWithState, + parameters: { + layout: 'centered', + }, + tags: ['autodocs'], } export default meta type Story = StoryObj export const Empty: Story = { - args: { - label: 'Search', - initialValue: '', - }, + args: { + label: 'Search', + initialValue: '', + }, } export const WithValue: Story = { - args: { - label: 'Search', - initialValue: 'Text to clear', - }, + args: { + label: 'Search', + initialValue: 'Text to clear', + }, } export const Disabled: Story = { - args: { - label: 'Search (Disabled)', - initialValue: 'Cannot be cleared', - disabled: true, - }, + args: { + label: 'Search (Disabled)', + initialValue: 'Cannot be cleared', + disabled: true, + }, } diff --git a/components/Labels/ClearableLabel.tsx b/components/Labels/ClearableLabel.tsx index 65ebd632..178440ae 100644 --- a/components/Labels/ClearableLabel.tsx +++ b/components/Labels/ClearableLabel.tsx @@ -3,37 +3,37 @@ import React from 'react' import { MdClear } from 'react-icons/md' export const ClearableLabel: React.FC<{ - id: string - label: string - value: string - disabled?: boolean - onClear: () => void - onChange: (value: string) => void + id: string + label: string + value: string + disabled?: boolean + onClear: () => void + onChange: (value: string) => void }> = ({ label, value, onClear, onChange, id, disabled = false }) => { - return ( -
- onChange(e.target.value)} - disabled={disabled} - /> - {value && ( - - )} -
- ) + return ( +
+ onChange(e.target.value)} + disabled={disabled} + /> + {value && ( + + )} +
+ ) } diff --git a/components/MailtoNodeVersionModal.tsx b/components/MailtoNodeVersionModal.tsx index 9cd73ef8..16d35dc4 100644 --- a/components/MailtoNodeVersionModal.tsx +++ b/components/MailtoNodeVersionModal.tsx @@ -2,111 +2,103 @@ import { Button, Modal, Spinner } from 'flowbite-react' import Link from 'next/link' import { FaGithub } from 'react-icons/fa' import { - NodeVersion, - Publisher, - useGetNode, - useGetPublisher, + NodeVersion, + Publisher, + useGetNode, + useGetPublisher, } from '@/src/api/generated' import { useNextTranslation } from '@/src/hooks/i18n' export default function MailtoNodeVersionModal({ - nodeVersion: nv, - open, - onClose, + nodeVersion: nv, + open, + onClose, }: { - nodeVersion?: NodeVersion - open: boolean - onClose: () => void + nodeVersion?: NodeVersion + open: boolean + onClose: () => void }) { - const { t } = useNextTranslation() - // 1. repo+"/issues/new" for github issues - // 2. mailto:email for email - const { data: node, isLoading: isNodeLoading } = useGetNode( - nv?.node_id ?? '', - {}, - { query: { enabled: !!nv } } - ) - const { data: publisher, isLoading: publisherLoading } = useGetPublisher( - node?.id ?? '', - { query: { enabled: !!node?.id } } - ) + const { t } = useNextTranslation() + // 1. repo+"/issues/new" for github issues + // 2. mailto:email for email + const { data: node, isLoading: isNodeLoading } = useGetNode( + nv?.node_id ?? '', + {}, + { query: { enabled: !!nv } } + ) + const { data: publisher, isLoading: publisherLoading } = useGetPublisher( + node?.id ?? '', + { query: { enabled: !!node?.id } } + ) - const newIssueLink = !node?.repository - ? 'javascript:' - : `${node.repository}/issues/new?title=${encodeURIComponent(t('Issue with Node Version {{nodeId}}@{{version}}', { nodeId: nv?.node_id, version: nv?.version }))}&body=${encodeURIComponent(t('Node Version: {{nodeId}}@{{version}}\n\nPlease describe the issue or request you have regarding this node version.', { nodeId: nv?.node_id, version: nv?.version }))}` + const newIssueLink = !node?.repository + ? 'javascript:' + : `${node.repository}/issues/new?title=${encodeURIComponent(t('Issue with Node Version {{nodeId}}@{{version}}', { nodeId: nv?.node_id, version: nv?.version }))}&body=${encodeURIComponent(t('Node Version: {{nodeId}}@{{version}}\n\nPlease describe the issue or request you have regarding this node version.', { nodeId: nv?.node_id, version: nv?.version }))}` - if (!nv) return null + if (!nv) return null - return ( - - - {t('Contact Publisher: {{name}}', { - name: publisher?.name || publisher?.id, - })} - - -
-
    - {!!node?.repository && ( -
  1. -

    - {t( - 'You can contact the publisher via GitHub:' - )} -

    - - - {t('Open Issue on GitHub')} - {isNodeLoading && ( - - )} - -
  2. - )} - {publisher?.members?.length && ( -
  3. -

    - {t( - 'You can contact the publisher via email:' - )} -

    - - {publisherLoading && ( - - )} -
  4. - )} -
-
-
- - - -
- ) + return ( + + + {t('Contact Publisher: {{name}}', { + name: publisher?.name || publisher?.id, + })} + + +
+
    + {!!node?.repository && ( +
  1. +

    + {t('You can contact the publisher via GitHub:')} +

    + + + {t('Open Issue on GitHub')} + {isNodeLoading && } + +
  2. + )} + {publisher?.members?.length && ( +
  3. +

    + {t('You can contact the publisher via email:')} +

    + + {publisherLoading && } +
  4. + )} +
+
+
+ + + +
+ ) } function ListPublisherEmails({ publisher }: { publisher: Publisher }) { - return ( -
    - {publisher?.members - ?.map((member) => member.user?.email) - // type-safe filter to remove empty emails - ?.flatMap((e) => (e ? [e] : [])) - .map((email) => ( -
  • - - {email} - -
  • - ))} -
- ) + return ( +
    + {publisher?.members + ?.map((member) => member.user?.email) + // type-safe filter to remove empty emails + ?.flatMap((e) => (e ? [e] : [])) + .map((email) => ( +
  • + + {email} + +
  • + ))} +
+ ) } diff --git a/components/NodeStatusBadge.tsx b/components/NodeStatusBadge.tsx index 9603c89d..0f0f9d86 100644 --- a/components/NodeStatusBadge.tsx +++ b/components/NodeStatusBadge.tsx @@ -3,27 +3,27 @@ import { NodeVersionStatusToReadable } from 'src/mapper/nodeversion' import { NodeVersionStatus } from '@/src/api/generated' export function NodeStatusBadge({ - status, - count, + status, + count, }: { - status: NodeVersionStatus - count?: number + status: NodeVersionStatus + count?: number }) { - return ( - - {NodeVersionStatusToReadable({ - status: status as NodeVersionStatus, - })} - {count != null ? x{count} : null} - - ) + return ( + + {NodeVersionStatusToReadable({ + status: status as NodeVersionStatus, + })} + {count != null ? x{count} : null} + + ) } diff --git a/components/NodeStatusReason.tsx b/components/NodeStatusReason.tsx index ab21f1d5..4b9a054b 100644 --- a/components/NodeStatusReason.tsx +++ b/components/NodeStatusReason.tsx @@ -17,10 +17,10 @@ import { NodeVersionStatusToReadable } from 'src/mapper/nodeversion' import yaml from 'yaml' import { z } from 'zod' import { - NodeVersion, - NodeVersionStatus, - useGetNode, - useListNodeVersions, + NodeVersion, + NodeVersionStatus, + useGetNode, + useListNodeVersions, } from '@/src/api/generated' import { useNextTranslation } from '@/src/hooks/i18n' import { NodeStatusBadge } from './NodeStatusBadge' @@ -29,557 +29,516 @@ import { parseJsonSafe } from './parseJsonSafe' // schema reference from (private): https://github.com/Comfy-Org/security-scanner export const zErrorArray = z - .object({ - issue_type: z.string(), // The error type is represented as a string - file_path: z.string().optional(), // File name is a string and may or may not be present - line_number: z.number().optional(), // Line number can be a string or number and may or may not be present - code_snippet: z.string().optional(), // Line content where the error is found is a string and optional - message: z.string().optional(), // Line content where the error is found is a string and optional - scanner: z.string().optional(), // Scanner name is a string and optional - // yara - // meta: z - // .object({ - // description: z.string(), - // version: z.string(), - // date: z.string(), - // reference: z.string(), - // category: z.string(), - // observable_refs: z.string(), - // attack_id1: z.string(), - // attack_id2: z.string(), - // severity: z.string(), - // }) - // .passthrough() - // .optional(), // Meta information is optional and contains a detailed description if present - // yara - // matches: z - // .array( - // z - // .object({ - // filepath: z.string(), - // strings: z.array( - // z.object({ - // identifier: z.string(), - // instances: z.array( - // z.object({ - // matched_data: z.string(), - // matched_length: z.number(), - // offset: z.number(), - // line_number: z.number(), - // line: z.string(), - // }) - // ), - // }) - // ), - // }) - // .passthrough() - // .optional() - // ) - // .optional(), // Matches array, if present, contains detailed match information - }) - .passthrough() - .array() + .object({ + issue_type: z.string(), // The error type is represented as a string + file_path: z.string().optional(), // File name is a string and may or may not be present + line_number: z.number().optional(), // Line number can be a string or number and may or may not be present + code_snippet: z.string().optional(), // Line content where the error is found is a string and optional + message: z.string().optional(), // Line content where the error is found is a string and optional + scanner: z.string().optional(), // Scanner name is a string and optional + // yara + // meta: z + // .object({ + // description: z.string(), + // version: z.string(), + // date: z.string(), + // reference: z.string(), + // category: z.string(), + // observable_refs: z.string(), + // attack_id1: z.string(), + // attack_id2: z.string(), + // severity: z.string(), + // }) + // .passthrough() + // .optional(), // Meta information is optional and contains a detailed description if present + // yara + // matches: z + // .array( + // z + // .object({ + // filepath: z.string(), + // strings: z.array( + // z.object({ + // identifier: z.string(), + // instances: z.array( + // z.object({ + // matched_data: z.string(), + // matched_length: z.number(), + // offset: z.number(), + // line_number: z.number(), + // line: z.string(), + // }) + // ), + // }) + // ), + // }) + // .passthrough() + // .optional() + // ) + // .optional(), // Matches array, if present, contains detailed match information + }) + .passthrough() + .array() export const zStatusCode = z.enum( - Object.values(NodeVersionStatus) as [ - NodeVersionStatus, - ...NodeVersionStatus[], - ] + Object.values(NodeVersionStatus) as [ + NodeVersionStatus, + ...NodeVersionStatus[], + ] ) export const zStatusHistory = z.array( - z.object({ - status: zStatusCode, - message: z.string(), - by: z.string().optional(), - }) + z.object({ + status: zStatusCode, + message: z.string(), + by: z.string().optional(), + }) ) // when status is active/banned, the statusReason is approve/reject reason, and maybe a status history export const zStatusReason = z.object({ - message: z.string(), - by: z.string(), + message: z.string(), + by: z.string(), - // statusHistory, allow undo - statusHistory: zStatusHistory.optional(), + // statusHistory, allow undo + statusHistory: zStatusHistory.optional(), - // batchId for batch operations (for future batch-undo) - batchId: z.string().optional(), + // batchId for batch operations (for future batch-undo) + batchId: z.string().optional(), }) export function NodeStatusReason(nv: NodeVersion) { - const { t } = useNextTranslation() - const { node_id, status_reason } = nv - const { ref, inView } = useInView() - - // TODO: migrate this to comfy-api, bring node information to /versions - const { data: node } = useGetNode( - node_id!, - {}, - { query: { enabled: inView } } - ) + const { t } = useNextTranslation() + const { node_id, status_reason } = nv + const { ref, inView } = useInView() + + // TODO: migrate this to comfy-api, bring node information to /versions + const { data: node } = useGetNode( + node_id!, + {}, + { query: { enabled: inView } } + ) + + // Get last nodeversion, sorted by time + const { data: nodeVersions } = useListNodeVersions( + node_id!, + { include_status_reason: true }, + { query: { enabled: inView } } + ) + nodeVersions?.sort(compareBy((e) => e.createdAt || e.id || '')) + + // query last node versions + const currentNodeVersionIndex = + nodeVersions?.findIndex((nodeVersion) => nodeVersion.id === nv.id) ?? -1 + const lastApprovedNodeVersion = nodeVersions?.findLast( + (nv, i) => + nv.status === NodeVersionStatus.NodeVersionStatusActive && + i < currentNodeVersionIndex + ) + // const lastBannedNodeVersion = nodeVersions?.find( + // (nv, i) => + // nv.status === NodeVersionStatus.NodeVersionStatusBanned && + // i < currentNodeVersionIndex + // ) + // const lastFlaggedNodeVersion = nodeVersions?.find( + // (nv, i) => + // nv.status === NodeVersionStatus.NodeVersionStatusFlagged && + // i < currentNodeVersionIndex + // ) + // const lastNodeVersion = nodeVersions?.at(-2) + + // parse status reason + const issueList = parseIssueList(parseJsonSafe(status_reason ?? '').data) + // const lastVersionIssueList = parseIssueList(parseJsonSafe(lastNodeVersion.status_reason ?? '').data) + + // assume all issues are approved if last node version is approved + const approvedIssueList = parseIssueList( + parseJsonSafe( + zStatusReason + .safeParse( + parseJsonSafe(lastApprovedNodeVersion?.status_reason ?? '').data + ) + .data?.statusHistory?.findLast( + (e) => e.status === NodeVersionStatus.NodeVersionStatusFlagged + )?.message + ).data + ) + + // const statusReason = + // zStatusReason.safeParse(statusReasonJson).data ?? + // zStatusReason.parse({ message: status_reason, by: 'admin@comfy.org' }) + + const fullfilledIssueList = issueList + // guess url from node + ?.map((e) => { + const repoUrl = node?.repository || '' + const filepath = + repoUrl && + (e.file_path || '') && + `/blob/HEAD/${e.file_path?.replace(/^\//, '')}` + const linenumber = + filepath && (e.line_number || '') && `#L${e.line_number}` + const url = repoUrl + filepath + linenumber + return { ...e, url } + }) + // mark if the issue was approved before + ?.map((e) => { + const isApproved = approvedIssueList?.some( + (approvedIssue) => + approvedIssue.file_path === e.file_path && + approvedIssue.line_number === e.line_number && + approvedIssue.code_snippet === e.code_snippet + ) + return { ...e, isApproved } + }) - // Get last nodeversion, sorted by time - const { data: nodeVersions } = useListNodeVersions( - node_id!, - { include_status_reason: true }, - { query: { enabled: inView } } - ) - nodeVersions?.sort(compareBy((e) => e.createdAt || e.id || '')) - - // query last node versions - const currentNodeVersionIndex = - nodeVersions?.findIndex((nodeVersion) => nodeVersion.id === nv.id) ?? -1 - const lastApprovedNodeVersion = nodeVersions?.findLast( - (nv, i) => - nv.status === NodeVersionStatus.NodeVersionStatusActive && - i < currentNodeVersionIndex - ) - // const lastBannedNodeVersion = nodeVersions?.find( - // (nv, i) => - // nv.status === NodeVersionStatus.NodeVersionStatusBanned && - // i < currentNodeVersionIndex - // ) - // const lastFlaggedNodeVersion = nodeVersions?.find( - // (nv, i) => - // nv.status === NodeVersionStatus.NodeVersionStatusFlagged && - // i < currentNodeVersionIndex - // ) - // const lastNodeVersion = nodeVersions?.at(-2) - - // parse status reason - const issueList = parseIssueList(parseJsonSafe(status_reason ?? '').data) - // const lastVersionIssueList = parseIssueList(parseJsonSafe(lastNodeVersion.status_reason ?? '').data) - - // assume all issues are approved if last node version is approved - const approvedIssueList = parseIssueList( - parseJsonSafe( - zStatusReason - .safeParse( - parseJsonSafe(lastApprovedNodeVersion?.status_reason ?? '') - .data - ) - .data?.statusHistory?.findLast( - (e) => - e.status === NodeVersionStatus.NodeVersionStatusFlagged - )?.message - ).data - ) + const lastFullfilledIssueList = approvedIssueList // guess url from node + ?.map((e) => { + const repoUrl = node?.repository || '' + const filepath = + repoUrl && + (e.file_path || '') && + `/blob/HEAD/${e.file_path?.replace(/^\//, '')}` + const linenumber = + filepath && (e.line_number || '') && `#L${e.line_number}` + const url = repoUrl + filepath + linenumber + return { ...e, url } + }) + // mark if the issue was approved before + ?.map((e) => { + const isApproved = true + return { ...e, isApproved } + }) - // const statusReason = - // zStatusReason.safeParse(statusReasonJson).data ?? - // zStatusReason.parse({ message: status_reason, by: 'admin@comfy.org' }) - - const fullfilledIssueList = issueList - // guess url from node - ?.map((e) => { - const repoUrl = node?.repository || '' - const filepath = - repoUrl && - (e.file_path || '') && - `/blob/HEAD/${e.file_path?.replace(/^\//, '')}` - const linenumber = - filepath && (e.line_number || '') && `#L${e.line_number}` - const url = repoUrl + filepath + linenumber - return { ...e, url } - }) - // mark if the issue was approved before - ?.map((e) => { - const isApproved = approvedIssueList?.some( - (approvedIssue) => - approvedIssue.file_path === e.file_path && - approvedIssue.line_number === e.line_number && - approvedIssue.code_snippet === e.code_snippet - ) - return { ...e, isApproved } - }) - - const lastFullfilledIssueList = approvedIssueList // guess url from node - ?.map((e) => { - const repoUrl = node?.repository || '' - const filepath = - repoUrl && - (e.file_path || '') && - `/blob/HEAD/${e.file_path?.replace(/^\//, '')}` - const linenumber = - filepath && (e.line_number || '') && `#L${e.line_number}` - const url = repoUrl + filepath + linenumber - return { ...e, url } - }) - // mark if the issue was approved before - ?.map((e) => { - const isApproved = true - return { ...e, isApproved } - }) - - // get a summary for the issues, including weather it was approved before - const problemsSummary = fullfilledIssueList?.sort( - compareBy( - (e) => - // sort by approved before - (e.isApproved ? '0' : '1') + - // and then filepath + line number (padStart to order numbers by number, instead of string) - e.url - .split(/\b/) - .map( - (strOrNumber) => - z - .number() - .safeParse(strOrNumber) - .data?.toString() - .padStart(10, '0') ?? strOrNumber - ) - .join('') - ) + // get a summary for the issues, including weather it was approved before + const problemsSummary = fullfilledIssueList?.sort( + compareBy( + (e) => + // sort by approved before + (e.isApproved ? '0' : '1') + + // and then filepath + line number (padStart to order numbers by number, instead of string) + e.url + .split(/\b/) + .map( + (strOrNumber) => + z + .number() + .safeParse(strOrNumber) + .data?.toString() + .padStart(10, '0') ?? strOrNumber + ) + .join('') ) - - const lastCode = lastFullfilledIssueList - ? JSON.stringify(lastFullfilledIssueList) - : (lastApprovedNodeVersion?.status_reason ?? '') - const code = fullfilledIssueList - ? JSON.stringify(fullfilledIssueList) - : status_reason - return ( -
- {/* HistoryVersions */} - {(nodeVersions?.length ?? null) && ( -
- - - -

- - {t('Node history:')} -

-
    - {Object.entries( - nodeVersions!.reduce( - (acc, nv) => { - acc[nv.status!] = - (acc[nv.status!] || 0) + 1 - return acc - }, - {} as Record - ) - ).map(([status, count]) => ( -
  • - -
  • - ))} -
- - - - -
-
-
    - {nodeVersions?.map((nv) => ( -
  1. -
    - - {nv.version} - - - -
    - - {zStatusReason.safeParse( - nv.status_reason - ).data?.message ?? nv.status_reason} - {zStatusReason.safeParse( - nv.status_reason - ).data?.batchId && ( - - [Batch:{' '} - { - zStatusReason.safeParse( - nv.status_reason - ).data?.batchId - } - ] - - )} - -
  2. - ))} -
-
-
- )} - {!!problemsSummary?.length && ( - <> -

{'Problems Summary: '}

-
    - {problemsSummary.map((e, i) => ( -
  1. -
    - {/* show green checkmark if approved before */} - {e.isApproved ? ( - - ✅ - - ) : ( - - )} - - - - - {(e.file_path?.length ?? 0) > 18 + 2 - ? `…${e.file_path?.slice(-18)}` - : e.file_path} -  L{e.line_number} - -
    - -   - {e.issue_type} -   - {e.code_snippet || e.message} - -
  2. - ))} -
- - )} - {!!code?.trim() && ( -
- {'Status Reason: '} - {fullfilledIssueList ? ( - - ) : ( - {code} + ) + + const lastCode = lastFullfilledIssueList + ? JSON.stringify(lastFullfilledIssueList) + : (lastApprovedNodeVersion?.status_reason ?? '') + const code = fullfilledIssueList + ? JSON.stringify(fullfilledIssueList) + : status_reason + return ( +
+ {/* HistoryVersions */} + {(nodeVersions?.length ?? null) && ( +
+ + + +

+ + {t('Node history:')} +

+
    + {Object.entries( + nodeVersions!.reduce( + (acc, nv) => { + acc[nv.status!] = (acc[nv.status!] || 0) + 1 + return acc + }, + {} as Record + ) + ).map(([status, count]) => ( +
  • + +
  • + ))} +
+ + + + +
+
+
    + {nodeVersions?.map((nv) => ( +
  1. +
    + + {nv.version} + + + +
    + + {zStatusReason.safeParse(nv.status_reason).data?.message ?? + nv.status_reason} + {zStatusReason.safeParse(nv.status_reason).data + ?.batchId && ( + + [Batch:{' '} + { + zStatusReason.safeParse(nv.status_reason).data + ?.batchId + } + ] + )} -
- )} -
- ) + + + ))} + +
+ + )} + {!!problemsSummary?.length && ( + <> +

{'Problems Summary: '}

+
    + {problemsSummary.map((e, i) => ( +
  1. +
    + {/* show green checkmark if approved before */} + {e.isApproved ? ( + + ) : ( + + )} + + + + + {(e.file_path?.length ?? 0) > 18 + 2 + ? `…${e.file_path?.slice(-18)}` + : e.file_path} +  L{e.line_number} + +
    + +   + {e.issue_type} +   + {e.code_snippet || e.message} + +
  2. + ))} +
+ + )} + {!!code?.trim() && ( +
+ {'Status Reason: '} + {fullfilledIssueList ? ( + + ) : ( + {code} + )} +
+ )} + + ) } export function PrettieredJSON5({ children: raw }: { children: string }) { - const [code, setCode] = useState(raw) - useEffect(() => { - format(raw ?? '', { - parser: 'json5', - plugins: [prettierPluginBabel, prettierPluginEstree], - }).then(setCode) - }, [raw]) - return ( - - {code} - - ) + const [code, setCode] = useState(raw) + useEffect(() => { + format(raw ?? '', { + parser: 'json5', + plugins: [prettierPluginBabel, prettierPluginEstree], + }).then(setCode) + }, [raw]) + return ( + + {code} + + ) } export function PrettieredYAML({ children: raw }: { children: string }) { - const { ref, inView } = useInView() - - const parsedYaml = tryCatch( - (raw: string) => yaml.stringify(yaml.parse(raw)), - raw - )(raw) - - const [code, setCode] = useState(parsedYaml) - useEffect(() => { - format(parsedYaml, { - parser: 'yaml', - plugins: [prettierPluginYaml], - }).then(setCode) - }, [parsedYaml]) - - const [isEditorOpen, setEditorOpen] = useState(false) - const [editorReady, setEditorReady] = useState(false) - const displayEditor = isEditorOpen && editorReady - useEffect(() => { - if (isEditorOpen === false) setEditorReady(false) - }, [isEditorOpen]) - - return ( -
- {inView && ( -
- -
- )} - {!displayEditor && ( - - {code} - - )} - - {isEditorOpen && ( - setEditorReady(true)} - /> - )} + const { ref, inView } = useInView() + + const parsedYaml = tryCatch( + (raw: string) => yaml.stringify(yaml.parse(raw)), + raw + )(raw) + + const [code, setCode] = useState(parsedYaml) + useEffect(() => { + format(parsedYaml, { + parser: 'yaml', + plugins: [prettierPluginYaml], + }).then(setCode) + }, [parsedYaml]) + + const [isEditorOpen, setEditorOpen] = useState(false) + const [editorReady, setEditorReady] = useState(false) + const displayEditor = isEditorOpen && editorReady + useEffect(() => { + if (isEditorOpen === false) setEditorReady(false) + }, [isEditorOpen]) + + return ( +
+ {inView && ( +
+
- ) + )} + {!displayEditor && ( + + {code} + + )} + + {isEditorOpen && ( + setEditorReady(true)} + /> + )} +
+ ) } export function PrettieredYamlDiffView({ - original: rawOriginal, - modified: rawModified, + original: rawOriginal, + modified: rawModified, }: { - original: string - modified: string + original: string + modified: string }) { - const { ref, inView } = useInView() - - const parsedModified = tryCatch( - (raw: string) => raw && yaml.stringify(yaml.parse(raw)), - rawModified - )(rawModified) - const parsedOriginal = tryCatch( - (raw: string) => raw && yaml.stringify(yaml.parse(raw)), - rawOriginal - )(rawOriginal) - - const [codeOriginal, setCodeOriginal] = useState(parsedOriginal) - const [codeModified, setCodeModified] = useState(parsedModified) - - useEffect(() => { - format(parsedOriginal, { - parser: 'yaml', - plugins: [prettierPluginYaml], - }).then(setCodeOriginal) - }, [parsedOriginal]) - useEffect(() => { - format(parsedModified, { - parser: 'yaml', - plugins: [prettierPluginYaml], - }).then(setCodeModified) - }, [parsedModified]) - - const [isEditorOpen, setEditorOpen] = useState(true) - const [editorReady, setEditorReady] = useState(false) - const displayEditor = isEditorOpen && editorReady - useEffect(() => { - if (isEditorOpen === false) setEditorReady(false) - }, [isEditorOpen]) - - return ( -
- {inView && ( -
- -
- )} - - {isEditorOpen && ( - setEditorReady(true)} - /> - )} + const { ref, inView } = useInView() + + const parsedModified = tryCatch( + (raw: string) => raw && yaml.stringify(yaml.parse(raw)), + rawModified + )(rawModified) + const parsedOriginal = tryCatch( + (raw: string) => raw && yaml.stringify(yaml.parse(raw)), + rawOriginal + )(rawOriginal) + + const [codeOriginal, setCodeOriginal] = useState(parsedOriginal) + const [codeModified, setCodeModified] = useState(parsedModified) + + useEffect(() => { + format(parsedOriginal, { + parser: 'yaml', + plugins: [prettierPluginYaml], + }).then(setCodeOriginal) + }, [parsedOriginal]) + useEffect(() => { + format(parsedModified, { + parser: 'yaml', + plugins: [prettierPluginYaml], + }).then(setCodeModified) + }, [parsedModified]) + + const [isEditorOpen, setEditorOpen] = useState(true) + const [editorReady, setEditorReady] = useState(false) + const displayEditor = isEditorOpen && editorReady + useEffect(() => { + if (isEditorOpen === false) setEditorReady(false) + }, [isEditorOpen]) + + return ( +
+ {inView && ( +
+
- ) + )} + + {isEditorOpen && ( + setEditorReady(true)} + /> + )} +
+ ) } diff --git a/components/Search/Autocomplete.tsx b/components/Search/Autocomplete.tsx index e2516949..27186f18 100644 --- a/components/Search/Autocomplete.tsx +++ b/components/Search/Autocomplete.tsx @@ -7,12 +7,12 @@ import { createLocalStorageRecentSearchesPlugin } from '@algolia/autocomplete-pl import { debounce } from '@algolia/autocomplete-shared' import type { SearchClient } from 'algoliasearch/lite' import { - createElement, - Fragment, - useEffect, - useMemo, - useRef, - useState, + createElement, + Fragment, + useEffect, + useMemo, + useRef, + useState, } from 'react' import { createRoot, Root } from 'react-dom/client' import { usePagination, useSearchBox } from 'react-instantsearch' @@ -22,140 +22,140 @@ import { INSTANT_SEARCH_QUERY_SUGGESTIONS } from 'src/constants' import '@algolia/autocomplete-theme-classic' type AutocompleteProps = Partial> & { - searchClient: SearchClient - className?: string + searchClient: SearchClient + className?: string } type SetInstantSearchUiStateOptions = { - query: string + query: string } export default function Autocomplete({ - searchClient, - className, - ...autocompleteProps + searchClient, + className, + ...autocompleteProps }: AutocompleteProps) { - const autocompleteContainer = useRef(null) - const panelRootRef = useRef(null) - const rootRef = useRef(null) - - const { query, refine: setQuery } = useSearchBox() - - const { refine: setPage } = usePagination() - - const [instantSearchUiState, setInstantSearchUiState] = - useState({ query }) - const debouncedSetInstantSearchUiState = debounce( - setInstantSearchUiState, - 500 - ) - - useEffect(() => { - setQuery(instantSearchUiState.query) - setPage(0) - }, [instantSearchUiState, setQuery, setPage]) - - const plugins = useMemo(() => { - const recentSearches = createLocalStorageRecentSearchesPlugin({ - key: 'instantsearch', - limit: 3, - transformSource({ source }) { - return { - ...source, - onSelect({ item }) { - setInstantSearchUiState({ query: item.label }) - }, - } - }, + const autocompleteContainer = useRef(null) + const panelRootRef = useRef(null) + const rootRef = useRef(null) + + const { query, refine: setQuery } = useSearchBox() + + const { refine: setPage } = usePagination() + + const [instantSearchUiState, setInstantSearchUiState] = + useState({ query }) + const debouncedSetInstantSearchUiState = debounce( + setInstantSearchUiState, + 500 + ) + + useEffect(() => { + setQuery(instantSearchUiState.query) + setPage(0) + }, [instantSearchUiState, setQuery, setPage]) + + const plugins = useMemo(() => { + const recentSearches = createLocalStorageRecentSearchesPlugin({ + key: 'instantsearch', + limit: 3, + transformSource({ source }) { + return { + ...source, + onSelect({ item }) { + setInstantSearchUiState({ query: item.label }) + }, + } + }, + }) + + const querySuggestions = createQuerySuggestionsPlugin({ + searchClient, + indexName: INSTANT_SEARCH_QUERY_SUGGESTIONS, + getSearchParams() { + return recentSearches.data!.getAlgoliaSearchParams({ + hitsPerPage: 6, }) - - const querySuggestions = createQuerySuggestionsPlugin({ - searchClient, - indexName: INSTANT_SEARCH_QUERY_SUGGESTIONS, - getSearchParams() { - return recentSearches.data!.getAlgoliaSearchParams({ - hitsPerPage: 6, - }) - }, - transformSource({ source }) { - return { - ...source, - sourceId: 'querySuggestionsPlugin', - onSelect({ item }) { - setInstantSearchUiState({ - query: item.query, - }) - }, - getItems(params) { - if (!params.state.query) { - return [] - } - - return source.getItems(params) - }, - templates: { - ...source.templates, - header({ items }) { - if (items.length === 0) { - return - } - - return ( - - - In other categories - - - - ) - }, - }, - } + }, + transformSource({ source }) { + return { + ...source, + sourceId: 'querySuggestionsPlugin', + onSelect({ item }) { + setInstantSearchUiState({ + query: item.query, + }) + }, + getItems(params) { + if (!params.state.query) { + return [] + } + + return source.getItems(params) + }, + templates: { + ...source.templates, + header({ items }) { + if (items.length === 0) { + return + } + + return ( + + + In other categories + + + + ) }, + }, + } + }, + }) + + return [recentSearches, querySuggestions] + }, [searchClient]) + + useEffect(() => { + if (!autocompleteContainer.current) { + return + } + + const autocompleteInstance = autocomplete({ + ...autocompleteProps, + container: autocompleteContainer.current, + initialState: { query }, + insights: true, + plugins, + onReset() { + setInstantSearchUiState({ + query: '', }) - - return [recentSearches, querySuggestions] - }, [searchClient]) - - useEffect(() => { - if (!autocompleteContainer.current) { - return + }, + onSubmit({ state }) { + setInstantSearchUiState({ query: state.query }) + }, + onStateChange({ prevState, state }) { + if (prevState.query !== state.query) { + debouncedSetInstantSearchUiState({ query: state.query }) + } + }, + renderer: { createElement, Fragment, render: () => {} }, + render({ children }, root) { + if (!panelRootRef.current || rootRef.current !== root) { + rootRef.current = root + panelRootRef.current?.unmount() + panelRootRef.current = createRoot(root) } - const autocompleteInstance = autocomplete({ - ...autocompleteProps, - container: autocompleteContainer.current, - initialState: { query }, - insights: true, - plugins, - onReset() { - setInstantSearchUiState({ - query: '', - }) - }, - onSubmit({ state }) { - setInstantSearchUiState({ query: state.query }) - }, - onStateChange({ prevState, state }) { - if (prevState.query !== state.query) { - debouncedSetInstantSearchUiState({ query: state.query }) - } - }, - renderer: { createElement, Fragment, render: () => {} }, - render({ children }, root) { - if (!panelRootRef.current || rootRef.current !== root) { - rootRef.current = root - panelRootRef.current?.unmount() - panelRootRef.current = createRoot(root) - } - - panelRootRef.current.render(children) - }, - }) + panelRootRef.current.render(children) + }, + }) - return () => autocompleteInstance.destroy() - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [autocompleteProps, debouncedSetInstantSearchUiState, plugins]) + return () => autocompleteInstance.destroy() + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [autocompleteProps, debouncedSetInstantSearchUiState, plugins]) - return
+ return
} diff --git a/components/Search/EmptyQueryBoundary.tsx b/components/Search/EmptyQueryBoundary.tsx index 1d2564f4..8b505c59 100644 --- a/components/Search/EmptyQueryBoundary.tsx +++ b/components/Search/EmptyQueryBoundary.tsx @@ -2,28 +2,28 @@ import * as React from 'react' import { useInstantSearch } from 'react-instantsearch' type EmptyQueryBoundaryProps = { - children: React.ReactNode - fallback: React.ReactNode + children: React.ReactNode + fallback: React.ReactNode } const EmptyQueryBoundary: React.FC = ({ - children, - fallback, + children, + fallback, }) => { - const { indexUiState } = useInstantSearch() + const { indexUiState } = useInstantSearch() - // Render the fallback if the query is empty or too short - if (!indexUiState.query || indexUiState.query.length <= 1) { - return ( - <> - {fallback} - - - ) - } + // Render the fallback if the query is empty or too short + if (!indexUiState.query || indexUiState.query.length <= 1) { + return ( + <> + {fallback} + + + ) + } - // Render children if the query is valid - return <>{children} + // Render children if the query is valid + return <>{children} } export default EmptyQueryBoundary diff --git a/components/Search/PublisherId.tsx b/components/Search/PublisherId.tsx index 3f9cff43..c67dffb2 100644 --- a/components/Search/PublisherId.tsx +++ b/components/Search/PublisherId.tsx @@ -2,11 +2,11 @@ import { UNCLAIMED_ADMIN_PUBLISHER_ID } from '@/src/constants' import { useNextTranslation } from '@/src/hooks/i18n' export function PublisherId({ publisherId }: { publisherId?: string }) { - const { t } = useNextTranslation() - if (!publisherId) return null - return publisherId === UNCLAIMED_ADMIN_PUBLISHER_ID ? ( - {t('Unclaimed')} - ) : ( - {`@${publisherId}`} - ) + const { t } = useNextTranslation() + if (!publisherId) return null + return publisherId === UNCLAIMED_ADMIN_PUBLISHER_ID ? ( + {t('Unclaimed')} + ) : ( + {`@${publisherId}`} + ) } diff --git a/components/Search/SearchHit.stories.tsx b/components/Search/SearchHit.stories.tsx index e2e81381..47d92f6d 100644 --- a/components/Search/SearchHit.stories.tsx +++ b/components/Search/SearchHit.stories.tsx @@ -7,85 +7,84 @@ import { UNCLAIMED_ADMIN_PUBLISHER_ID } from '@/src/constants' // Create a wrapper component since Hit requires specific props structure const HitWrapper = (props) => { - // Mock the hit structure that would come from Algolia - const mockHit = { - id: props.id || '123', - name: props.name || 'Node Name', - description: props.description || 'This is a description of the node', - publisher_id: props.publisherId || 'pub-123', - total_install: props.totalInstall || 1500, - latest_version: props.latestVersion || '1.2.3', - comfy_nodes: props.comfyNodes || ['node1', 'node2'], - // Add required Algolia Hit properties - __position: 1, - __queryID: 'sample-query-id', - _highlightResult: { - comfy_nodes: props.comfyNodes?.map((node) => ({ - value: node, - matchedWords: props.matchedWords || ['node'], - })), - }, - _snippetResult: { - description: { - value: props.description || 'This is a description of the node', - }, - }, - objectID: props.id || '123', - } + // Mock the hit structure that would come from Algolia + const mockHit = { + id: props.id || '123', + name: props.name || 'Node Name', + description: props.description || 'This is a description of the node', + publisher_id: props.publisherId || 'pub-123', + total_install: props.totalInstall || 1500, + latest_version: props.latestVersion || '1.2.3', + comfy_nodes: props.comfyNodes || ['node1', 'node2'], + // Add required Algolia Hit properties + __position: 1, + __queryID: 'sample-query-id', + _highlightResult: { + comfy_nodes: props.comfyNodes?.map((node) => ({ + value: node, + matchedWords: props.matchedWords || ['node'], + })), + }, + _snippetResult: { + description: { + value: props.description || 'This is a description of the node', + }, + }, + objectID: props.id || '123', + } - return + return } const meta: Meta = { - title: 'Components/Search/SearchHit', - component: HitWrapper, - parameters: { - layout: 'centered', - backgrounds: { default: 'dark' }, - }, - tags: ['autodocs'], + title: 'Components/Search/SearchHit', + component: HitWrapper, + parameters: { + layout: 'centered', + backgrounds: { default: 'dark' }, + }, + tags: ['autodocs'], } export default meta type Story = StoryObj export const Default: Story = { - args: { - id: 'node-123', - name: 'Image Upscaler', - description: 'A node that upscales images using AI technology', - publisherId: 'pub-456', - totalInstall: 2500, - latestVersion: '2.0.1', - comfyNodes: ['upscaler', 'image-processor'], - matchedWords: ['upscaler'], - }, + args: { + id: 'node-123', + name: 'Image Upscaler', + description: 'A node that upscales images using AI technology', + publisherId: 'pub-456', + totalInstall: 2500, + latestVersion: '2.0.1', + comfyNodes: ['upscaler', 'image-processor'], + matchedWords: ['upscaler'], + }, } export const LongDescription: Story = { - args: { - id: 'node-456', - name: 'Advanced Texture Generator', - description: - 'This node generates procedural textures for 3D models with multiple parameters including roughness, metallic, and normal maps. It supports PBR workflows and can be integrated with various rendering engines.', - publisherId: 'pub-789', - totalInstall: 1800, - latestVersion: '1.5.3', - comfyNodes: ['texture', 'generator', 'procedural'], - matchedWords: ['texture', 'generator'], - }, + args: { + id: 'node-456', + name: 'Advanced Texture Generator', + description: + 'This node generates procedural textures for 3D models with multiple parameters including roughness, metallic, and normal maps. It supports PBR workflows and can be integrated with various rendering engines.', + publisherId: 'pub-789', + totalInstall: 1800, + latestVersion: '1.5.3', + comfyNodes: ['texture', 'generator', 'procedural'], + matchedWords: ['texture', 'generator'], + }, } export const UnclaimedNode: Story = { - args: { - id: 'node-789', - name: 'Unclaimed Node', - description: - 'This is an unclaimed node that can be claimed by a publisher', - publisherId: UNCLAIMED_ADMIN_PUBLISHER_ID, - totalInstall: 500, - latestVersion: '0.9.0', - comfyNodes: ['unclaimed'], - matchedWords: ['unclaimed'], - }, + args: { + id: 'node-789', + name: 'Unclaimed Node', + description: 'This is an unclaimed node that can be claimed by a publisher', + publisherId: UNCLAIMED_ADMIN_PUBLISHER_ID, + totalInstall: 500, + latestVersion: '0.9.0', + comfyNodes: ['unclaimed'], + matchedWords: ['unclaimed'], + }, } diff --git a/components/Search/SearchHit.tsx b/components/Search/SearchHit.tsx index e62b1c84..4a1fda62 100644 --- a/components/Search/SearchHit.tsx +++ b/components/Search/SearchHit.tsx @@ -1,9 +1,9 @@ import { ShortNumber } from '@lytieuphong/short-number' import { Tooltip } from 'flowbite-react' import type { - HitAttributeHighlightResult, - HitAttributeSnippetResult, - Hit as HitType, + HitAttributeHighlightResult, + HitAttributeSnippetResult, + Hit as HitType, } from 'instantsearch.js' import Link from 'next/link' import React from 'react' @@ -14,124 +14,114 @@ import { useNextTranslation } from '@/src/hooks/i18n' import { PublisherId } from './PublisherId' interface NodeHit { - id: string - name: string - description: string - publisher_id: string - total_install: number - latest_version: string - github_stars?: number + id: string + name: string + description: string + publisher_id: string + total_install: number + latest_version: string + github_stars?: number - comfy_nodes?: string[] + comfy_nodes?: string[] } type HitProps = { - hit: HitType + hit: HitType } const Hit: React.FC = ({ hit }) => { - const { t } = useNextTranslation() - const matchedNodes = ( - hit._highlightResult?.comfy_nodes as - | HitAttributeHighlightResult[] - | undefined - )?.filter((e) => (e.matchedWords as string[])?.length) - return ( - -
-
- -
+ const { t } = useNextTranslation() + const matchedNodes = ( + hit._highlightResult?.comfy_nodes as + | HitAttributeHighlightResult[] + | undefined + )?.filter((e) => (e.matchedWords as string[])?.length) + return ( + +
+
+ +
- {/* description */} - ( -

- {children} -

- ), - }} - > - {( - hit._snippetResult - ?.description as HitAttributeSnippetResult - )?.value.replace(/<\/?mark>/g, '**')} -
+ {/* description */} + ( +

+ {children} +

+ ), + }} + > + {( + hit._snippetResult?.description as HitAttributeSnippetResult + )?.value.replace(/<\/?mark>/g, '**')} +
- {/* nodes */} - {hit.comfy_nodes?.length && ( -
- - {hit.comfy_nodes?.join(', \n') ?? ''} - - } - placement="bottom" - > - {matchedNodes?.length ? ( - <> - {matchedNodes?.length ?? 0}/ - {hit.comfy_nodes?.length ?? 0} Nodes - matched: - {matchedNodes - ?.map((e) => - e.value?.replace(/<\/?mark>/g, '**') - ) - .filter((e) => e) - .map((name) => ( -
- {name} -
- ))} - - ) : ( - <>{hit.comfy_nodes?.length ?? 0} Nodes - )} -
-
- )} -
- {/* meta info */} -

+ + {hit.comfy_nodes?.join(', \n') ?? ''} + + } + placement="bottom" > - - {hit.latest_version && ( - - {' | '} - v{hit.latest_version} - - )} - {hit.total_install && ( - - {' | '} - {' '} - {ShortNumber(hit.total_install)} - - )} - {hit.github_stars && hit.github_stars > 0 && ( - - {' | '} - {' '} - {ShortNumber(hit.github_stars)} - - )} -

- - ) + {matchedNodes?.length ? ( + <> + {matchedNodes?.length ?? 0}/{hit.comfy_nodes?.length ?? 0}{' '} + Nodes matched: + {matchedNodes + ?.map((e) => e.value?.replace(/<\/?mark>/g, '**')) + .filter((e) => e) + .map((name) => ( +
+ {name} +
+ ))} + + ) : ( + <>{hit.comfy_nodes?.length ?? 0} Nodes + )} + +
+ )} +
+ {/* meta info */} +

+ + {hit.latest_version && ( + + {' | '} + v{hit.latest_version} + + )} + {hit.total_install && ( + + {' | '} + {' '} + {ShortNumber(hit.total_install)} + + )} + {hit.github_stars && hit.github_stars > 0 && ( + + {' | '} + {' '} + {ShortNumber(hit.github_stars)} + + )} +

+ + ) } export default Hit diff --git a/components/admin/AdminTreeNavigation.tsx b/components/admin/AdminTreeNavigation.tsx index aeb0c6b3..0ba6d90d 100644 --- a/components/admin/AdminTreeNavigation.tsx +++ b/components/admin/AdminTreeNavigation.tsx @@ -1,174 +1,170 @@ import Link from 'next/link' import { useState } from 'react' import { - HiChevronDown, - HiChevronRight, - HiOutlineAdjustments, - HiOutlineClipboardCheck, - HiOutlineCollection, - HiOutlineCube, - HiOutlineDuplicate, - HiOutlineSupport, + HiChevronDown, + HiChevronRight, + HiOutlineAdjustments, + HiOutlineClipboardCheck, + HiOutlineCollection, + HiOutlineCube, + HiOutlineDuplicate, + HiOutlineSupport, } from 'react-icons/hi' import { useNextTranslation } from '@/src/hooks/i18n' interface TreeNode { - id: string - label: string - icon: React.ComponentType<{ className?: string }> - href?: string - children?: TreeNode[] - expanded?: boolean + id: string + label: string + icon: React.ComponentType<{ className?: string }> + href?: string + children?: TreeNode[] + expanded?: boolean } interface AdminTreeNavigationProps { - className?: string + className?: string } export default function AdminTreeNavigation({ - className, + className, }: AdminTreeNavigationProps) { - const { t } = useNextTranslation() + const { t } = useNextTranslation() - const [expandedNodes, setExpandedNodes] = useState>( - new Set(['nodes', 'nodeversions']) - ) + const [expandedNodes, setExpandedNodes] = useState>( + new Set(['nodes', 'nodeversions']) + ) - const treeData: TreeNode[] = [ + const treeData: TreeNode[] = [ + { + id: 'nodes', + label: t('Nodes'), + icon: HiOutlineCube, + children: [ + { + id: 'manage-nodes', + label: t('Manage Nodes'), + icon: HiOutlineCollection, + href: '/admin/nodes', + }, { - id: 'nodes', - label: t('Nodes'), - icon: HiOutlineCube, - children: [ - { - id: 'manage-nodes', - label: t('Manage Nodes'), - icon: HiOutlineCollection, - href: '/admin/nodes', - }, - { - id: 'unclaimed-nodes', - label: t('Unclaimed Nodes'), - icon: HiOutlineCollection, - href: '/admin/claim-nodes', - }, - { - id: 'add-unclaimed-node', - label: t('Add Unclaimed Node'), - icon: HiOutlineCollection, - href: '/admin/add-unclaimed-node', - }, - ], + id: 'unclaimed-nodes', + label: t('Unclaimed Nodes'), + icon: HiOutlineCollection, + href: '/admin/claim-nodes', }, { - id: 'search-ranking', - label: t('Search Ranking Table'), - icon: HiOutlineAdjustments, - href: '/admin/search-ranking', + id: 'add-unclaimed-node', + label: t('Add Unclaimed Node'), + icon: HiOutlineCollection, + href: '/admin/add-unclaimed-node', }, + ], + }, + { + id: 'search-ranking', + label: t('Search Ranking Table'), + icon: HiOutlineAdjustments, + href: '/admin/search-ranking', + }, + { + id: 'comfy-node-names', + label: t('ComfyNode Names'), + icon: HiOutlineDuplicate, + href: '/admin/preempted-comfy-node-names', + }, + { + id: 'nodeversions', + label: t('Node Versions'), + icon: HiOutlineClipboardCheck, + children: [ { - id: 'comfy-node-names', - label: t('ComfyNode Names'), - icon: HiOutlineDuplicate, - href: '/admin/preempted-comfy-node-names', + id: 'review-versions', + label: t('Review Node Versions'), + icon: HiOutlineClipboardCheck, + href: '/admin/nodeversions?filter=flagged', }, { - id: 'nodeversions', - label: t('Node Versions'), - icon: HiOutlineClipboardCheck, - children: [ - { - id: 'review-versions', - label: t('Review Node Versions'), - icon: HiOutlineClipboardCheck, - href: '/admin/nodeversions?filter=flagged', - }, - { - id: 'version-compatibility', - label: t('Version Compatibility'), - icon: HiOutlineSupport, - href: '/admin/node-version-compatibility', - }, - ], + id: 'version-compatibility', + label: t('Version Compatibility'), + icon: HiOutlineSupport, + href: '/admin/node-version-compatibility', }, - ] + ], + }, + ] - const toggleExpanded = (nodeId: string) => { - const newExpanded = new Set(expandedNodes) - if (newExpanded.has(nodeId)) { - newExpanded.delete(nodeId) - } else { - newExpanded.add(nodeId) - } - setExpandedNodes(newExpanded) + const toggleExpanded = (nodeId: string) => { + const newExpanded = new Set(expandedNodes) + if (newExpanded.has(nodeId)) { + newExpanded.delete(nodeId) + } else { + newExpanded.add(nodeId) } + setExpandedNodes(newExpanded) + } - const renderTreeNode = (node: TreeNode, depth = 0) => { - const hasChildren = node.children && node.children.length > 0 - const isExpanded = expandedNodes.has(node.id) - const paddingLeft = depth * 20 + 12 - - return ( -
-
- {hasChildren && ( - - )} - {!hasChildren &&
} + const renderTreeNode = (node: TreeNode, depth = 0) => { + const hasChildren = node.children && node.children.length > 0 + const isExpanded = expandedNodes.has(node.id) + const paddingLeft = depth * 20 + 12 - + return ( +
+
+ {hasChildren && ( + + )} + {!hasChildren &&
} - {node.href ? ( - - {node.label} - - ) : ( - - hasChildren && toggleExpanded(node.id) - } - > - {node.label} - - )} -
+ - {hasChildren && isExpanded && ( -
- {node.children?.map((child) => - renderTreeNode(child, depth + 1) - )} -
- )} -
- ) - } + {node.href ? ( + + {node.label} + + ) : ( + hasChildren && toggleExpanded(node.id)} + > + {node.label} + + )} +
- return ( - + {hasChildren && isExpanded && ( +
+ {node.children?.map((child) => renderTreeNode(child, depth + 1))} +
+ )} +
) + } + + return ( + + ) } diff --git a/components/admin/NodeVersionCompatibilityEditModal.tsx b/components/admin/NodeVersionCompatibilityEditModal.tsx index 2b1329a5..d1472446 100644 --- a/components/admin/NodeVersionCompatibilityEditModal.tsx +++ b/components/admin/NodeVersionCompatibilityEditModal.tsx @@ -1,12 +1,12 @@ import { useQueryClient } from '@tanstack/react-query' import { AxiosError } from 'axios' import { - Alert, - Button, - Label, - Modal, - Textarea, - TextInput, + Alert, + Button, + Label, + Modal, + Textarea, + TextInput, } from 'flowbite-react' import Link from 'next/link' import { DIES } from 'phpdie' @@ -14,434 +14,394 @@ import React, { useEffect } from 'react' import { Controller, useForm } from 'react-hook-form' import { toast } from 'react-toastify' import { - INVALIDATE_CACHE_OPTION, - shouldInvalidate, + INVALIDATE_CACHE_OPTION, + shouldInvalidate, } from '@/components/cache-control' import { - AdminUpdateNodeVersionBody, - NodeVersion, - useAdminUpdateNodeVersion, - useGetNode, + AdminUpdateNodeVersionBody, + NodeVersion, + useAdminUpdateNodeVersion, + useGetNode, } from '@/src/api/generated' import { useNextTranslation } from '@/src/hooks/i18n' interface FormData { - supported_comfyui_frontend_version: string - supported_comfyui_version: string - supported_os: string - supported_accelerators: string + supported_comfyui_frontend_version: string + supported_comfyui_version: string + supported_os: string + supported_accelerators: string } interface NodeVersionCompatibilityEditModalProps { - isOpen: boolean - onClose: () => void - nodeVersion: NodeVersion | null - onSuccess?: () => void + isOpen: boolean + onClose: () => void + nodeVersion: NodeVersion | null + onSuccess?: () => void } export default function NodeVersionCompatibilityEditModal({ - isOpen, - onClose, - nodeVersion, - onSuccess, + isOpen, + onClose, + nodeVersion, + onSuccess, }: NodeVersionCompatibilityEditModalProps) { - const { t } = useNextTranslation() - const adminUpdateNodeVersion = useAdminUpdateNodeVersion() - const queryClient = useQueryClient() + const { t } = useNextTranslation() + const adminUpdateNodeVersion = useAdminUpdateNodeVersion() + const queryClient = useQueryClient() - // Fetch node information to get latest version - const { data: nodeData } = useGetNode( - nodeVersion?.node_id || '', - {}, - { - query: { enabled: !!nodeVersion?.node_id && isOpen }, - } + // Fetch node information to get latest version + const { data: nodeData } = useGetNode( + nodeVersion?.node_id || '', + {}, + { + query: { enabled: !!nodeVersion?.node_id && isOpen }, + } + ) + + const { + control, + handleSubmit, + reset, + formState: { isDirty }, + } = useForm({ + defaultValues: { + supported_comfyui_frontend_version: + nodeVersion?.supported_comfyui_frontend_version || '', + supported_comfyui_version: nodeVersion?.supported_comfyui_version || '', + supported_os: nodeVersion?.supported_os?.join('\n') || '', + supported_accelerators: + nodeVersion?.supported_accelerators?.join('\n') || '', + }, + }) + + // Reset form when nodeVersion changes + useEffect(() => { + if (nodeVersion && isOpen) { + reset({ + supported_comfyui_frontend_version: + nodeVersion.supported_comfyui_frontend_version || '', + supported_comfyui_version: nodeVersion.supported_comfyui_version || '', + supported_os: nodeVersion.supported_os?.join('\n') || '', + supported_accelerators: + nodeVersion.supported_accelerators?.join('\n') || '', + }) + } + }, [nodeVersion, isOpen, reset]) + + const normalizeSupportList = (text: string) => { + return ( + text + .split('\n') + .map((item) => item.trim()) + .filter(Boolean) + .toSorted() + // uniq + .reduce((acc, item) => { + if (!acc.includes(item)) acc.push(item) + return acc + }, []) ) + } - const { - control, - handleSubmit, - reset, - formState: { isDirty }, - } = useForm({ - defaultValues: { - supported_comfyui_frontend_version: - nodeVersion?.supported_comfyui_frontend_version || '', - supported_comfyui_version: - nodeVersion?.supported_comfyui_version || '', - supported_os: nodeVersion?.supported_os?.join('\n') || '', - supported_accelerators: - nodeVersion?.supported_accelerators?.join('\n') || '', + const onSubmit = async (data: FormData) => { + if (!nodeVersion) return + + try { + await adminUpdateNodeVersion.mutateAsync({ + nodeId: + nodeVersion.node_id || + DIES(toast.error.bind(toast), t('Node ID is required')), + versionNumber: + nodeVersion.version || + DIES(toast.error.bind(toast), t('Node Version Number is required')), + data: { + supported_comfyui_frontend_version: + data.supported_comfyui_frontend_version, + supported_comfyui_version: data.supported_comfyui_version, + supported_os: normalizeSupportList(data.supported_os), + supported_accelerators: normalizeSupportList( + data.supported_accelerators + ), }, - }) + }) - // Reset form when nodeVersion changes - useEffect(() => { - if (nodeVersion && isOpen) { - reset({ - supported_comfyui_frontend_version: - nodeVersion.supported_comfyui_frontend_version || '', - supported_comfyui_version: - nodeVersion.supported_comfyui_version || '', - supported_os: nodeVersion.supported_os?.join('\n') || '', - supported_accelerators: - nodeVersion.supported_accelerators?.join('\n') || '', - }) - } - }, [nodeVersion, isOpen, reset]) + // Cache-busting invalidation for cached endpoints + queryClient.fetchQuery( + shouldInvalidate.getListNodeVersionsQueryOptions( + nodeVersion.node_id!, + undefined, + INVALIDATE_CACHE_OPTION + ) + ) - const normalizeSupportList = (text: string) => { - return ( - text - .split('\n') - .map((item) => item.trim()) - .filter(Boolean) - .toSorted() - // uniq - .reduce((acc, item) => { - if (!acc.includes(item)) acc.push(item) - return acc - }, []) + toast.success(t('Updated node version compatibility')) + onClose() + onSuccess?.() + } catch (e) { + if (e instanceof AxiosError) { + const errorMessage = e.response?.data?.message || t('Unknown error') + toast.error( + t('Failed to update node version: {{error}}', { + error: errorMessage, + }) ) + return + } + toast.error(t('Failed to update node version')) } + } - const onSubmit = async (data: FormData) => { - if (!nodeVersion) return + const handleClose = () => { + reset() + onClose() + } - try { - await adminUpdateNodeVersion.mutateAsync({ - nodeId: - nodeVersion.node_id || - DIES(toast.error.bind(toast), t('Node ID is required')), - versionNumber: - nodeVersion.version || - DIES( - toast.error.bind(toast), - t('Node Version Number is required') - ), - data: { - supported_comfyui_frontend_version: - data.supported_comfyui_frontend_version, - supported_comfyui_version: data.supported_comfyui_version, - supported_os: normalizeSupportList(data.supported_os), - supported_accelerators: normalizeSupportList( - data.supported_accelerators - ), - }, - }) + if (!nodeVersion) return null - // Cache-busting invalidation for cached endpoints - queryClient.fetchQuery( - shouldInvalidate.getListNodeVersionsQueryOptions( - nodeVersion.node_id!, - undefined, - INVALIDATE_CACHE_OPTION - ) - ) - - toast.success(t('Updated node version compatibility')) - onClose() - onSuccess?.() - } catch (e) { - if (e instanceof AxiosError) { - const errorMessage = - e.response?.data?.message || t('Unknown error') - toast.error( - t('Failed to update node version: {{error}}', { - error: errorMessage, - }) - ) - return + return ( + + {t('Edit Node Version Compatibility')} +
{ + // allow ctrl+Enter to submit the form + if (e.key === 'Enter' && (e.ctrlKey || e.metaKey)) { + // check if focus is on a text input or textarea + const activeElement = document.activeElement + if ( + activeElement instanceof HTMLInputElement || + activeElement instanceof HTMLTextAreaElement + ) { + e.preventDefault() + handleSubmit(onSubmit)() } - toast.error(t('Failed to update node version')) - } - } - - const handleClose = () => { - reset() - onClose() - } + } + }} + > + +
+
+
+ + {t('Specification Reference:')} + {' '} + + {t('pyproject.toml - ComfyUI')} + +
+
- if (!nodeVersion) return null +
+ +
+ {nodeVersion.node_id}@{nodeVersion.version} +
+
- return ( - - {t('Edit Node Version Compatibility')} - { - // allow ctrl+Enter to submit the form - if (e.key === 'Enter' && (e.ctrlKey || e.metaKey)) { - // check if focus is on a text input or textarea - const activeElement = document.activeElement - if ( - activeElement instanceof HTMLInputElement || - activeElement instanceof HTMLTextAreaElement - ) { - e.preventDefault() - handleSubmit(onSubmit)() - } - } - }} - > - -
-
-
- - {t('Specification Reference:')} - {' '} - - {t('pyproject.toml - ComfyUI')} - -
+ {/* Latest Version Compatibility Info */} + {nodeData?.latest_version && + nodeData.latest_version.version !== nodeVersion.version && ( + +
+
+
+ {t('Latest Version Compatibility Reference')}:{' '} + {`v${nodeData.latest_version.version}`} +
+ +
+
+ {nodeData.latest_version + .supported_comfyui_frontend_version && ( +
+ + {t('ComfyUI Frontend')}: + {' '} + { + nodeData.latest_version + .supported_comfyui_frontend_version + }
- + )} + {nodeData.latest_version.supported_comfyui_version && (
- -
- {nodeVersion.node_id}@{nodeVersion.version} -
+ {t('ComfyUI')}:{' '} + {nodeData.latest_version.supported_comfyui_version}
- - {/* Latest Version Compatibility Info */} - {nodeData?.latest_version && - nodeData.latest_version.version !== - nodeVersion.version && ( - -
-
-
- {t( - 'Latest Version Compatibility Reference' - )} - :{' '} - {`v${nodeData.latest_version.version}`} -
- -
-
- {nodeData.latest_version - .supported_comfyui_frontend_version && ( -
- - {t('ComfyUI Frontend')}: - {' '} - { - nodeData.latest_version - .supported_comfyui_frontend_version - } -
- )} - {nodeData.latest_version - .supported_comfyui_version && ( -
- - {t('ComfyUI')}: - {' '} - { - nodeData.latest_version - .supported_comfyui_version - } -
- )} - {nodeData.latest_version - .supported_os && - nodeData.latest_version - .supported_os.length > - 0 && ( -
- - {t('OS')}: - {' '} - {nodeData.latest_version.supported_os.join( - ', ' - )} -
- )} - {nodeData.latest_version - .supported_accelerators && - nodeData.latest_version - .supported_accelerators - .length > 0 && ( -
- - {t('Accelerators')}: - {' '} - {nodeData.latest_version.supported_accelerators.join( - ', ' - )} -
- )} -
-
- {t( - 'Consider using these values for better compatibility with the latest version' - )} -
-
-
+ )} + {nodeData.latest_version.supported_os && + nodeData.latest_version.supported_os.length > 0 && ( +
+ {t('OS')}:{' '} + {nodeData.latest_version.supported_os.join(', ')} +
+ )} + {nodeData.latest_version.supported_accelerators && + nodeData.latest_version.supported_accelerators.length > + 0 && ( +
+ + {t('Accelerators')}: + {' '} + {nodeData.latest_version.supported_accelerators.join( + ', ' )} +
+ )} +
+
+ {t( + 'Consider using these values for better compatibility with the latest version' + )} +
+
+
+ )} - {nodeData?.latest_version && - nodeData.latest_version.version === - nodeVersion.version && ( - -
- {t('This is the latest version')} -
-
- {t( - 'You are editing compatibility settings for the most recent version of this node' - )} -
-
- )} + {nodeData?.latest_version && + nodeData.latest_version.version === nodeVersion.version && ( + +
+ {t('This is the latest version')} +
+
+ {t( + 'You are editing compatibility settings for the most recent version of this node' + )} +
+
+ )} -
- - ( - - )} - /> -
+
+ + ( + + )} + /> +
-
- - ( - - )} - /> -
+
+ + ( + + )} + /> +
-
- -
- {t('Enter one OS per line')} -
- ( -