From bdc35726fed812e4793c9c4832c64953fbb0003e Mon Sep 17 00:00:00 2001 From: shaadcode Date: Wed, 29 Oct 2025 13:48:14 +0330 Subject: [PATCH 1/4] perf(build): improved eslint performance --- .gitignore | 1 + .prettierrc.json | 6 - .vscode/extensions.json | 2 +- .vscode/settings.json | 145 +- .../admin/[[...segments]]/not-found.tsx | 25 +- .../(payload)/admin/[[...segments]]/page.tsx | 25 +- dev/app/(payload)/admin/importMap.js | 4 +- dev/app/(payload)/api/[...slug]/route.ts | 18 +- .../(payload)/api/graphql-playground/route.ts | 8 +- dev/app/(payload)/api/graphql/route.ts | 8 +- dev/app/(payload)/layout.tsx | 29 +- dev/app/my-route/route.ts | 12 +- dev/collections/Media.ts | 17 +- dev/collections/Users.ts | 4 +- dev/helpers/NextRESTClient.ts | 179 +- dev/helpers/access/anyone.ts | 4 +- dev/helpers/access/authenticated.ts | 4 +- .../access/authenticatedOrPublished.ts | 8 +- dev/helpers/credentials.ts | 2 +- dev/helpers/testEmailAdapter.ts | 37 +- dev/next.config.ts | 14 +- dev/node_modules/.modules.yaml | 20 - dev/node_modules/.pnpm-workspace-state.json | 31 - dev/node_modules/.pnpm/lock.yaml | 16 - dev/payload.config.ts | 33 +- dev/pnpm-lock.yaml | 16 - dev/pnpm-workspace.yaml | 2 - dev/seed.ts | 10 +- dev/server.mts | 38 +- dev/tsconfig.json | 29 +- eslint.config.js | 48 - eslint.config.mjs | 77 + lint-staged.config.js | 2 +- package-lock.json | 7665 +++++++---------- package.json | 65 +- src/Constant/Constant.ts | 93 +- src/Constant/automation.ts | 4 +- src/collections/access/index.ts | 6 +- src/collections/auditor.ts | 33 +- src/collections/hooks/beforeChange.ts | 38 +- src/core/buffer/bufferManager.test.ts | 93 +- src/core/buffer/bufferManager.ts | 76 +- .../buffer/helpers/handleBufferDebugMode.ts | 19 +- src/core/events/emitter.ts | 19 +- .../collections/helpers/emitWrapper.ts | 36 +- .../collections/helpers/handleDebugMode.ts | 25 +- .../collections/helpers/isOperationEnabled.ts | 26 +- src/core/log-builders/collections/hooks.ts | 155 +- src/core/log-builders/collections/shared.ts | 87 +- src/index.ts | 39 +- src/pluginUtils/configHelpers.ts | 111 +- src/types/pluginOptions.ts | 474 +- src/types/types.d.ts | 8 +- src/utils/prettyDebugLog.ts | 30 +- src/utils/toMS.ts | 32 +- tsconfig.json | 22 +- vitest.config.ts | 12 +- 57 files changed, 4239 insertions(+), 5803 deletions(-) delete mode 100644 .prettierrc.json delete mode 100644 dev/node_modules/.modules.yaml delete mode 100644 dev/node_modules/.pnpm-workspace-state.json delete mode 100644 dev/node_modules/.pnpm/lock.yaml delete mode 100644 dev/pnpm-lock.yaml delete mode 100644 dev/pnpm-workspace.yaml delete mode 100644 eslint.config.js create mode 100644 eslint.config.mjs diff --git a/.gitignore b/.gitignore index 70a5579..bc4d5e5 100644 --- a/.gitignore +++ b/.gitignore @@ -43,3 +43,4 @@ yarn-error.log* /dev/media .npmrc +.cache/ diff --git a/.prettierrc.json b/.prettierrc.json deleted file mode 100644 index cb8ee26..0000000 --- a/.prettierrc.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "singleQuote": true, - "trailingComma": "all", - "printWidth": 100, - "semi": false -} diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 1d7ac85..940260d 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,3 +1,3 @@ { - "recommendations": ["dbaeumer.vscode-eslint", "esbenp.prettier-vscode"] + "recommendations": ["dbaeumer.vscode-eslint"] } diff --git a/.vscode/settings.json b/.vscode/settings.json index 5918b30..ce06db4 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,40 +1,127 @@ { - "npm.packageManager": "pnpm", - "editor.defaultFormatter": "esbenp.prettier-vscode", - "[typescript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode", - "editor.formatOnSave": true, - "editor.codeActionsOnSave": { - "source.fixAll.eslint": "explicit" - } + "editor.tabSize": 2, + // Disable the default formatter, use eslint instead + "prettier.enable": false, + // Auto fix + "editor.formatOnSave": true, + "editor.defaultFormatter": "dbaeumer.vscode-eslint", + "editor.codeActionsOnSave": { + "source.organizeImports": "never", + "source.fixAll.eslint": "always", + "source.removeUnusedImports": "always" }, + "eslint.enable": true, + "eslint.probe": [ + "astro", + "javascript", + "javascriptreact", + "typescript", + "typescriptreact", + "html", + "mdx", + "vue", + "markdown", + "json", + "jsonc" + ], + "typescript.validate.enable": true, + "javascript.validate.enable": true, "[typescriptreact]": { - "editor.defaultFormatter": "esbenp.prettier-vscode", - "editor.formatOnSave": true, - "editor.codeActionsOnSave": { - "source.fixAll.eslint": "explicit" - } + "editor.defaultFormatter": "dbaeumer.vscode-eslint" + }, + "[typescript]": { + "editor.defaultFormatter": "dbaeumer.vscode-eslint" + }, + "[javascriptreact]": { + "editor.defaultFormatter": "dbaeumer.vscode-eslint" }, "[javascript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode", - "editor.formatOnSave": true, - "editor.codeActionsOnSave": { - "source.fixAll.eslint": "explicit" - } + "editor.defaultFormatter": "vscode.typescript-language-features" }, "[json]": { - "editor.defaultFormatter": "esbenp.prettier-vscode", - "editor.formatOnSave": true + "editor.quickSuggestions": { + "strings": true + }, + "editor.defaultFormatter": "vscode.json-language-features" }, + // Silent the stylistic rules in your IDE, but still auto fix them + "eslint.rules.customizations": [ + { + "rule": "style/*", + "severity": "off", + "fixable": true + }, + { + "rule": "format/*", + "severity": "off", + "fixable": true + }, + { + "rule": "*-indent", + "severity": "off", + "fixable": true + }, + { + "rule": "*-spacing", + "severity": "off", + "fixable": true + }, + { + "rule": "*-spaces", + "severity": "off", + "fixable": true + }, + { + "rule": "*-order", + "severity": "off", + "fixable": true + }, + { + "rule": "*-dangle", + "severity": "off", + "fixable": true + }, + { + "rule": "*-newline", + "severity": "off", + "fixable": true + }, + { + "rule": "*quotes", + "severity": "off", + "fixable": true + }, + { + "rule": "*semi", + "severity": "off", + "fixable": true + } + ], + // Enable eslint for all supported languages + "eslint.validate": [ + "javascript", + "javascriptreact", + "typescript", + "typescriptreact", + "vue", + "html", + "markdown", + "json", + "jsonc", + "yaml", + "toml", + "xml", + "gql", + "graphql", + "astro", + "svelte", + "css", + "less", + "scss", + "pcss", + "postcss" + ], "[jsonc]": { - "editor.defaultFormatter": "esbenp.prettier-vscode", - "editor.formatOnSave": true + "editor.defaultFormatter": "vscode.json-language-features" }, - "editor.formatOnSaveMode": "file", - "typescript.tsdk": "node_modules/typescript/lib", - "[javascript][typescript][typescriptreact]": { - "editor.codeActionsOnSave": { - "source.fixAll.eslint": "explicit" - } - } } diff --git a/dev/app/(payload)/admin/[[...segments]]/not-found.tsx b/dev/app/(payload)/admin/[[...segments]]/not-found.tsx index 180e6f8..8d21820 100644 --- a/dev/app/(payload)/admin/[[...segments]]/not-found.tsx +++ b/dev/app/(payload)/admin/[[...segments]]/not-found.tsx @@ -1,25 +1,24 @@ /* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */ /* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */ -import type { Metadata } from 'next' +import type { Metadata } from 'next'; +import config from '@payload-config'; +import { generatePageMetadata, NotFoundPage } from '@payloadcms/next/views'; -import config from '@payload-config' -import { generatePageMetadata, NotFoundPage } from '@payloadcms/next/views' +import { importMap } from '../importMap.js'; -import { importMap } from '../importMap.js' - -type Args = { +interface Args { params: Promise<{ - segments: string[] - }> + segments: string[]; + }>; searchParams: Promise<{ - [key: string]: string | string[] - }> + [key: string]: string | string[]; + }>; } export const generateMetadata = ({ params, searchParams }: Args): Promise => - generatePageMetadata({ config, params, searchParams }) + generatePageMetadata({ config, params, searchParams }); const NotFound = ({ params, searchParams }: Args) => - NotFoundPage({ config, importMap, params, searchParams }) + NotFoundPage({ config, importMap, params, searchParams }); -export default NotFound +export default NotFound; diff --git a/dev/app/(payload)/admin/[[...segments]]/page.tsx b/dev/app/(payload)/admin/[[...segments]]/page.tsx index e59b2d3..44023b2 100644 --- a/dev/app/(payload)/admin/[[...segments]]/page.tsx +++ b/dev/app/(payload)/admin/[[...segments]]/page.tsx @@ -1,25 +1,24 @@ /* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */ /* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */ -import type { Metadata } from 'next' +import type { Metadata } from 'next'; +import config from '@payload-config'; +import { generatePageMetadata, RootPage } from '@payloadcms/next/views'; -import config from '@payload-config' -import { generatePageMetadata, RootPage } from '@payloadcms/next/views' +import { importMap } from '../importMap.js'; -import { importMap } from '../importMap.js' - -type Args = { +interface Args { params: Promise<{ - segments: string[] - }> + segments: string[]; + }>; searchParams: Promise<{ - [key: string]: string | string[] - }> + [key: string]: string | string[]; + }>; } export const generateMetadata = ({ params, searchParams }: Args): Promise => - generatePageMetadata({ config, params, searchParams }) + generatePageMetadata({ config, params, searchParams }); const Page = ({ params, searchParams }: Args) => - RootPage({ config, importMap, params, searchParams }) + RootPage({ config, importMap, params, searchParams }); -export default Page +export default Page; diff --git a/dev/app/(payload)/admin/importMap.js b/dev/app/(payload)/admin/importMap.js index a3bc0e8..f8db2e2 100644 --- a/dev/app/(payload)/admin/importMap.js +++ b/dev/app/(payload)/admin/importMap.js @@ -1,5 +1,3 @@ - - export const importMap = { -} +}; diff --git a/dev/app/(payload)/api/[...slug]/route.ts b/dev/app/(payload)/api/[...slug]/route.ts index e58c50f..42ce02f 100644 --- a/dev/app/(payload)/api/[...slug]/route.ts +++ b/dev/app/(payload)/api/[...slug]/route.ts @@ -1,7 +1,7 @@ /* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */ /* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */ -import config from '@payload-config' -import '@payloadcms/next/css' +import config from '@payload-config'; +import '@payloadcms/next/css'; import { REST_DELETE, REST_GET, @@ -9,11 +9,11 @@ import { REST_PATCH, REST_POST, REST_PUT, -} from '@payloadcms/next/routes' +} from '@payloadcms/next/routes'; -export const GET = REST_GET(config) -export const POST = REST_POST(config) -export const DELETE = REST_DELETE(config) -export const PATCH = REST_PATCH(config) -export const PUT = REST_PUT(config) -export const OPTIONS = REST_OPTIONS(config) +export const GET = REST_GET(config); +export const POST = REST_POST(config); +export const DELETE = REST_DELETE(config); +export const PATCH = REST_PATCH(config); +export const PUT = REST_PUT(config); +export const OPTIONS = REST_OPTIONS(config); diff --git a/dev/app/(payload)/api/graphql-playground/route.ts b/dev/app/(payload)/api/graphql-playground/route.ts index 17d2954..ef97193 100644 --- a/dev/app/(payload)/api/graphql-playground/route.ts +++ b/dev/app/(payload)/api/graphql-playground/route.ts @@ -1,7 +1,7 @@ /* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */ /* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */ -import config from '@payload-config' -import '@payloadcms/next/css' -import { GRAPHQL_PLAYGROUND_GET } from '@payloadcms/next/routes' +import config from '@payload-config'; +import '@payloadcms/next/css'; +import { GRAPHQL_PLAYGROUND_GET } from '@payloadcms/next/routes'; -export const GET = GRAPHQL_PLAYGROUND_GET(config) +export const GET = GRAPHQL_PLAYGROUND_GET(config); diff --git a/dev/app/(payload)/api/graphql/route.ts b/dev/app/(payload)/api/graphql/route.ts index 2069ff8..89f7c29 100644 --- a/dev/app/(payload)/api/graphql/route.ts +++ b/dev/app/(payload)/api/graphql/route.ts @@ -1,8 +1,8 @@ /* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */ /* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */ -import config from '@payload-config' -import { GRAPHQL_POST, REST_OPTIONS } from '@payloadcms/next/routes' +import config from '@payload-config'; +import { GRAPHQL_POST, REST_OPTIONS } from '@payloadcms/next/routes'; -export const POST = GRAPHQL_POST(config) +export const POST = GRAPHQL_POST(config); -export const OPTIONS = REST_OPTIONS(config) +export const OPTIONS = REST_OPTIONS(config); diff --git a/dev/app/(payload)/layout.tsx b/dev/app/(payload)/layout.tsx index 7f8698e..e6bface 100644 --- a/dev/app/(payload)/layout.tsx +++ b/dev/app/(payload)/layout.tsx @@ -1,32 +1,31 @@ -import type { ServerFunctionClient } from 'payload' - -import '@payloadcms/next/css' +import React from 'react'; +import '@payloadcms/next/css'; /* THIS FILE WAS GENERATED AUTOMATICALLY BY PAYLOAD. */ /* DO NOT MODIFY IT BECAUSE IT COULD BE REWRITTEN AT ANY TIME. */ -import config from '@payload-config' -import { handleServerFunctions, RootLayout } from '@payloadcms/next/layouts' -import React from 'react' +import config from '@payload-config'; +import type { ServerFunctionClient } from 'payload'; +import { handleServerFunctions, RootLayout } from '@payloadcms/next/layouts'; -import { importMap } from './admin/importMap.js' -import './custom.scss' +import { importMap } from './admin/importMap.js'; +import './custom.scss'; -type Args = { - children: React.ReactNode +interface Args { + children: React.ReactNode; } const serverFunction: ServerFunctionClient = async function (args) { - 'use server' + 'use server'; return handleServerFunctions({ ...args, config, importMap, - }) -} + }); +}; const Layout = ({ children }: Args) => ( {children} -) +); -export default Layout +export default Layout; diff --git a/dev/app/my-route/route.ts b/dev/app/my-route/route.ts index a6422f3..737d624 100644 --- a/dev/app/my-route/route.ts +++ b/dev/app/my-route/route.ts @@ -1,14 +1,14 @@ -import configPromise from '@payload-config' -import { getPayload } from 'payload' +import { getPayload } from 'payload'; +import configPromise from '@payload-config'; export const GET = async () => { const payload = await getPayload({ config: configPromise, - }) + }); const data = await payload.find({ collection: 'users', - }) + }); - return Response.json(data) -} + return Response.json(data); +}; diff --git a/dev/collections/Media.ts b/dev/collections/Media.ts index 8cdbd19..6ab362d 100644 --- a/dev/collections/Media.ts +++ b/dev/collections/Media.ts @@ -1,12 +1,11 @@ -import type { CollectionConfig } from 'payload' +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import type { CollectionConfig } from 'payload'; +import { anyone } from 'helpers/access/anyone.js'; +import { authenticated } from 'helpers/access/authenticated.js'; -import { anyone } from 'helpers/access/anyone.js' -import { authenticated } from 'helpers/access/authenticated.js' -import path from 'path' -import { fileURLToPath } from 'url' - -const filename = fileURLToPath(import.meta.url) -const dirname = path.dirname(filename) +const filename = fileURLToPath(import.meta.url); +const dirname = path.dirname(filename); export const media: CollectionConfig = { slug: 'media', access: { @@ -30,4 +29,4 @@ export const media: CollectionConfig = { upload: { staticDir: path.resolve(dirname, 'media'), }, -} +}; diff --git a/dev/collections/Users.ts b/dev/collections/Users.ts index f9a96b9..152519c 100644 --- a/dev/collections/Users.ts +++ b/dev/collections/Users.ts @@ -1,4 +1,4 @@ -import type { CollectionConfig } from 'payload' +import type { CollectionConfig } from 'payload'; export const users: CollectionConfig = { slug: 'users', @@ -13,4 +13,4 @@ export const users: CollectionConfig = { saveToJWT: true, }, ], -} +}; diff --git a/dev/helpers/NextRESTClient.ts b/dev/helpers/NextRESTClient.ts index d96ac71..72135ac 100644 --- a/dev/helpers/NextRESTClient.ts +++ b/dev/helpers/NextRESTClient.ts @@ -1,6 +1,6 @@ -import type { JoinQuery, PopulateType, SanitizedConfig, SelectType, Where } from 'payload' -import type { ParsedQs } from 'qs-esm' - +import * as qs from 'qs-esm'; +import type { ParsedQs } from 'qs-esm'; +import type { JoinQuery, PopulateType, SanitizedConfig, SelectType, Where } from 'payload'; import { REST_DELETE as createDELETE, REST_GET as createGET, @@ -8,30 +8,29 @@ import { REST_PATCH as createPATCH, REST_POST as createPOST, REST_PUT as createPUT, -} from '@payloadcms/next/routes' -import * as qs from 'qs-esm' +} from '@payloadcms/next/routes'; -import { devUser } from './credentials.js' +import { devUser } from './credentials.js'; -type ValidPath = `/${string}` -type RequestOptions = { - auth?: boolean +type ValidPath = `/${string}`; +interface RequestOptions { + auth?: boolean; query?: { - depth?: number - fallbackLocale?: string - joins?: JoinQuery - limit?: number - locale?: string - page?: number - populate?: PopulateType - select?: SelectType - sort?: string - where?: Where - } + depth?: number; + fallbackLocale?: string; + joins?: JoinQuery; + limit?: number; + locale?: string; + page?: number; + populate?: PopulateType; + select?: SelectType; + sort?: string; + where?: Where; + }; } -type FileArg = { - file?: Omit +interface FileArg { + file?: Omit; } function generateQueryString(query: RequestOptions['query'], params?: ParsedQs): string { @@ -43,60 +42,60 @@ function generateQueryString(query: RequestOptions['query'], params?: ParsedQs): { addQueryPrefix: true, }, - ) + ); } export class NextRESTClient { private _DELETE: ( request: Request, args: { params: Promise<{ slug: string[] }> }, - ) => Promise + ) => Promise; private _GET: ( request: Request, args: { params: Promise<{ slug: string[] }> }, - ) => Promise + ) => Promise; - private _GRAPHQL_POST: (request: Request) => Promise + private _GRAPHQL_POST: (request: Request) => Promise; private _PATCH: ( request: Request, args: { params: Promise<{ slug: string[] }> }, - ) => Promise + ) => Promise; private _POST: ( request: Request, args: { params: Promise<{ slug: string[] }> }, - ) => Promise + ) => Promise; private _PUT: ( request: Request, args: { params: Promise<{ slug: string[] }> }, - ) => Promise + ) => Promise; - private readonly config: SanitizedConfig + private readonly config: SanitizedConfig; - private token?: string + private token?: string; - serverURL: string = 'http://localhost:3000' + serverURL: string = 'http://localhost:3000'; constructor(config: SanitizedConfig) { - this.config = config + this.config = config; if (config?.serverURL) { - this.serverURL = config.serverURL + this.serverURL = config.serverURL; } - this._GET = createGET(config) - this._POST = createPOST(config) - this._DELETE = createDELETE(config) - this._PATCH = createPATCH(config) - this._PUT = createPUT(config) - this._GRAPHQL_POST = createGraphqlPOST(config) + this._GET = createGET(config); + this._POST = createPOST(config); + this._DELETE = createDELETE(config); + this._PATCH = createPATCH(config); + this._PUT = createPUT(config); + this._GRAPHQL_POST = createGraphqlPOST(config); } private buildHeaders(options: FileArg & RequestInit & RequestOptions): Headers { const defaultHeaders = { 'Content-Type': 'application/json', - } + }; const headers = new Headers({ ...(options?.file ? { @@ -104,65 +103,65 @@ export class NextRESTClient { } : defaultHeaders), ...(options?.headers || {}), - }) + }); if (options.auth !== false && this.token) { - headers.set('Authorization', `JWT ${this.token}`) + headers.set('Authorization', `JWT ${this.token}`); } if (options.auth === false) { - headers.set('DisableAutologin', 'true') + headers.set('DisableAutologin', 'true'); } - return headers + return headers; } private generateRequestParts(path: ValidPath): { - params?: ParsedQs - slug: string[] - url: string + params?: ParsedQs; + slug: string[]; + url: string; } { - const [slugs, params] = path.slice(1).split('?') - const url = `${this.serverURL}${this.config.routes.api}/${slugs}` + const [slugs, params] = path.slice(1).split('?'); + const url = `${this.serverURL}${this.config.routes.api}/${slugs}`; return { slug: slugs.split('/'), params: params ? qs.parse(params) : undefined, url, - } + }; } async DELETE(path: ValidPath, options: RequestInit & RequestOptions = {}): Promise { - const { slug, params, url } = this.generateRequestParts(path) - const { query, ...rest } = options || {} - const queryParams = generateQueryString(query, params) + const { slug, params, url } = this.generateRequestParts(path); + const { query, ...rest } = options || {}; + const queryParams = generateQueryString(query, params); const request = new Request(`${url}${queryParams}`, { ...rest, headers: this.buildHeaders(options), method: 'DELETE', - }) - return this._DELETE(request, { params: Promise.resolve({ slug }) }) + }); + return this._DELETE(request, { params: Promise.resolve({ slug }) }); } async GET( path: ValidPath, options: Omit & RequestOptions = {}, ): Promise { - const { slug, params, url } = this.generateRequestParts(path) - const { query, ...rest } = options || {} - const queryParams = generateQueryString(query, params) + const { slug, params, url } = this.generateRequestParts(path); + const { query, ...rest } = options || {}; + const queryParams = generateQueryString(query, params); const request = new Request(`${url}${queryParams}`, { ...rest, headers: this.buildHeaders(options), method: 'GET', - }) - return this._GET(request, { params: Promise.resolve({ slug }) }) + }); + return this._GET(request, { params: Promise.resolve({ slug }) }); } async GRAPHQL_POST(options: RequestInit & RequestOptions): Promise { - const { query, ...rest } = options - const queryParams = generateQueryString(query, {}) + const { query, ...rest } = options; + const queryParams = generateQueryString(query, {}); const request = new Request( `${this.serverURL}${this.config.routes.api}${this.config.routes.graphQL}${queryParams}`, { @@ -170,8 +169,8 @@ export class NextRESTClient { headers: this.buildHeaders(options), method: 'POST', }, - ) - return this._GRAPHQL_POST(request) + ); + return this._GRAPHQL_POST(request); } async login({ @@ -179,67 +178,67 @@ export class NextRESTClient { credentials, }: { credentials?: { - email: string - password: string - } - slug: string + email: string; + password: string; + }; + slug: string; }): Promise<{ [key: string]: unknown }> { const response = await this.POST(`/${slug}/login`, { body: JSON.stringify( credentials ? { ...credentials } : { email: devUser.email, password: devUser.password }, ), - }) - const result = await response.json() + }); + const result = await response.json(); - this.token = result.token + this.token = result.token; if (!result.token) { // If the token is not in the response body, then we can extract it from the cookies - const setCookie = response.headers.get('Set-Cookie') - const tokenMatchResult = setCookie?.match(/payload-token=(?.+?);/) - this.token = tokenMatchResult?.groups?.token + const setCookie = response.headers.get('Set-Cookie'); + const tokenMatchResult = setCookie?.match(/payload-token=(?.+?);/); + this.token = tokenMatchResult?.groups?.token; } - return result + return result; } async PATCH(path: ValidPath, options: FileArg & RequestInit & RequestOptions): Promise { - const { slug, params, url } = this.generateRequestParts(path) - const { query, ...rest } = options - const queryParams = generateQueryString(query, params) + const { slug, params, url } = this.generateRequestParts(path); + const { query, ...rest } = options; + const queryParams = generateQueryString(query, params); const request = new Request(`${url}${queryParams}`, { ...rest, headers: this.buildHeaders(options), method: 'PATCH', - }) - return this._PATCH(request, { params: Promise.resolve({ slug }) }) + }); + return this._PATCH(request, { params: Promise.resolve({ slug }) }); } async POST( path: ValidPath, options: FileArg & RequestInit & RequestOptions = {}, ): Promise { - const { slug, params, url } = this.generateRequestParts(path) - const queryParams = generateQueryString({}, params) + const { slug, params, url } = this.generateRequestParts(path); + const queryParams = generateQueryString({}, params); const request = new Request(`${url}${queryParams}`, { ...options, headers: this.buildHeaders(options), method: 'POST', - }) - return this._POST(request, { params: Promise.resolve({ slug }) }) + }); + return this._POST(request, { params: Promise.resolve({ slug }) }); } async PUT(path: ValidPath, options: FileArg & RequestInit & RequestOptions): Promise { - const { slug, params, url } = this.generateRequestParts(path) - const { query, ...rest } = options - const queryParams = generateQueryString(query, params) + const { slug, params, url } = this.generateRequestParts(path); + const { query, ...rest } = options; + const queryParams = generateQueryString(query, params); const request = new Request(`${url}${queryParams}`, { ...rest, headers: this.buildHeaders(options), method: 'PUT', - }) - return this._PUT(request, { params: Promise.resolve({ slug }) }) + }); + return this._PUT(request, { params: Promise.resolve({ slug }) }); } } diff --git a/dev/helpers/access/anyone.ts b/dev/helpers/access/anyone.ts index bf37c3a..bd0a578 100644 --- a/dev/helpers/access/anyone.ts +++ b/dev/helpers/access/anyone.ts @@ -1,3 +1,3 @@ -import type { Access } from 'payload' +import type { Access } from 'payload'; -export const anyone: Access = () => true +export const anyone: Access = () => true; diff --git a/dev/helpers/access/authenticated.ts b/dev/helpers/access/authenticated.ts index 6fa0578..bc7e82c 100644 --- a/dev/helpers/access/authenticated.ts +++ b/dev/helpers/access/authenticated.ts @@ -3,5 +3,5 @@ // type isAuthenticated = (args: AccessArgs) => boolean export const authenticated = ({ req: { user } }) => { - return Boolean(user) -} + return Boolean(user); +}; diff --git a/dev/helpers/access/authenticatedOrPublished.ts b/dev/helpers/access/authenticatedOrPublished.ts index e49198f..2fc2b74 100644 --- a/dev/helpers/access/authenticatedOrPublished.ts +++ b/dev/helpers/access/authenticatedOrPublished.ts @@ -1,13 +1,13 @@ -import type { Access } from 'payload' +import type { Access } from 'payload'; export const authenticatedOrPublished: Access = ({ req: { user } }) => { if (user) { - return true + return true; } return { _status: { equals: 'published', }, - } -} + }; +}; diff --git a/dev/helpers/credentials.ts b/dev/helpers/credentials.ts index 7ccbcae..5fb5768 100644 --- a/dev/helpers/credentials.ts +++ b/dev/helpers/credentials.ts @@ -1,4 +1,4 @@ export const devUser = { email: 'dev@payloadcms.com', password: 'test', -} +}; diff --git a/dev/helpers/testEmailAdapter.ts b/dev/helpers/testEmailAdapter.ts index 693cf97..8a9d020 100644 --- a/dev/helpers/testEmailAdapter.ts +++ b/dev/helpers/testEmailAdapter.ts @@ -1,4 +1,4 @@ -import type { EmailAdapter, SendEmailOptions } from 'payload' +import type { EmailAdapter, SendEmailOptions } from 'payload'; /** * Logs all emails to stdout @@ -8,31 +8,34 @@ export const testEmailAdapter: EmailAdapter = ({ payload }) => ({ defaultFromAddress: 'dev@payloadcms.com', defaultFromName: 'Payload Test', sendEmail: async (message) => { - const stringifiedTo = getStringifiedToAddress(message) - const res = `Test email to: '${stringifiedTo}', Subject: '${message.subject}'` - payload.logger.info({ content: message, msg: res }) - return Promise.resolve() + const stringifiedTo = getStringifiedToAddress(message); + const res = `Test email to: '${stringifiedTo}', Subject: '${message.subject}'`; + payload.logger.info({ content: message, msg: res }); + return Promise.resolve(); }, -}) +}); function getStringifiedToAddress(message: SendEmailOptions): string | undefined { - let stringifiedTo: string | undefined + let stringifiedTo: string | undefined; if (typeof message.to === 'string') { - stringifiedTo = message.to - } else if (Array.isArray(message.to)) { + stringifiedTo = message.to; + } + else if (Array.isArray(message.to)) { stringifiedTo = message.to .map((to: { address: string } | string) => { if (typeof to === 'string') { - return to - } else if (to.address) { - return to.address + return to; } - return '' + else if (to.address) { + return to.address; + } + return ''; }) - .join(', ') - } else if (message.to?.address) { - stringifiedTo = message.to.address + .join(', '); + } + else if (message.to?.address) { + stringifiedTo = message.to.address; } - return stringifiedTo + return stringifiedTo; } diff --git a/dev/next.config.ts b/dev/next.config.ts index 6e2bb46..af23013 100644 --- a/dev/next.config.ts +++ b/dev/next.config.ts @@ -1,6 +1,5 @@ -import type { NextConfig } from 'next/dist/server/config-shared' - -import { withPayload } from '@payloadcms/next/withPayload' +import type { NextConfig } from 'next'; +import { withPayload } from '@payloadcms/next/withPayload'; // const dirname = path.dirname(fileURLToPath(import.meta.url)) /** @type {import('next').NextConfig} */ @@ -10,12 +9,11 @@ const nextConfig: NextConfig = { '.cjs': ['.cts', '.cjs'], '.js': ['.ts', '.tsx', '.js', '.jsx'], '.mjs': ['.mts', '.mjs'], - } - - return conf + }; + return conf; }, // transpilePackages: ['../src'], -} +}; -export default withPayload(nextConfig, { devBundleServerPackages: false }) +export default withPayload(nextConfig, { devBundleServerPackages: false }); diff --git a/dev/node_modules/.modules.yaml b/dev/node_modules/.modules.yaml deleted file mode 100644 index d8d701b..0000000 --- a/dev/node_modules/.modules.yaml +++ /dev/null @@ -1,20 +0,0 @@ -hoistPattern: - - '*' -hoistedDependencies: {} -included: - dependencies: true - devDependencies: true - optionalDependencies: true -injectedDeps: {} -layoutVersion: 5 -nodeLinker: isolated -packageManager: pnpm@10.8.1 -pendingBuilds: [] -prunedAt: Sat, 26 Apr 2025 15:15:04 GMT -publicHoistPattern: [] -registries: - default: https://registry.npmjs.org/ -skipped: [] -storeDir: E:\.pnpm-store\v10 -virtualStoreDir: E:\work tools\projects\payload-auditor\dev\node_modules\.pnpm -virtualStoreDirMaxLength: 60 diff --git a/dev/node_modules/.pnpm-workspace-state.json b/dev/node_modules/.pnpm-workspace-state.json deleted file mode 100644 index 2f67d38..0000000 --- a/dev/node_modules/.pnpm-workspace-state.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "lastValidatedTimestamp": 1745680505021, - "projects": { - "E:\\work tools\\projects\\payload-auditor\\dev": {} - }, - "pnpmfileExists": false, - "settings": { - "autoInstallPeers": true, - "catalogs": {}, - "dedupeDirectDeps": false, - "dedupeInjectedDeps": true, - "dedupePeerDependents": true, - "dev": true, - "excludeLinksFromLockfile": false, - "hoistPattern": [ - "*" - ], - "hoistWorkspacePackages": true, - "injectWorkspacePackages": false, - "linkWorkspacePackages": false, - "nodeLinker": "isolated", - "optional": true, - "preferWorkspacePackages": false, - "production": true, - "publicHoistPattern": [], - "workspacePackagePatterns": [ - "." - ] - }, - "filteredInstall": false -} diff --git a/dev/node_modules/.pnpm/lock.yaml b/dev/node_modules/.pnpm/lock.yaml deleted file mode 100644 index 3698779..0000000 --- a/dev/node_modules/.pnpm/lock.yaml +++ /dev/null @@ -1,16 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -overrides: - payload-auditor: link:C:/Users/Puzzle2024/AppData/Local/pnpm/global/5/node_modules/payload-auditor - -importers: - - .: - dependencies: - payload-auditor: - specifier: link:C:/Users/Puzzle2024/AppData/Local/pnpm/global/5/node_modules/payload-auditor - version: link:C:/Users/Puzzle2024/AppData/Local/pnpm/global/5/node_modules/payload-auditor diff --git a/dev/payload.config.ts b/dev/payload.config.ts index bd6e297..9b2848f 100644 --- a/dev/payload.config.ts +++ b/dev/payload.config.ts @@ -1,22 +1,23 @@ -import { mongooseAdapter } from '@payloadcms/db-mongodb' -import { lexicalEditor } from '@payloadcms/richtext-lexical' -import { media } from 'collections/Media.js' -import { users } from 'collections/Users.js' -import path from 'path' -import { buildConfig } from 'payload' -import sharp from 'sharp' -import { fileURLToPath } from 'url' +/* eslint-disable node/prefer-global/process */ +import sharp from 'sharp'; +import path from 'node:path'; +import { buildConfig } from 'payload'; +import { fileURLToPath } from 'node:url'; +import { media } from 'collections/Media.js'; +import { users } from 'collections/Users.js'; +import { mongooseAdapter } from '@payloadcms/db-mongodb'; +import { lexicalEditor } from '@payloadcms/richtext-lexical'; +import { seed } from './seed.js'; // import { auditorPlugin } from 'payload-auditor/index.js' -import { auditorPlugin } from '../src/index.js' -import { testEmailAdapter } from './helpers/testEmailAdapter.js' -import { seed } from './seed.js' +import { auditorPlugin } from '../src/index.js'; +import { testEmailAdapter } from './helpers/testEmailAdapter.js'; -const filename = fileURLToPath(import.meta.url) -const dirname = path.dirname(filename) +const filename = fileURLToPath(import.meta.url); +const dirname = path.dirname(filename); if (!process.env.ROOT_DIR) { - process.env.ROOT_DIR = dirname + process.env.ROOT_DIR = dirname; } export default buildConfig({ @@ -33,7 +34,7 @@ export default buildConfig({ editor: lexicalEditor(), email: testEmailAdapter, onInit: async (payload) => { - await seed(payload) + await seed(payload); }, // plugins plugins: [ @@ -66,4 +67,4 @@ export default buildConfig({ typescript: { outputFile: path.resolve(dirname, 'payload-types.ts'), }, -}) +}); diff --git a/dev/pnpm-lock.yaml b/dev/pnpm-lock.yaml deleted file mode 100644 index 3698779..0000000 --- a/dev/pnpm-lock.yaml +++ /dev/null @@ -1,16 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -overrides: - payload-auditor: link:C:/Users/Puzzle2024/AppData/Local/pnpm/global/5/node_modules/payload-auditor - -importers: - - .: - dependencies: - payload-auditor: - specifier: link:C:/Users/Puzzle2024/AppData/Local/pnpm/global/5/node_modules/payload-auditor - version: link:C:/Users/Puzzle2024/AppData/Local/pnpm/global/5/node_modules/payload-auditor diff --git a/dev/pnpm-workspace.yaml b/dev/pnpm-workspace.yaml deleted file mode 100644 index f74ec5a..0000000 --- a/dev/pnpm-workspace.yaml +++ /dev/null @@ -1,2 +0,0 @@ -overrides: - payload-auditor: link:C:/Users/Puzzle2024/AppData/Local/pnpm/global/5/node_modules/payload-auditor diff --git a/dev/seed.ts b/dev/seed.ts index 8e731f1..fcd230b 100644 --- a/dev/seed.ts +++ b/dev/seed.ts @@ -1,6 +1,6 @@ -import type { Payload } from 'payload' +import type { Payload } from 'payload'; -import { devUser } from './helpers/credentials.js' +import { devUser } from './helpers/credentials.js'; export const seed = async (payload: Payload) => { const { totalDocs } = await payload.count({ @@ -10,12 +10,12 @@ export const seed = async (payload: Payload) => { equals: devUser.email, }, }, - }) + }); if (!totalDocs) { await payload.create({ collection: 'users', data: devUser, - }) + }); } -} +}; diff --git a/dev/server.mts b/dev/server.mts index 33dbefe..81e18fe 100644 --- a/dev/server.mts +++ b/dev/server.mts @@ -1,31 +1,31 @@ -import type { NextServerOptions } from 'next/dist/server/next.js' +import open from 'open'; +import next from 'next'; +import path from 'node:path'; +import { createServer } from 'node:http'; +// eslint-disable-next-line node/no-deprecated-api +import { fileURLToPath, parse } from 'node:url'; +import type { NextServerOptions } from 'next/dist/server/next.js'; -import { createServer } from 'http' -import next from 'next' -import open from 'open' -import path from 'path' -import { fileURLToPath, parse } from 'url' - -const dirname = path.dirname(fileURLToPath(import.meta.url)) +const dirname = path.dirname(fileURLToPath(import.meta.url)); const opts: NextServerOptions = { dev: true, dir: dirname, -} - -const app = next(opts) -const handle = app.getRequestHandler() +}; +// @ts-ignore +const app = next(opts); +const handle = app.getRequestHandler(); async function start() { - await app.prepare() - await open(`http://localhost:3000/admin`) + await app.prepare(); + await open(`http://localhost:3000/admin`); const server = createServer((req, res) => { - const parsedUrl = parse(req.url, true) - void handle(req, res, parsedUrl) - }) + const parsedUrl = parse(req?.url ?? '', true); + void handle(req, res, parsedUrl); + }); - server.listen(3000) + server.listen(3000); } -void start() +void start(); diff --git a/dev/tsconfig.json b/dev/tsconfig.json index 7b841c1..a462007 100644 --- a/dev/tsconfig.json +++ b/dev/tsconfig.json @@ -1,6 +1,17 @@ { "extends": "../tsconfig.json", - "exclude": [], + "compilerOptions": { + "target": "ES2022", + "baseUrl": "./", + "module": "NodeNext", + "moduleResolution": "NodeNext", + "paths": { + "@payload-config": ["./payload.config.ts"], + "payload-auditor/*": ["../dist/*"] + }, + "emitDeclarationOnly": false, + "noEmit": true + }, "include": [ "**/*.js", @@ -12,18 +23,8 @@ "../src/**/*.ts", "../src/**/*.tsx", "next.config.ts", - ".next/types/**/*.ts" + ".next/types/**/*.ts", + "./server.mts" ], - "compilerOptions": { - "module": "NodeNext", - "moduleResolution": "NodeNext", - "target": "ES2022", - "baseUrl": "./", - "paths": { - "@payload-config": ["./payload.config.ts"], - "payload-auditor/*": ["../dist/*"] - }, - "noEmit": true, - "emitDeclarationOnly": false - } + "exclude": [] } diff --git a/eslint.config.js b/eslint.config.js deleted file mode 100644 index fb4fab4..0000000 --- a/eslint.config.js +++ /dev/null @@ -1,48 +0,0 @@ -import payloadEsLintConfig from '@payloadcms/eslint-config' - -export const defaultESLintIgnores = [ - '**/commitlint.config.cjs', - '**/.temp', - '**/.*', // ignore all dotfiles - '**/.git', - '**/.hg', - '**/.pnp.*', - '**/.svn', - '**/playwright.config.ts', - '**/jest.config.js', - '**/tsconfig.tsbuildinfo', - '**/README.md', - '**/eslint.config.js', - '**/payload-types.ts', - '**/dist/', - '**/.yarn/', - '**/build/', - '**/node_modules/', - '**/temp/', -] - -export default [ - ...payloadEsLintConfig, - { - rules: { - 'no-restricted-exports': 'off', - }, - }, - { - ignores: defaultESLintIgnores, - }, - { - languageOptions: { - parserOptions: { - sourceType: 'module', - ecmaVersion: 'latest', - projectService: { - maximumDefaultProjectFileMatchCount_THIS_WILL_SLOW_DOWN_LINTING: 40, - allowDefaultProject: ['scripts/*.ts', '*.js', '*.mjs', '*.spec.ts', '*.d.ts'], - }, - // projectService: true, - tsconfigRootDir: import.meta.dirname, - }, - }, - }, -] diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..81e4b76 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,77 @@ +// eslint.config.mjs +import antfu from '@antfu/eslint-config'; +import nextPlugin from '@next/eslint-plugin-next'; +import perfectionist from 'eslint-plugin-perfectionist'; + +const ignoreFiles = [ + '**/commitlint.config.cjs', + '**/.temp', + '**/.*', // ignore all dotfiles + '**/.git', + '**/.hg', + '**/.pnp.*', + '**/.svn', + '**/playwright.config.ts', + '**/jest.config.js', + '**/tsconfig.tsbuildinfo', + '**/README.md', + '**/payload-types.ts', + '**/dist/', + '**/.yarn/', + '**/build/', + '**/node_modules/**', + '**/temp/', +]; +export default antfu( + { + // Code style + stylistic: { + semi: true, + }, + + typescript: true, + + // Configuration preferences + lessOpinionated: true, + // Ignored paths + ignores: ignoreFiles, + + isInEditor: true, + + nextjs: true, + react: true, + + }, + { + rules: { + ...nextPlugin.configs.recommended.rules, + ...nextPlugin.configs['core-web-vitals'].rules, + }, + plugins: { '@next/next': nextPlugin }, + }, + { + plugins: { + perfectionist, + }, + rules: { + 'perfectionist/sort-imports': ['error', { + type: 'line-length', + order: 'asc', + groups: [ + ['builtin', 'external'], + ['internal', 'parent', 'sibling', 'index'], + 'unknown', + ], + }], + }, + }, + { + rules: { + 'antfu/imports/order': 'off', + 'import/order': 'off', + 'sort-imports': 'off', + 'ts/ban-ts-comment': 'off', + 'unused-imports/no-unused-imports': ['error'], + }, + }, +); diff --git a/lint-staged.config.js b/lint-staged.config.js index 2c3d755..db3f369 100644 --- a/lint-staged.config.js +++ b/lint-staged.config.js @@ -1,4 +1,4 @@ export default { '**/*.{ts,tsx,js,jsx}': ['eslint --fix --no-warn-ignored'], '**/*.ts?(x)': () => 'npm run check-types', -} +}; diff --git a/package-lock.json b/package-lock.json index 96dd74b..55310dc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,13 +9,15 @@ "version": "1.8.0", "license": "MIT", "devDependencies": { + "@antfu/eslint-config": "^6.1.0", "@commitlint/cli": "^18.4.1", "@commitlint/config-conventional": "^19.8.0", + "@eslint-react/eslint-plugin": "^2.2.4", "@eslint/eslintrc": "^3.2.0", + "@next/eslint-plugin-next": "^16.0.1", "@payloadcms/db-mongodb": "3.29.0", "@payloadcms/db-postgres": "3.29.0", "@payloadcms/db-sqlite": "3.29.0", - "@payloadcms/eslint-config": "3.9.0", "@payloadcms/next": "3.29.0", "@payloadcms/richtext-lexical": "3.29.0", "@payloadcms/translations": "^3.39.1", @@ -32,17 +34,18 @@ "copyfiles": "2.4.1", "cross-env": "^7.0.3", "cz-git": "^1.11.1", - "eslint": "^9.23.0", - "eslint-config-next": "15.3.0", + "eslint": "^9.38.0", + "eslint-plugin-perfectionist": "^4.15.1", + "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-react-refresh": "^0.4.24", "graphql": "^16.8.1", "husky": "^9.1.7", "jest": "29.7.0", "lint-staged": "^15.5.1", "mongodb-memory-server": "^10.1.2", - "next": "15.3.0", + "next": "^15.5.6", "open": "^10.1.0", "payload": "3.29.0", - "prettier": "^3.4.2", "qs-esm": "7.0.2", "react": "19.1.0", "react-dom": "19.1.0", @@ -50,7 +53,7 @@ "rimraf": "3.0.2", "sharp": "0.32.6", "sort-package-json": "^2.10.0", - "typescript": "5.7.3", + "typescript": "^5.9.3", "vite-tsconfig-paths": "^5.1.4", "vitest": "^3.1.2" }, @@ -61,6 +64,140 @@ "payload": "^3.29.0" } }, + "node_modules/@antfu/eslint-config": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@antfu/eslint-config/-/eslint-config-6.1.0.tgz", + "integrity": "sha512-m/L9TGvtG3r4tkfq5BY6THz7pk0g6yuJwwA0SkLEDHJJpt0upuABhs8v3SU8yaPtCGUxq8k2QTLMZ3WPg4vSdw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@antfu/install-pkg": "^1.1.0", + "@clack/prompts": "^0.11.0", + "@eslint-community/eslint-plugin-eslint-comments": "^4.5.0", + "@eslint/markdown": "^7.5.0", + "@stylistic/eslint-plugin": "^5.5.0", + "@typescript-eslint/eslint-plugin": "^8.46.2", + "@typescript-eslint/parser": "^8.46.2", + "@vitest/eslint-plugin": "^1.3.24", + "ansis": "^4.2.0", + "cac": "^6.7.14", + "eslint-config-flat-gitignore": "^2.1.0", + "eslint-flat-config-utils": "^2.1.4", + "eslint-merge-processors": "^2.0.0", + "eslint-plugin-antfu": "^3.1.1", + "eslint-plugin-command": "^3.3.1", + "eslint-plugin-import-lite": "^0.3.0", + "eslint-plugin-jsdoc": "^61.1.8", + "eslint-plugin-jsonc": "^2.21.0", + "eslint-plugin-n": "^17.23.1", + "eslint-plugin-no-only-tests": "^3.3.0", + "eslint-plugin-perfectionist": "^4.15.1", + "eslint-plugin-pnpm": "^1.3.0", + "eslint-plugin-regexp": "^2.10.0", + "eslint-plugin-toml": "^0.12.0", + "eslint-plugin-unicorn": "^61.0.2", + "eslint-plugin-unused-imports": "^4.3.0", + "eslint-plugin-vue": "^10.5.1", + "eslint-plugin-yml": "^1.19.0", + "eslint-processor-vue-blocks": "^2.0.0", + "globals": "^16.4.0", + "jsonc-eslint-parser": "^2.4.1", + "local-pkg": "^1.1.2", + "parse-gitignore": "^2.0.0", + "toml-eslint-parser": "^0.10.0", + "vue-eslint-parser": "^10.2.0", + "yaml-eslint-parser": "^1.3.0" + }, + "bin": { + "eslint-config": "bin/index.js" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@eslint-react/eslint-plugin": "^2.0.1", + "@next/eslint-plugin-next": ">=15.0.0", + "@prettier/plugin-xml": "^3.4.1", + "@unocss/eslint-plugin": ">=0.50.0", + "astro-eslint-parser": "^1.0.2", + "eslint": "^9.10.0", + "eslint-plugin-astro": "^1.2.0", + "eslint-plugin-format": ">=0.1.0", + "eslint-plugin-jsx-a11y": ">=6.10.2", + "eslint-plugin-react-hooks": "^7.0.0", + "eslint-plugin-react-refresh": "^0.4.19", + "eslint-plugin-solid": "^0.14.3", + "eslint-plugin-svelte": ">=2.35.1", + "eslint-plugin-vuejs-accessibility": "^2.4.1", + "prettier-plugin-astro": "^0.14.0", + "prettier-plugin-slidev": "^1.0.5", + "svelte-eslint-parser": ">=0.37.0" + }, + "peerDependenciesMeta": { + "@eslint-react/eslint-plugin": { + "optional": true + }, + "@next/eslint-plugin-next": { + "optional": true + }, + "@prettier/plugin-xml": { + "optional": true + }, + "@unocss/eslint-plugin": { + "optional": true + }, + "astro-eslint-parser": { + "optional": true + }, + "eslint-plugin-astro": { + "optional": true + }, + "eslint-plugin-format": { + "optional": true + }, + "eslint-plugin-jsx-a11y": { + "optional": true + }, + "eslint-plugin-react-hooks": { + "optional": true + }, + "eslint-plugin-react-refresh": { + "optional": true + }, + "eslint-plugin-solid": { + "optional": true + }, + "eslint-plugin-svelte": { + "optional": true + }, + "eslint-plugin-vuejs-accessibility": { + "optional": true + }, + "prettier-plugin-astro": { + "optional": true + }, + "prettier-plugin-slidev": { + "optional": true + }, + "svelte-eslint-parser": { + "optional": true + } + } + }, + "node_modules/@antfu/install-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.1.0.tgz", + "integrity": "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "package-manager-detector": "^1.3.0", + "tinyexec": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/@apidevtools/json-schema-ref-parser": { "version": "11.9.3", "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-11.9.3.tgz", @@ -616,6 +753,29 @@ "url": "https://github.com/sponsors/Borewit" } }, + "node_modules/@clack/core": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@clack/core/-/core-0.5.0.tgz", + "integrity": "sha512-p3y0FIOwaYRUPRcMO7+dlmLh8PSRcrjuTndsiA0WAFbWES0mLZlrjVoBRZ9DzkPFJZG6KGkJmoEAY0ZcVWTkow==", + "dev": true, + "license": "MIT", + "dependencies": { + "picocolors": "^1.0.0", + "sisteransi": "^1.0.5" + } + }, + "node_modules/@clack/prompts": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@clack/prompts/-/prompts-0.11.0.tgz", + "integrity": "sha512-pMN5FcrEw9hUkZA4f+zLlzivQSeQf5dRGJjSUbvVYDLvpKCdQx5OaknvKzgbtXOizhP+SJJJjqEbOe55uKKfAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@clack/core": "0.5.0", + "picocolors": "^1.0.0", + "sisteransi": "^1.0.5" + } + }, "node_modules/@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", @@ -979,6 +1139,33 @@ "react": ">=16.8.0" } }, + "node_modules/@dprint/formatter": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@dprint/formatter/-/formatter-0.3.0.tgz", + "integrity": "sha512-N9fxCxbaBOrDkteSOzaCqwWjso5iAe+WJPsHC021JfHNj2ThInPNEF13ORDKta3llq5D1TlclODCvOvipH7bWQ==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true + }, + "node_modules/@dprint/markdown": { + "version": "0.17.8", + "resolved": "https://registry.npmjs.org/@dprint/markdown/-/markdown-0.17.8.tgz", + "integrity": "sha512-ukHFOg+RpG284aPdIg7iPrCYmMs3Dqy43S1ejybnwlJoFiW02b+6Bbr5cfZKFRYNP3dKGM86BqHEnMzBOyLvvA==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true + }, + "node_modules/@dprint/toml": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@dprint/toml/-/toml-0.6.4.tgz", + "integrity": "sha512-bZXIUjxr0LIuHWshZr/5mtUkOrnh0NKVZEF6ACojW5z7zkJu7s9sV2mMXm8XQDqN4cJzdHYUYzUyEGdfciaLJA==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true + }, "node_modules/@drizzle-team/brocli": { "version": "0.10.2", "resolved": "https://registry.npmjs.org/@drizzle-team/brocli/-/brocli-0.10.2.tgz", @@ -1176,6 +1363,33 @@ "dev": true, "license": "MIT" }, + "node_modules/@es-joy/jsdoccomment": { + "version": "0.50.2", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.50.2.tgz", + "integrity": "sha512-YAdE/IJSpwbOTiaURNCKECdAwqrJuFiZhylmesBcIRawtYKnBR2wxPhoIewMg+Yu+QuYvHfJNReWpoxGBKOChA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.6", + "@typescript-eslint/types": "^8.11.0", + "comment-parser": "1.4.1", + "esquery": "^1.6.0", + "jsdoc-type-pratt-parser": "~4.1.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@es-joy/resolve.exports": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@es-joy/resolve.exports/-/resolve.exports-1.2.0.tgz", + "integrity": "sha512-Q9hjxWI5xBM+qW2enxfe8wDKdFWMfd0Z29k5ZJnuBqD/CasY5Zryj09aCA6owbGATWz+39p5uIdaHXpopOcG8g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/@esbuild-kit/core-utils": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/@esbuild-kit/core-utils/-/core-utils-3.3.2.tgz", @@ -2054,6 +2268,26 @@ "node": ">=12" } }, + "node_modules/@eslint-community/eslint-plugin-eslint-comments": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-4.5.0.tgz", + "integrity": "sha512-MAhuTKlr4y/CE3WYX26raZjy+I/kS2PLKSzvfmDCGrBLTFHOYwqROZdr4XwPgXwX3K9rjzMr4pSmUWGnzsUyMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^4.0.0", + "ignore": "^5.2.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" + } + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.9.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", @@ -2073,6 +2307,19 @@ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@eslint-community/regexpp": { "version": "4.12.2", "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", @@ -2084,145 +2331,134 @@ } }, "node_modules/@eslint-react/ast": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/@eslint-react/ast/-/ast-1.16.1.tgz", - "integrity": "sha512-IzJnMy+70w8k1ek06vqdk8g/vxVffOII3c65ggtlQwj2ZBZB/cgUABzNkDV7Hi3VtE0kChZSVSDV6MR76gt5Sg==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@eslint-react/ast/-/ast-2.2.4.tgz", + "integrity": "sha512-kdG9yMJ2QpEbVPfgvlWqTUAF2L7dZYBAaF8/LPrjDIKB1pCbygxXUoRBPVthxTsE2XTqiLbhPqcWGnI8Q3UNTQ==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/tools": "1.16.1", - "@eslint-react/types": "1.16.1", - "@typescript-eslint/types": "^8.13.0", - "@typescript-eslint/typescript-estree": "^8.13.0", - "@typescript-eslint/utils": "^8.13.0", - "birecord": "^0.1.1", - "string-ts": "^2.2.0", - "ts-pattern": "^5.5.0" + "@eslint-react/eff": "2.2.4", + "@typescript-eslint/types": "^8.46.2", + "@typescript-eslint/typescript-estree": "^8.46.2", + "@typescript-eslint/utils": "^8.46.2", + "string-ts": "^2.2.1" + }, + "engines": { + "node": ">=20.19.0" } }, "node_modules/@eslint-react/core": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/@eslint-react/core/-/core-1.16.1.tgz", - "integrity": "sha512-QTuROazb1gILdV1h4iON38HbxQpOUMpEPg3etoFrLeH1a9yJIfnsb2t1ryrJh2pqQ+Rw5Lz6za+sJknbuDYxOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-react/ast": "1.16.1", - "@eslint-react/jsx": "1.16.1", - "@eslint-react/shared": "1.16.1", - "@eslint-react/tools": "1.16.1", - "@eslint-react/types": "1.16.1", - "@eslint-react/var": "1.16.1", - "@typescript-eslint/scope-manager": "^8.13.0", - "@typescript-eslint/type-utils": "^8.13.0", - "@typescript-eslint/types": "^8.13.0", - "@typescript-eslint/utils": "^8.13.0", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@eslint-react/core/-/core-2.2.4.tgz", + "integrity": "sha512-uEfUX2GoIymsBbWccJGpuyz8KCtxyNBxJb2FMyqE37nLtNVPbNsFTHRr6uX1WwkBxw+bUOYDbVDy9zFVbmAJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-react/ast": "2.2.4", + "@eslint-react/eff": "2.2.4", + "@eslint-react/shared": "2.2.4", + "@eslint-react/var": "2.2.4", + "@typescript-eslint/scope-manager": "^8.46.2", + "@typescript-eslint/types": "^8.46.2", + "@typescript-eslint/utils": "^8.46.2", "birecord": "^0.1.1", - "short-unique-id": "^5.2.0", - "ts-pattern": "^5.5.0" + "ts-pattern": "^5.9.0" + }, + "engines": { + "node": ">=20.19.0" } }, - "node_modules/@eslint-react/eslint-plugin": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/@eslint-react/eslint-plugin/-/eslint-plugin-1.16.1.tgz", - "integrity": "sha512-QTpBKDbe6DZCsczFkFjqVFRuwbUlMV+FF0XdZLrMRuHEvmcs/6G70wHL/hCe2CruARnGiAQRWnA+IenFw+gAuw==", + "node_modules/@eslint-react/eff": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@eslint-react/eff/-/eff-2.2.4.tgz", + "integrity": "sha512-I26FQr5IEjJDXlcuyL1h/shmUdyyAXZrG+Op/E0Lc6cpGvXg5hn1ptcdKJ23o8BAxq2UY2gwyltGxE2t4ixoJQ==", "dev": true, "license": "MIT", - "dependencies": { - "@eslint-react/shared": "1.16.1", - "@eslint-react/tools": "1.16.1", - "@eslint-react/types": "1.16.1", - "@typescript-eslint/scope-manager": "^8.13.0", - "@typescript-eslint/type-utils": "^8.13.0", - "@typescript-eslint/types": "^8.13.0", - "@typescript-eslint/utils": "^8.13.0", - "eslint-plugin-react-debug": "1.16.1", - "eslint-plugin-react-dom": "1.16.1", - "eslint-plugin-react-hooks-extra": "1.16.1", - "eslint-plugin-react-naming-convention": "1.16.1", - "eslint-plugin-react-web-api": "1.16.1", - "eslint-plugin-react-x": "1.16.1" - }, "engines": { - "bun": ">=1.0.15", - "node": ">=18.18.0" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": "^4.9.5 || ^5.3.3" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": false - }, - "typescript": { - "optional": true - } + "node": ">=20.19.0" } }, - "node_modules/@eslint-react/jsx": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/@eslint-react/jsx/-/jsx-1.16.1.tgz", - "integrity": "sha512-VrlCeVpRkAK5t8tpJRa+IOIdQQ9qTCnS1UOZOSV/SDcgBdsyGFkYzzY1EHUCR9MSxpsS/NPaXBfvrgMJ+llMow==", + "node_modules/@eslint-react/eslint-plugin": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@eslint-react/eslint-plugin/-/eslint-plugin-2.2.4.tgz", + "integrity": "sha512-hGWCliK90mqF7Wd3TCBT/BtOgdWsyJ/Y+Zoor7Oz3fI7mu7MvqpBkGerIRCkbQxPthKj4/g2S1CEltvQ2jM4Sg==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/ast": "1.16.1", - "@eslint-react/tools": "1.16.1", - "@eslint-react/types": "1.16.1", - "@eslint-react/var": "1.16.1", - "@typescript-eslint/scope-manager": "^8.13.0", - "@typescript-eslint/types": "^8.13.0", - "@typescript-eslint/utils": "^8.13.0", - "ts-pattern": "^5.5.0" + "@eslint-react/eff": "2.2.4", + "@eslint-react/shared": "2.2.4", + "@typescript-eslint/scope-manager": "^8.46.2", + "@typescript-eslint/type-utils": "^8.46.2", + "@typescript-eslint/types": "^8.46.2", + "@typescript-eslint/utils": "^8.46.2", + "eslint-plugin-react-dom": "2.2.4", + "eslint-plugin-react-hooks-extra": "2.2.4", + "eslint-plugin-react-naming-convention": "2.2.4", + "eslint-plugin-react-web-api": "2.2.4", + "eslint-plugin-react-x": "2.2.4", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": ">=20.19.0" + }, + "peerDependencies": { + "eslint": "^9.38.0", + "typescript": "^5.9.3" } }, "node_modules/@eslint-react/shared": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/@eslint-react/shared/-/shared-1.16.1.tgz", - "integrity": "sha512-A+R590q0UQuHVlz9YHs+g6HQZ/cyKK/bWw0ykyEAoTNXCDz8lpbxW02dH4iC/9eMEnYs2dQn4as1qkwm9GhrfQ==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@eslint-react/shared/-/shared-2.2.4.tgz", + "integrity": "sha512-jDL17njTyVj/cmveNThHtLLJpHqLRd/z76q+38Zcq+kiA3DfZ8mXyy+EYV4lLwD9dvg1FOMomHBTgV/woqWsRQ==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/tools": "1.16.1", - "@typescript-eslint/utils": "^8.13.0", - "picomatch": "^4.0.2" + "@eslint-react/eff": "2.2.4", + "@typescript-eslint/utils": "^8.46.2", + "ts-pattern": "^5.9.0", + "zod": "^4.1.12" + }, + "engines": { + "node": ">=20.19.0" } }, - "node_modules/@eslint-react/tools": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/@eslint-react/tools/-/tools-1.16.1.tgz", - "integrity": "sha512-X/VbkpltsfLLM14SqAThFEEsvQOCopyFXRwnAJp6HU9SdZEy7CkqRdPz/EQl8w7SEl70/DVFI2kvx0FN8YP3bw==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "dev": true, - "license": "MIT" - }, - "node_modules/@eslint-react/types": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/@eslint-react/types/-/types-1.16.1.tgz", - "integrity": "sha512-0vNdbVtebCtlGZBFWmZaYvXYhgakKrvQz1WYeSmEMKLSebIgReSrvjqVOhQOvoz41lGIuNYUKfYVSWwj41lyDg==", + "node_modules/@eslint-react/var": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@eslint-react/var/-/var-2.2.4.tgz", + "integrity": "sha512-MBh64lfHI6Cr2qjaYlJx7x3FcYqgGK9SSB5/7weRsxv63ZfGiJY+aRi0ahSGsE2JhM0/OhWu0T6T1z4nnEbQxA==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/tools": "1.16.1", - "@typescript-eslint/types": "^8.13.0", - "@typescript-eslint/utils": "^8.13.0" + "@eslint-react/ast": "2.2.4", + "@eslint-react/eff": "2.2.4", + "@typescript-eslint/scope-manager": "^8.46.2", + "@typescript-eslint/types": "^8.46.2", + "@typescript-eslint/utils": "^8.46.2", + "ts-pattern": "^5.9.0" + }, + "engines": { + "node": ">=20.19.0" } }, - "node_modules/@eslint-react/var": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/@eslint-react/var/-/var-1.16.1.tgz", - "integrity": "sha512-CZ1fMQPkr60pwx8PLHsn75cl1Ovw/GHo2v6nhdWyhW8VhbBwJ1d1VdjSxPZjHJ4KCZFTuVVunWn7W9gDZmK+ow==", + "node_modules/@eslint/compat": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.4.0.tgz", + "integrity": "sha512-DEzm5dKeDBPm3r08Ixli/0cmxr8LkRdwxMRUIJBlSCpAwSrvFEJpVBzV+66JhDxiaqKxnRzCXhtiMiczF7Hglg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@eslint-react/ast": "1.16.1", - "@eslint-react/tools": "1.16.1", - "@eslint-react/types": "1.16.1", - "@typescript-eslint/scope-manager": "^8.13.0", - "@typescript-eslint/types": "^8.13.0", - "@typescript-eslint/utils": "^8.13.0", - "ts-pattern": "^5.5.0" + "@eslint/core": "^0.16.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": "^8.40 || 9" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, "node_modules/@eslint/config-array": { @@ -2307,6 +2543,19 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -2315,11 +2564,38 @@ "license": "MIT" }, "node_modules/@eslint/js": { - "version": "9.14.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.14.0.tgz", - "integrity": "sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg==", + "version": "9.38.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.38.0.tgz", + "integrity": "sha512-UZ1VpFvXf9J06YG9xQBdnzU+kthors6KjhMAl6f4gH4usHyh31rUf2DLGInT8RFYIReYXNSydgPY0V2LuWgl7A==", "dev": true, "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/markdown": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@eslint/markdown/-/markdown-7.5.0.tgz", + "integrity": "sha512-reKloVSpytg4ene3yviPJcUO7zglpNn9kWNRiSQ/8gBbBFMKW5Q042LaCi3wv2vVtbPNnLrl6WvhRAHeBd43QA==", + "dev": true, + "license": "MIT", + "workspaces": [ + "examples/*" + ], + "dependencies": { + "@eslint/core": "^0.16.0", + "@eslint/plugin-kit": "^0.4.0", + "github-slugger": "^2.0.0", + "mdast-util-from-markdown": "^2.0.2", + "mdast-util-frontmatter": "^2.0.1", + "mdast-util-gfm": "^3.1.0", + "micromark-extension-frontmatter": "^2.0.0", + "micromark-extension-gfm": "^3.0.0", + "micromark-util-normalize-identifier": "^2.0.1" + }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } @@ -3624,6 +3900,22 @@ "dev": true, "license": "MIT" }, + "node_modules/@jest/core/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/@jest/core/node_modules/jest-regex-util": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", @@ -5020,73 +5312,43 @@ "license": "MIT" }, "node_modules/@next/env": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/@next/env/-/env-15.3.0.tgz", - "integrity": "sha512-6mDmHX24nWlHOlbwUiAOmMyY7KELimmi+ed8qWcJYjqXeC+G6JzPZ3QosOAfjNwgMIzwhXBiRiCgdh8axTTdTA==", + "version": "15.5.6", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.5.6.tgz", + "integrity": "sha512-3qBGRW+sCGzgbpc5TS1a0p7eNxnOarGVQhZxfvTdnV0gFI61lX7QNtQ4V1TSREctXzYn5NetbUsLvyqwLFJM6Q==", "dev": true, "license": "MIT" }, "node_modules/@next/eslint-plugin-next": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.3.0.tgz", - "integrity": "sha512-511UUcpWw5GWTyKfzW58U2F/bYJyjLE9e3SlnGK/zSXq7RqLlqFO8B9bitJjumLpj317fycC96KZ2RZsjGNfBw==", + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-16.0.1.tgz", + "integrity": "sha512-g4Cqmv/gyFEXNeVB2HkqDlYKfy+YrlM2k8AVIO/YQVEPfhVruH1VA99uT1zELLnPLIeOnx8IZ6Ddso0asfTIdw==", "dev": true, "license": "MIT", "dependencies": { "fast-glob": "3.3.1" } }, - "node_modules/@next/eslint-plugin-next/node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "node_modules/@next/swc-darwin-arm64": { + "version": "15.5.6", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.5.6.tgz", + "integrity": "sha512-ES3nRz7N+L5Umz4KoGfZ4XX6gwHplwPhioVRc25+QNsDa7RtUF/z8wJcbuQ2Tffm5RZwuN2A063eapoJ1u4nPg==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/@next/eslint-plugin-next/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@next/swc-darwin-arm64": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.3.0.tgz", - "integrity": "sha512-PDQcByT0ZfF2q7QR9d+PNj3wlNN4K6Q8JoHMwFyk252gWo4gKt7BF8Y2+KBgDjTFBETXZ/TkBEUY7NIIY7A/Kw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "optional": true, + "os": [ + "darwin" + ], "engines": { "node": ">= 10" } }, "node_modules/@next/swc-darwin-x64": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.3.0.tgz", - "integrity": "sha512-m+eO21yg80En8HJ5c49AOQpFDq+nP51nu88ZOMCorvw3g//8g1JSUsEiPSiFpJo1KCTQ+jm9H0hwXK49H/RmXg==", + "version": "15.5.6", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.5.6.tgz", + "integrity": "sha512-JIGcytAyk9LQp2/nuVZPAtj8uaJ/zZhsKOASTjxDug0SPU9LAM3wy6nPU735M1OqacR4U20LHVF5v5Wnl9ptTA==", "cpu": [ "x64" ], @@ -5101,9 +5363,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.3.0.tgz", - "integrity": "sha512-H0Kk04ZNzb6Aq/G6e0un4B3HekPnyy6D+eUBYPJv9Abx8KDYgNMWzKt4Qhj57HXV3sTTjsfc1Trc1SxuhQB+Tg==", + "version": "15.5.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.5.6.tgz", + "integrity": "sha512-qvz4SVKQ0P3/Im9zcS2RmfFL/UCQnsJKJwQSkissbngnB/12c6bZTCB0gHTexz1s6d/mD0+egPKXAIRFVS7hQg==", "cpu": [ "arm64" ], @@ -5118,9 +5380,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.3.0.tgz", - "integrity": "sha512-k8GVkdMrh/+J9uIv/GpnHakzgDQhrprJ/FbGQvwWmstaeFG06nnAoZCJV+wO/bb603iKV1BXt4gHG+s2buJqZA==", + "version": "15.5.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.5.6.tgz", + "integrity": "sha512-FsbGVw3SJz1hZlvnWD+T6GFgV9/NYDeLTNQB2MXoPN5u9VA9OEDy6fJEfePfsUKAhJufFbZLgp0cPxMuV6SV0w==", "cpu": [ "arm64" ], @@ -5135,9 +5397,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.3.0.tgz", - "integrity": "sha512-ZMQ9yzDEts/vkpFLRAqfYO1wSpIJGlQNK9gZ09PgyjBJUmg8F/bb8fw2EXKgEaHbCc4gmqMpDfh+T07qUphp9A==", + "version": "15.5.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.5.6.tgz", + "integrity": "sha512-3QnHGFWlnvAgyxFxt2Ny8PTpXtQD7kVEeaFat5oPAHHI192WKYB+VIKZijtHLGdBBvc16tiAkPTDmQNOQ0dyrA==", "cpu": [ "x64" ], @@ -5152,9 +5414,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.3.0.tgz", - "integrity": "sha512-RFwq5VKYTw9TMr4T3e5HRP6T4RiAzfDJ6XsxH8j/ZeYq2aLsBqCkFzwMI0FmnSsLaUbOb46Uov0VvN3UciHX5A==", + "version": "15.5.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.5.6.tgz", + "integrity": "sha512-OsGX148sL+TqMK9YFaPFPoIaJKbFJJxFzkXZljIgA9hjMjdruKht6xDCEv1HLtlLNfkx3c5w2GLKhj7veBQizQ==", "cpu": [ "x64" ], @@ -5169,9 +5431,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.3.0.tgz", - "integrity": "sha512-a7kUbqa/k09xPjfCl0RSVAvEjAkYBYxUzSVAzk2ptXiNEL+4bDBo9wNC43G/osLA/EOGzG4CuNRFnQyIHfkRgQ==", + "version": "15.5.6", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.5.6.tgz", + "integrity": "sha512-ONOMrqWxdzXDJNh2n60H6gGyKed42Ieu6UTVPZteXpuKbLZTH4G4eBMsr5qWgOBA+s7F+uB4OJbZnrkEDnZ5Fg==", "cpu": [ "arm64" ], @@ -5186,9 +5448,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.3.0.tgz", - "integrity": "sha512-vHUQS4YVGJPmpjn7r5lEZuMhK5UQBNBRSB+iGDvJjaNk649pTIcRluDWNb9siunyLLiu/LDPHfvxBtNamyuLTw==", + "version": "15.5.6", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.5.6.tgz", + "integrity": "sha512-pxK4VIjFRx1MY92UycLOOw7dTdvccWsNETQ0kDHkBlcFH1GrTLUjSiHU1ohrznnux6TqRHgv5oflhfIWZwVROQ==", "cpu": [ "x64" ], @@ -5250,16 +5512,6 @@ "lodash": "^4.15.0" } }, - "node_modules/@nolyfill/is-core-module": { - "version": "1.0.39", - "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", - "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.4.0" - } - }, "node_modules/@octokit/auth-token": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-6.0.0.tgz", @@ -5714,603 +5966,209 @@ "uuid": "dist/bin/uuid" } }, - "node_modules/@payloadcms/eslint-config": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/@payloadcms/eslint-config/-/eslint-config-3.9.0.tgz", - "integrity": "sha512-4St7Ol8zaShcnVEk9AS3nYpKhtBLEsIXFkz94n5c3GsJdnWG0RfibJMZN4px01UXqHFkTJaM3NTggJk1nzx+VA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-react/eslint-plugin": "1.16.1", - "@eslint/js": "9.14.0", - "@payloadcms/eslint-plugin": "3.9.0", - "@types/eslint": "9.6.1", - "@types/eslint__js": "8.42.3", - "@typescript-eslint/parser": "8.14.0", - "eslint": "9.14.0", - "eslint-config-prettier": "9.1.0", - "eslint-plugin-import-x": "4.4.2", - "eslint-plugin-jest": "28.9.0", - "eslint-plugin-jest-dom": "5.4.0", - "eslint-plugin-jsx-a11y": "6.10.2", - "eslint-plugin-perfectionist": "3.9.1", - "eslint-plugin-react-hooks": "5.0.0", - "eslint-plugin-regexp": "2.6.0", - "globals": "15.12.0", - "typescript": "5.7.2", - "typescript-eslint": "8.14.0" - } - }, - "node_modules/@payloadcms/eslint-config/node_modules/@eslint/config-array": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", - "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", + "node_modules/@payloadcms/graphql": { + "version": "3.29.0", + "resolved": "https://registry.npmjs.org/@payloadcms/graphql/-/graphql-3.29.0.tgz", + "integrity": "sha512-3xeRzs8D8Oxty2xXRSQIDeJCkfXJDL+7+oTb9lP3vYGMaf5uiYnXvEmpJcciOTg5aigLFA6XY08ghkg0eU7uqw==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "@eslint/object-schema": "^2.1.4", - "debug": "^4.3.1", - "minimatch": "^3.1.2" + "graphql-scalars": "1.22.2", + "pluralize": "8.0.0", + "ts-essentials": "10.0.3", + "tsx": "4.19.2" }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "bin": { + "payload-graphql": "bin.js" + }, + "peerDependencies": { + "graphql": "^16.8.1", + "payload": "3.29.0" } }, - "node_modules/@payloadcms/eslint-config/node_modules/@eslint/core": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.7.0.tgz", - "integrity": "sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==", + "node_modules/@payloadcms/next": { + "version": "3.29.0", + "resolved": "https://registry.npmjs.org/@payloadcms/next/-/next-3.29.0.tgz", + "integrity": "sha512-uq9abb6DB/n0UimKhq0ShXeiD9pC+l4Z1mKd2pyPUYwQa1d0dMW+YjAeW3q3WVUvt2ZQV3JtPO68hjboXlaNUg==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", + "dependencies": { + "@dnd-kit/core": "6.0.8", + "@payloadcms/graphql": "3.29.0", + "@payloadcms/translations": "3.29.0", + "@payloadcms/ui": "3.29.0", + "busboy": "^1.6.0", + "dequal": "2.0.3", + "file-type": "19.3.0", + "graphql-http": "^1.22.0", + "graphql-playground-html": "1.6.30", + "http-status": "2.1.0", + "path-to-regexp": "6.3.0", + "qs-esm": "7.0.2", + "react-diff-viewer-continued": "4.0.5", + "sass": "1.77.4", + "uuid": "10.0.0" + }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^18.20.2 || >=20.9.0" + }, + "peerDependencies": { + "graphql": "^16.8.1", + "next": "^15.0.0", + "payload": "3.29.0" } }, - "node_modules/@payloadcms/eslint-config/node_modules/@eslint/plugin-kit": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz", - "integrity": "sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==", + "node_modules/@payloadcms/next/node_modules/@payloadcms/translations": { + "version": "3.29.0", + "resolved": "https://registry.npmjs.org/@payloadcms/translations/-/translations-3.29.0.tgz", + "integrity": "sha512-leM0AYBAsXFfmqM7OkQ546f7tAYAXOClDDiFi1D2SL1dcgKzbsWf3jPeCEZmZiUArolrXgWbfuHSnH7Ah78e/g==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "@eslint/core": "^0.13.0", - "levn": "^0.4.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "date-fns": "4.1.0" } }, - "node_modules/@payloadcms/eslint-config/node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz", - "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==", + "node_modules/@payloadcms/richtext-lexical": { + "version": "3.29.0", + "resolved": "https://registry.npmjs.org/@payloadcms/richtext-lexical/-/richtext-lexical-3.29.0.tgz", + "integrity": "sha512-OlCgr4/7hUIg4OZwSw3qoI7OUml2glsDPRI0AV6v+dZWQTQrrysCGGGM9KnO2qvAEK2TP1nfQ774v5Tz4yxSYQ==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.15" + "@lexical/headless": "0.28.0", + "@lexical/html": "0.28.0", + "@lexical/link": "0.28.0", + "@lexical/list": "0.28.0", + "@lexical/mark": "0.28.0", + "@lexical/react": "0.28.0", + "@lexical/rich-text": "0.28.0", + "@lexical/selection": "0.28.0", + "@lexical/table": "0.28.0", + "@lexical/utils": "0.28.0", + "@payloadcms/translations": "3.29.0", + "@payloadcms/ui": "3.29.0", + "@types/uuid": "10.0.0", + "acorn": "8.12.1", + "bson-objectid": "2.0.4", + "dequal": "2.0.3", + "escape-html": "1.0.3", + "jsox": "1.2.121", + "lexical": "0.28.0", + "mdast-util-from-markdown": "2.0.2", + "mdast-util-mdx-jsx": "3.1.3", + "micromark-extension-mdx-jsx": "3.0.1", + "qs-esm": "7.0.2", + "react-error-boundary": "4.1.2", + "ts-essentials": "10.0.3", + "uuid": "10.0.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^18.20.2 || >=20.9.0" + }, + "peerDependencies": { + "@faceless-ui/modal": "3.0.0-beta.2", + "@faceless-ui/scroll-info": "2.0.0", + "@payloadcms/next": "3.29.0", + "payload": "3.29.0", + "react": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020", + "react-dom": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020" } }, - "node_modules/@payloadcms/eslint-config/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/@payloadcms/richtext-lexical/node_modules/@payloadcms/translations": { + "version": "3.29.0", + "resolved": "https://registry.npmjs.org/@payloadcms/translations/-/translations-3.29.0.tgz", + "integrity": "sha512-leM0AYBAsXFfmqM7OkQ546f7tAYAXOClDDiFi1D2SL1dcgKzbsWf3jPeCEZmZiUArolrXgWbfuHSnH7Ah78e/g==", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "date-fns": "4.1.0" } }, - "node_modules/@payloadcms/eslint-config/node_modules/eslint": { - "version": "9.14.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.14.0.tgz", - "integrity": "sha512-c2FHsVBr87lnUtjP4Yhvk4yEhKrQavGafRA/Se1ouse8PfbfC/Qh9Mxa00yWsZRlqeUB9raXip0aiiUZkgnr9g==", + "node_modules/@payloadcms/translations": { + "version": "3.61.1", + "resolved": "https://registry.npmjs.org/@payloadcms/translations/-/translations-3.61.1.tgz", + "integrity": "sha512-pLx2+WMgzIaKZ8+6tdHIHFcKdXZMyzvKj5AxzZygtt9OZWK7tVX7Q7d08/ineeiuEdt4V1kyf0FXHN9OY1Alsg==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.18.0", - "@eslint/core": "^0.7.0", - "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.14.0", - "@eslint/plugin-kit": "^0.2.0", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.0", - "@types/estree": "^1.0.6", - "@types/json-schema": "^7.0.15", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.2.0", - "eslint-visitor-keys": "^4.2.0", - "espree": "^10.3.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" + "date-fns": "4.1.0" + } + }, + "node_modules/@payloadcms/ui": { + "version": "3.29.0", + "resolved": "https://registry.npmjs.org/@payloadcms/ui/-/ui-3.29.0.tgz", + "integrity": "sha512-uTGB+T71fdlEhCtQAWzW1wDd15EUnc7hqNsM50ImuwPBqq7kMgtySrji0weG5atitXReZXJUEgHNvmhUtO+eWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@date-fns/tz": "1.2.0", + "@dnd-kit/core": "6.0.8", + "@dnd-kit/sortable": "7.0.2", + "@faceless-ui/modal": "3.0.0-beta.2", + "@faceless-ui/scroll-info": "2.0.0", + "@faceless-ui/window-info": "3.0.1", + "@monaco-editor/react": "4.7.0", + "@payloadcms/translations": "3.29.0", + "bson-objectid": "2.0.4", + "date-fns": "4.1.0", + "dequal": "2.0.3", + "md5": "2.3.0", + "object-to-formdata": "4.5.1", + "qs-esm": "7.0.2", + "react-datepicker": "7.6.0", + "react-image-crop": "10.1.8", + "react-select": "5.9.0", + "scheduler": "0.25.0", + "sonner": "^1.7.2", + "ts-essentials": "10.0.3", + "use-context-selector": "2.0.0", + "uuid": "10.0.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" + "node": "^18.20.2 || >=20.9.0" }, "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } + "next": "^15.0.0", + "payload": "3.29.0", + "react": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020", + "react-dom": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020" } }, - "node_modules/@payloadcms/eslint-config/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "node_modules/@payloadcms/ui/node_modules/@payloadcms/translations": { + "version": "3.29.0", + "resolved": "https://registry.npmjs.org/@payloadcms/translations/-/translations-3.29.0.tgz", + "integrity": "sha512-leM0AYBAsXFfmqM7OkQ546f7tAYAXOClDDiFi1D2SL1dcgKzbsWf3jPeCEZmZiUArolrXgWbfuHSnH7Ah78e/g==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "license": "MIT", + "dependencies": { + "date-fns": "4.1.0" } }, - "node_modules/@payloadcms/eslint-config/node_modules/globals": { - "version": "15.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.12.0.tgz", - "integrity": "sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ==", + "node_modules/@phun-ky/typeof": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@phun-ky/typeof/-/typeof-2.0.3.tgz", + "integrity": "sha512-oeQJs1aa8Ghke8JIK9yuq/+KjMiaYeDZ38jx7MhkXncXlUKjqQ3wEm2X3qCKyjo+ZZofZj+WsEEiqkTtRuE2xQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" + "node": "^20.9.0 || >=22.0.0", + "npm": ">=10.8.2" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@payloadcms/eslint-config/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@payloadcms/eslint-config/node_modules/typescript": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", - "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/@payloadcms/eslint-plugin": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/@payloadcms/eslint-plugin/-/eslint-plugin-3.9.0.tgz", - "integrity": "sha512-EEGxhm+8geOHzdxjfRXgcEXxfx8+43ZVW9b6+6DTHrNliP/vsZzXWIDI8lQlxlk6Zc7n15hMBbgcs20F7/GM4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-react/eslint-plugin": "1.16.1", - "@eslint/js": "9.14.0", - "@types/eslint": "9.6.1", - "@types/eslint__js": "8.42.3", - "@typescript-eslint/parser": "8.14.0", - "eslint": "9.14.0", - "eslint-config-prettier": "9.1.0", - "eslint-plugin-import-x": "4.4.2", - "eslint-plugin-jest": "28.9.0", - "eslint-plugin-jest-dom": "5.4.0", - "eslint-plugin-jsx-a11y": "6.10.2", - "eslint-plugin-perfectionist": "3.9.1", - "eslint-plugin-react-hooks": "5.0.0", - "eslint-plugin-regexp": "2.6.0", - "globals": "15.12.0", - "typescript": "5.7.2", - "typescript-eslint": "8.14.0" - } - }, - "node_modules/@payloadcms/eslint-plugin/node_modules/@eslint/config-array": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", - "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/object-schema": "^2.1.4", - "debug": "^4.3.1", - "minimatch": "^3.1.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@payloadcms/eslint-plugin/node_modules/@eslint/core": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.7.0.tgz", - "integrity": "sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@payloadcms/eslint-plugin/node_modules/@eslint/plugin-kit": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz", - "integrity": "sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.13.0", - "levn": "^0.4.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@payloadcms/eslint-plugin/node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz", - "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@payloadcms/eslint-plugin/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@payloadcms/eslint-plugin/node_modules/eslint": { - "version": "9.14.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.14.0.tgz", - "integrity": "sha512-c2FHsVBr87lnUtjP4Yhvk4yEhKrQavGafRA/Se1ouse8PfbfC/Qh9Mxa00yWsZRlqeUB9raXip0aiiUZkgnr9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.18.0", - "@eslint/core": "^0.7.0", - "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.14.0", - "@eslint/plugin-kit": "^0.2.0", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.0", - "@types/estree": "^1.0.6", - "@types/json-schema": "^7.0.15", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.2.0", - "eslint-visitor-keys": "^4.2.0", - "espree": "^10.3.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } - } - }, - "node_modules/@payloadcms/eslint-plugin/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@payloadcms/eslint-plugin/node_modules/globals": { - "version": "15.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.12.0.tgz", - "integrity": "sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@payloadcms/eslint-plugin/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@payloadcms/eslint-plugin/node_modules/typescript": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", - "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/@payloadcms/graphql": { - "version": "3.29.0", - "resolved": "https://registry.npmjs.org/@payloadcms/graphql/-/graphql-3.29.0.tgz", - "integrity": "sha512-3xeRzs8D8Oxty2xXRSQIDeJCkfXJDL+7+oTb9lP3vYGMaf5uiYnXvEmpJcciOTg5aigLFA6XY08ghkg0eU7uqw==", - "dev": true, - "license": "MIT", - "dependencies": { - "graphql-scalars": "1.22.2", - "pluralize": "8.0.0", - "ts-essentials": "10.0.3", - "tsx": "4.19.2" - }, - "bin": { - "payload-graphql": "bin.js" - }, - "peerDependencies": { - "graphql": "^16.8.1", - "payload": "3.29.0" - } - }, - "node_modules/@payloadcms/next": { - "version": "3.29.0", - "resolved": "https://registry.npmjs.org/@payloadcms/next/-/next-3.29.0.tgz", - "integrity": "sha512-uq9abb6DB/n0UimKhq0ShXeiD9pC+l4Z1mKd2pyPUYwQa1d0dMW+YjAeW3q3WVUvt2ZQV3JtPO68hjboXlaNUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@dnd-kit/core": "6.0.8", - "@payloadcms/graphql": "3.29.0", - "@payloadcms/translations": "3.29.0", - "@payloadcms/ui": "3.29.0", - "busboy": "^1.6.0", - "dequal": "2.0.3", - "file-type": "19.3.0", - "graphql-http": "^1.22.0", - "graphql-playground-html": "1.6.30", - "http-status": "2.1.0", - "path-to-regexp": "6.3.0", - "qs-esm": "7.0.2", - "react-diff-viewer-continued": "4.0.5", - "sass": "1.77.4", - "uuid": "10.0.0" - }, - "engines": { - "node": "^18.20.2 || >=20.9.0" - }, - "peerDependencies": { - "graphql": "^16.8.1", - "next": "^15.0.0", - "payload": "3.29.0" - } - }, - "node_modules/@payloadcms/next/node_modules/@payloadcms/translations": { - "version": "3.29.0", - "resolved": "https://registry.npmjs.org/@payloadcms/translations/-/translations-3.29.0.tgz", - "integrity": "sha512-leM0AYBAsXFfmqM7OkQ546f7tAYAXOClDDiFi1D2SL1dcgKzbsWf3jPeCEZmZiUArolrXgWbfuHSnH7Ah78e/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "date-fns": "4.1.0" - } - }, - "node_modules/@payloadcms/richtext-lexical": { - "version": "3.29.0", - "resolved": "https://registry.npmjs.org/@payloadcms/richtext-lexical/-/richtext-lexical-3.29.0.tgz", - "integrity": "sha512-OlCgr4/7hUIg4OZwSw3qoI7OUml2glsDPRI0AV6v+dZWQTQrrysCGGGM9KnO2qvAEK2TP1nfQ774v5Tz4yxSYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@lexical/headless": "0.28.0", - "@lexical/html": "0.28.0", - "@lexical/link": "0.28.0", - "@lexical/list": "0.28.0", - "@lexical/mark": "0.28.0", - "@lexical/react": "0.28.0", - "@lexical/rich-text": "0.28.0", - "@lexical/selection": "0.28.0", - "@lexical/table": "0.28.0", - "@lexical/utils": "0.28.0", - "@payloadcms/translations": "3.29.0", - "@payloadcms/ui": "3.29.0", - "@types/uuid": "10.0.0", - "acorn": "8.12.1", - "bson-objectid": "2.0.4", - "dequal": "2.0.3", - "escape-html": "1.0.3", - "jsox": "1.2.121", - "lexical": "0.28.0", - "mdast-util-from-markdown": "2.0.2", - "mdast-util-mdx-jsx": "3.1.3", - "micromark-extension-mdx-jsx": "3.0.1", - "qs-esm": "7.0.2", - "react-error-boundary": "4.1.2", - "ts-essentials": "10.0.3", - "uuid": "10.0.0" - }, - "engines": { - "node": "^18.20.2 || >=20.9.0" - }, - "peerDependencies": { - "@faceless-ui/modal": "3.0.0-beta.2", - "@faceless-ui/scroll-info": "2.0.0", - "@payloadcms/next": "3.29.0", - "payload": "3.29.0", - "react": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020", - "react-dom": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020" - } - }, - "node_modules/@payloadcms/richtext-lexical/node_modules/@payloadcms/translations": { - "version": "3.29.0", - "resolved": "https://registry.npmjs.org/@payloadcms/translations/-/translations-3.29.0.tgz", - "integrity": "sha512-leM0AYBAsXFfmqM7OkQ546f7tAYAXOClDDiFi1D2SL1dcgKzbsWf3jPeCEZmZiUArolrXgWbfuHSnH7Ah78e/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "date-fns": "4.1.0" - } - }, - "node_modules/@payloadcms/translations": { - "version": "3.61.1", - "resolved": "https://registry.npmjs.org/@payloadcms/translations/-/translations-3.61.1.tgz", - "integrity": "sha512-pLx2+WMgzIaKZ8+6tdHIHFcKdXZMyzvKj5AxzZygtt9OZWK7tVX7Q7d08/ineeiuEdt4V1kyf0FXHN9OY1Alsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "date-fns": "4.1.0" - } - }, - "node_modules/@payloadcms/ui": { - "version": "3.29.0", - "resolved": "https://registry.npmjs.org/@payloadcms/ui/-/ui-3.29.0.tgz", - "integrity": "sha512-uTGB+T71fdlEhCtQAWzW1wDd15EUnc7hqNsM50ImuwPBqq7kMgtySrji0weG5atitXReZXJUEgHNvmhUtO+eWA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@date-fns/tz": "1.2.0", - "@dnd-kit/core": "6.0.8", - "@dnd-kit/sortable": "7.0.2", - "@faceless-ui/modal": "3.0.0-beta.2", - "@faceless-ui/scroll-info": "2.0.0", - "@faceless-ui/window-info": "3.0.1", - "@monaco-editor/react": "4.7.0", - "@payloadcms/translations": "3.29.0", - "bson-objectid": "2.0.4", - "date-fns": "4.1.0", - "dequal": "2.0.3", - "md5": "2.3.0", - "object-to-formdata": "4.5.1", - "qs-esm": "7.0.2", - "react-datepicker": "7.6.0", - "react-image-crop": "10.1.8", - "react-select": "5.9.0", - "scheduler": "0.25.0", - "sonner": "^1.7.2", - "ts-essentials": "10.0.3", - "use-context-selector": "2.0.0", - "uuid": "10.0.0" - }, - "engines": { - "node": "^18.20.2 || >=20.9.0" - }, - "peerDependencies": { - "next": "^15.0.0", - "payload": "3.29.0", - "react": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020", - "react-dom": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020" - } - }, - "node_modules/@payloadcms/ui/node_modules/@payloadcms/translations": { - "version": "3.29.0", - "resolved": "https://registry.npmjs.org/@payloadcms/translations/-/translations-3.29.0.tgz", - "integrity": "sha512-leM0AYBAsXFfmqM7OkQ546f7tAYAXOClDDiFi1D2SL1dcgKzbsWf3jPeCEZmZiUArolrXgWbfuHSnH7Ah78e/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "date-fns": "4.1.0" + "url": "https://github.com/phun-ky/typeof?sponsor=1" } }, - "node_modules/@phun-ky/typeof": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@phun-ky/typeof/-/typeof-2.0.3.tgz", - "integrity": "sha512-oeQJs1aa8Ghke8JIK9yuq/+KjMiaYeDZ38jx7MhkXncXlUKjqQ3wEm2X3qCKyjo+ZZofZj+WsEEiqkTtRuE2xQ==", + "node_modules/@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", "dev": true, "license": "MIT", "engines": { - "node": "^20.9.0 || >=22.0.0", - "npm": ">=10.8.2" + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/phun-ky/typeof?sponsor=1" + "url": "https://opencollective.com/pkgr" } }, "node_modules/@pnpm/config.env-replace": { @@ -6670,20 +6528,6 @@ "win32" ] }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "dev": true, - "license": "MIT" - }, - "node_modules/@rushstack/eslint-patch": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.14.1.tgz", - "integrity": "sha512-jGTk8UD/RdjsNZW8qq10r0RBvxL8OWtoT+kImlzPDFilmozzM+9QmIJsmze9UiSBrFU45ZxhTYBypn9q9z/VfQ==", - "dev": true, - "license": "MIT" - }, "node_modules/@sec-ant/readable-stream": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", @@ -7273,6 +7117,19 @@ "dev": true, "license": "MIT" }, + "node_modules/@sindresorhus/base62": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/base62/-/base62-1.0.0.tgz", + "integrity": "sha512-TeheYy0ILzBEI/CO55CP6zJCSdSWeRtGnHy8U8dWSUH4I68iqTsy7HkMktR4xakThc9jotkPQUXT4ITdbV7cHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@sindresorhus/is": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", @@ -7320,6 +7177,27 @@ "@sinonjs/commons": "^3.0.0" } }, + "node_modules/@stylistic/eslint-plugin": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-5.5.0.tgz", + "integrity": "sha512-IeZF+8H0ns6prg4VrkhgL+yrvDXWDH2cKchrbh80ejG9dQgZWp10epHMbgRuQvgchLII/lfh6Xn3lu6+6L86Hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.9.0", + "@typescript-eslint/types": "^8.46.1", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "estraverse": "^5.3.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": ">=9.0.0" + } + }, "node_modules/@swc-node/core": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@swc-node/core/-/core-1.14.1.tgz", @@ -7862,27 +7740,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/eslint": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", - "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint__js": { - "version": "8.42.3", - "resolved": "https://registry.npmjs.org/@types/eslint__js/-/eslint__js-8.42.3.tgz", - "integrity": "sha512-alfG737uhmPdnvkrLdZLcEKJ/B8s9Y4hrZ+YAdzUeoArBlSUERA2E87ROfOaS4jd/C45fzOoZzidLc1IPwLqOw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/eslint": "*" - } - }, "node_modules/@types/estree": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", @@ -7972,13 +7829,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/lodash": { "version": "4.17.20", "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.20.tgz", @@ -8011,9 +7861,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.18.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.12.tgz", - "integrity": "sha512-BICHQ67iqxQGFSzfCFTT7MRQ5XcBjG5aeKh5Ok38UBbPe5fxTyE+aHFxwVrGyr8GNlqFMLKD1D3P2K/1ks8tog==", + "version": "22.18.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.13.tgz", + "integrity": "sha512-Bo45YKIjnmFtv6I1TuC8AaHBbqXtIo+Om5fE4QiU1Tj8QR/qt+8O3BAtOimG5IFmwaWiPmB3Mv3jtYzBA4Us2A==", "dev": true, "license": "MIT", "dependencies": { @@ -8149,107 +7999,21 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.14.0.tgz", - "integrity": "sha512-tqp8H7UWFaZj0yNO6bycd5YjMwxa6wIHOLZvWPkidwbgLCsBMetQoGj7DPuAlWa2yGO3H48xmPwjhsSPPCGU5w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.14.0", - "@typescript-eslint/type-utils": "8.14.0", - "@typescript-eslint/utils": "8.14.0", - "@typescript-eslint/visitor-keys": "8.14.0", - "graphemer": "^1.4.0", - "ignore": "^5.3.1", - "natural-compare": "^1.4.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.14.0.tgz", - "integrity": "sha512-aBbBrnW9ARIDn92Zbo7rguLnqQ/pOrUguVpbUwzOhkFg2npFDwTgPGqFqE0H5feXcOoJOfX3SxlJaKEVtq54dw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.14.0", - "@typescript-eslint/visitor-keys": "8.14.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.14.0.tgz", - "integrity": "sha512-Xcz9qOtZuGusVOH5Uk07NGs39wrKkf3AxlkK79RBK6aJC1l03CobXjJbwBPSidetAOV+5rEVuiT1VSBUOAsanQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/typescript-estree": "8.14.0", - "@typescript-eslint/utils": "8.14.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.14.0.tgz", - "integrity": "sha512-yjeB9fnO/opvLJFAsPNYlKPnEM8+z4og09Pk504dkqonT02AyL5Z9SSqlE0XqezS93v6CXn49VHvB2G7XSsl0g==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.14.0.tgz", - "integrity": "sha512-OGqj6uB8THhrHj0Fk27DcHPojW7zKwKkPmHXHvQ58pLYp4hy8CSUdTKykKeh+5vFqTTVmjz0zCOOPKRovdsgHA==", + "version": "8.46.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.2.tgz", + "integrity": "sha512-ZGBMToy857/NIPaaCucIUQgqueOiq7HeAKkhlvqVV4lm089zUFW6ikRySx2v+cAhKeUCPuWVHeimyk6Dw1iY3w==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.14.0", - "@typescript-eslint/types": "8.14.0", - "@typescript-eslint/typescript-estree": "8.14.0" + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.46.2", + "@typescript-eslint/type-utils": "8.46.2", + "@typescript-eslint/utils": "8.46.2", + "@typescript-eslint/visitor-keys": "8.46.2", + "graphemer": "^1.4.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8259,33 +8023,32 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" + "@typescript-eslint/parser": "^8.46.2", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ts-api-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", - "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", "dev": true, "license": "MIT", "engines": { - "node": ">=16" - }, - "peerDependencies": { - "typescript": ">=4.2.0" + "node": ">= 4" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.14.0.tgz", - "integrity": "sha512-2p82Yn9juUJq0XynBXtFCyrBDb6/dJombnz6vbo6mgQEtWHfvHbQuEa9kAOVIt1c9YFwi7H6WxtPj1kg+80+RA==", + "version": "8.46.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.46.2.tgz", + "integrity": "sha512-BnOroVl1SgrPLywqxyqdJ4l3S2MsKVLDVxZvjI1Eoe8ev2r3kGDo+PcMihNmDE+6/KjkTubSJnmqGZZjQSBq/g==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.14.0", - "@typescript-eslint/types": "8.14.0", - "@typescript-eslint/typescript-estree": "8.14.0", - "@typescript-eslint/visitor-keys": "8.14.0", + "@typescript-eslint/scope-manager": "8.46.2", + "@typescript-eslint/types": "8.46.2", + "@typescript-eslint/typescript-estree": "8.46.2", + "@typescript-eslint/visitor-keys": "8.46.2", "debug": "^4.3.4" }, "engines": { @@ -8296,44 +8059,8 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.14.0.tgz", - "integrity": "sha512-aBbBrnW9ARIDn92Zbo7rguLnqQ/pOrUguVpbUwzOhkFg2npFDwTgPGqFqE0H5feXcOoJOfX3SxlJaKEVtq54dw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.14.0", - "@typescript-eslint/visitor-keys": "8.14.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.14.0.tgz", - "integrity": "sha512-yjeB9fnO/opvLJFAsPNYlKPnEM8+z4og09Pk504dkqonT02AyL5Z9SSqlE0XqezS93v6CXn49VHvB2G7XSsl0g==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/project-service": { @@ -8376,37 +8103,6 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/scope-manager/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.46.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.2.tgz", - "integrity": "sha512-tUFMXI4gxzzMXt4xpGJEsBsTox0XbNQ1y94EwlD/CuZwFcQP79xfQqMhau9HsRc/J0cAPA/HZt1dZPtGn9V/7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.46.2", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/scope-manager/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/@typescript-eslint/tsconfig-utils": { "version": "8.46.2", "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.46.2.tgz", @@ -8449,213 +8145,21 @@ "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.46.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.2.tgz", - "integrity": "sha512-f7rW7LJ2b7Uh2EiQ+7sza6RDZnajbNbemn54Ob6fRwQbgcIn+GWfyuHDHRYgRoZu1P4AayVScrRW+YfbTvPQoQ==", - "dev": true, - "license": "MIT", - "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" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.46.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.2.tgz", - "integrity": "sha512-tUFMXI4gxzzMXt4xpGJEsBsTox0XbNQ1y94EwlD/CuZwFcQP79xfQqMhau9HsRc/J0cAPA/HZt1dZPtGn9V/7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.46.2", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@typescript-eslint/types": { - "version": "8.46.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.2.tgz", - "integrity": "sha512-lNCWCbq7rpg7qDsQrd3D6NyWYu+gkTENkG5IKYhUIcxSb59SQC/hEQ+MrG4sTgBVghTonNWq42bA/d4yYumldQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.14.0.tgz", - "integrity": "sha512-OPXPLYKGZi9XS/49rdaCbR5j/S14HazviBlUQFvSKz3npr3NikF+mrgK7CFVur6XEt95DZp/cmke9d5i3vtVnQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "8.14.0", - "@typescript-eslint/visitor-keys": "8.14.0", - "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": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/types": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.14.0.tgz", - "integrity": "sha512-yjeB9fnO/opvLJFAsPNYlKPnEM8+z4og09Pk504dkqonT02AyL5Z9SSqlE0XqezS93v6CXn49VHvB2G7XSsl0g==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/ts-api-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", - "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "typescript": ">=4.2.0" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "8.46.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.46.2.tgz", - "integrity": "sha512-sExxzucx0Tud5tE0XqR0lT0psBQvEpnpiul9XbGUB1QwpWJJAps1O/Z7hJxLGiZLBKMCutjTzDgmd1muEhBnVg==", + "version": "8.46.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.2.tgz", + "integrity": "sha512-lNCWCbq7rpg7qDsQrd3D6NyWYu+gkTENkG5IKYhUIcxSb59SQC/hEQ+MrG4sTgBVghTonNWq42bA/d4yYumldQ==", "dev": true, "license": "MIT", - "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" - }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { + "node_modules/@typescript-eslint/typescript-estree": { "version": "8.46.2", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.2.tgz", "integrity": "sha512-f7rW7LJ2b7Uh2EiQ+7sza6RDZnajbNbemn54Ob6fRwQbgcIn+GWfyuHDHRYgRoZu1P4AayVScrRW+YfbTvPQoQ==", @@ -8684,25 +8188,7 @@ "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.46.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.2.tgz", - "integrity": "sha512-tUFMXI4gxzzMXt4xpGJEsBsTox0XbNQ1y94EwlD/CuZwFcQP79xfQqMhau9HsRc/J0cAPA/HZt1dZPtGn9V/7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.46.2", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/brace-expansion": { + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", @@ -8712,335 +8198,120 @@ "balanced-match": "^1.0.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=8.6.0" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.14.0.tgz", - "integrity": "sha512-vG0XZo8AdTH9OE6VFRwAZldNc7qtJ/6NLGWak+BtENuEUXGZgFpihILPiBvKXvJ2nFu27XNGC6rKiwuaoMbYzQ==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@typescript-eslint/types": "8.14.0", - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "is-glob": "^4.0.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/@typescript-eslint/types": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.14.0.tgz", - "integrity": "sha512-yjeB9fnO/opvLJFAsPNYlKPnEM8+z4og09Pk504dkqonT02AyL5Z9SSqlE0XqezS93v6CXn49VHvB2G7XSsl0g==", - "dev": true, - "license": "MIT", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">= 6" } }, - "node_modules/@unrs/resolver-binding-android-arm-eabi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", - "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-android-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", - "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", - "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", - "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-freebsd-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", - "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", - "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", - "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", - "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", - "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", - "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", - "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", - "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", - "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", - "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", - "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-wasm32-wasi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", - "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", - "cpu": [ - "wasm32" - ], + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, - "license": "MIT", - "optional": true, + "license": "ISC", "dependencies": { - "@napi-rs/wasm-runtime": "^0.2.11" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=14.0.0" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", - "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", - "cpu": [ - "arm64" - ], + "node_modules/@typescript-eslint/utils": { + "version": "8.46.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.46.2.tgz", + "integrity": "sha512-sExxzucx0Tud5tE0XqR0lT0psBQvEpnpiul9XbGUB1QwpWJJAps1O/Z7hJxLGiZLBKMCutjTzDgmd1muEhBnVg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "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" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } }, - "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", - "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", - "cpu": [ - "ia32" - ], + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.46.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.2.tgz", + "integrity": "sha512-tUFMXI4gxzzMXt4xpGJEsBsTox0XbNQ1y94EwlD/CuZwFcQP79xfQqMhau9HsRc/J0cAPA/HZt1dZPtGn9V/7w==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "dependencies": { + "@typescript-eslint/types": "8.46.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } }, - "node_modules/@unrs/resolver-binding-win32-x64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", - "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", - "cpu": [ - "x64" - ], + "node_modules/@vitest/eslint-plugin": { + "version": "1.3.26", + "resolved": "https://registry.npmjs.org/@vitest/eslint-plugin/-/eslint-plugin-1.3.26.tgz", + "integrity": "sha512-oP+Vyqgp+kLuMagG0tRkcT7e2tUoE+XWgti1OFxqdTpmMlSZJ6BWSC3rv8vzhtDXReXNyAJI1eojuc7N0QqbNQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "dependencies": { + "@typescript-eslint/scope-manager": "^8.46.1", + "@typescript-eslint/utils": "^8.46.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "eslint": ">=8.57.0", + "typescript": ">=5.0.0", + "vitest": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "vitest": { + "optional": true + } + } }, "node_modules/@vitest/expect": { "version": "3.2.4", @@ -9086,6 +8357,16 @@ } } }, + "node_modules/@vitest/mocker/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, "node_modules/@vitest/pretty-format": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", @@ -9157,6 +8438,72 @@ "url": "https://opencollective.com/vitest" } }, + "node_modules/@vue/compiler-core": { + "version": "3.5.22", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.22.tgz", + "integrity": "sha512-jQ0pFPmZwTEiRNSb+i9Ow/I/cHv2tXYqsnHKKyCQ08irI2kdF5qmYedmF8si8mA7zepUFmJ2hqzS8CQmNOWOkQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/parser": "^7.28.4", + "@vue/shared": "3.5.22", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.22", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.22.tgz", + "integrity": "sha512-W8RknzUM1BLkypvdz10OVsGxnMAuSIZs9Wdx1vzA3mL5fNMN15rhrSCLiTm6blWeACwUwizzPVqGJgOGBEN/hA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/compiler-core": "3.5.22", + "@vue/shared": "3.5.22" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.22", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.22.tgz", + "integrity": "sha512-tbTR1zKGce4Lj+JLzFXDq36K4vcSZbJ1RBu8FxcDv1IGRz//Dh2EBqksyGVypz3kXpshIfWKGOCcqpSbyGWRJQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/parser": "^7.28.4", + "@vue/compiler-core": "3.5.22", + "@vue/compiler-dom": "3.5.22", + "@vue/compiler-ssr": "3.5.22", + "@vue/shared": "3.5.22", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.19", + "postcss": "^8.5.6", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.22", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.22.tgz", + "integrity": "sha512-GdgyLvg4R+7T8Nk2Mlighx7XGxq/fJf9jaVofc3IL0EPesTE86cP/8DD1lT3h1JeZr2ySBvyqKQJgbS54IX1Ww==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@vue/compiler-dom": "3.5.22", + "@vue/shared": "3.5.22" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.22", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.22.tgz", + "integrity": "sha512-F4yc6palwq3TT0u+FYf0Ns4Tfl9GRFURDN2gWG7L1ecIaS/4fCIuFOjMTnCyjsu/OK6vaDKLCrGAa+KvvH+h4w==", + "dev": true, + "license": "MIT", + "peer": true + }, "node_modules/@xhmikosr/archive-type": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/@xhmikosr/archive-type/-/archive-type-7.1.0.tgz", @@ -9639,253 +8986,103 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/anymatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/arch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-3.0.0.tgz", - "integrity": "sha512-AmIAC+Wtm2AU8lGfTtHsw0Y9Qtftx2YXEEtiBP10xFUtMOA+sHHx6OAddyL52mUKh1vsXQ6/w1mVDptZCyUt4Q==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/argv-formatter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz", - "integrity": "sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/aria-query": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", - "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-ify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", - "dev": true, - "license": "MIT" - }, - "node_modules/array-includes": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", - "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.24.0", - "es-object-atoms": "^1.1.1", - "get-intrinsic": "^1.3.0", - "is-string": "^1.1.1", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlast": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", - "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", - "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "node_modules/ansis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/ansis/-/ansis-4.2.0.tgz", + "integrity": "sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==", "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-shim-unscopables": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "license": "ISC", + "engines": { + "node": ">=14" } }, - "node_modules/array.prototype.flat": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", - "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", "dev": true, "license": "MIT", + "peer": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 8" } }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", - "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, "engines": { - "node": ">= 0.4" + "node": ">=8.6" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", - "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "node_modules/arch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-3.0.0.tgz", + "integrity": "sha512-AmIAC+Wtm2AU8lGfTtHsw0Y9Qtftx2YXEEtiBP10xFUtMOA+sHHx6OAddyL52mUKh1vsXQ6/w1mVDptZCyUt4Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/are-docs-informative": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", + "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", "dev": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", - "es-shim-unscopables": "^1.0.2" - }, "engines": { - "node": ">= 0.4" + "node": ">=14" } }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/argv-formatter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz", + "integrity": "sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==", "dev": true, "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "peer": true + }, + "node_modules/array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", + "dev": true, + "license": "MIT" }, "node_modules/arrify": { "version": "1.0.1", @@ -9920,23 +9117,6 @@ "node": ">=4" } }, - "node_modules/ast-types-flow": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", - "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/async-mutex": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.5.0.tgz", @@ -9967,42 +9147,6 @@ "node": ">=8.0.0" } }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/axe-core": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.11.0.tgz", - "integrity": "sha512-ilYanEU8vxxBexpJd8cWM4ElSQq4QctCLKih0TSfjIfCQTeyH/6zVrmIJfLPrKTKJRbiG+cfnZbQIjAlJmF1jQ==", - "dev": true, - "license": "MPL-2.0", - "engines": { - "node": ">=4" - } - }, - "node_modules/axobject-query": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", - "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/b4a": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.3.tgz", @@ -10438,6 +9582,13 @@ "dev": true, "license": "MIT" }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true, + "license": "ISC" + }, "node_modules/bottleneck": { "version": "2.19.5", "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", @@ -10583,6 +9734,19 @@ "node": ">=4" } }, + "node_modules/builtin-modules": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-5.0.0.tgz", + "integrity": "sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/bundle-name": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", @@ -10689,56 +9853,6 @@ "node": ">=14.16" } }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -10853,6 +9967,13 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/change-case": { + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.4.tgz", + "integrity": "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==", + "dev": true, + "license": "MIT" + }, "node_modules/char-regex": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", @@ -10958,9 +10079,9 @@ "license": "ISC" }, "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", "dev": true, "funding": [ { @@ -10997,6 +10118,29 @@ "dev": true, "license": "MIT" }, + "node_modules/clean-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz", + "integrity": "sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/clean-regexp/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", @@ -11426,6 +10570,13 @@ "dot-prop": "^5.1.0" } }, + "node_modules/compare-versions": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.1.tgz", + "integrity": "sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==", + "dev": true, + "license": "MIT" + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -11707,6 +10858,20 @@ "node": ">=10" } }, + "node_modules/core-js-compat": { + "version": "3.46.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.46.0.tgz", + "integrity": "sha512-p9hObIIEENxSV8xIu+V68JjSeARg6UVMG5mR+JEUguG3sI6MsiS1njz2jHmyJDvA+8jX/sytkBHup6kxhM9law==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.26.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", @@ -11904,6 +11069,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/cssfilter": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", @@ -11928,85 +11106,24 @@ "node": ">=v12.20.0" } }, - "node_modules/damerau-levenshtein": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", - "dev": true, - "license": "BSD-2-Clause" - }, "node_modules/dargs": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", - "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, - "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", "dev": true, "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/inspect-js" + "node": ">=8" } }, - "node_modules/data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", "dev": true, "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 12" } }, "node_modules/dataloader": { @@ -12240,24 +11357,6 @@ "node": ">=10" } }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/define-lazy-prop": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", @@ -12271,24 +11370,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/defu": { "version": "6.1.4", "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", @@ -12386,13 +11467,13 @@ } }, "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", "dev": true, "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/dir-glob": { @@ -12408,19 +11489,6 @@ "node": ">=8" } }, - "node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/dom-helpers": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", @@ -12608,21 +11676,6 @@ } } }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/duplexer2": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", @@ -12679,9 +11732,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.241", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.241.tgz", - "integrity": "sha512-ILMvKX/ZV5WIJzzdtuHg8xquk2y0BOGlFOxBVwTpbiXqWIH0hamG45ddU4R3PQ0gYu+xgo0vdHXHli9sHIGb4w==", + "version": "1.5.243", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.243.tgz", + "integrity": "sha512-ZCphxFW3Q1TVhcgS9blfut1PX8lusVi2SvXQgmEEnK4TCmE1JhH2JkjJN+DNt0pJJwfBri5AROBnz2b/C+YU9g==", "dev": true, "license": "ISC" }, @@ -12699,9 +11752,9 @@ } }, "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", "dev": true, "license": "MIT" }, @@ -12713,6 +11766,16 @@ "license": "MIT", "peer": true }, + "node_modules/empathic": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/empathic/-/empathic-2.0.0.tgz", + "integrity": "sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, "node_modules/end-of-stream": { "version": "1.4.5", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", @@ -12723,6 +11786,34 @@ "once": "^1.4.0" } }, + "node_modules/enhanced-resolve": { + "version": "5.18.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", + "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/env-ci": { "version": "11.2.0", "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-11.2.0.tgz", @@ -12926,123 +12017,6 @@ "is-arrayish": "^0.2.1" } }, - "node_modules/es-abstract": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", - "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.3.0", - "get-proto": "^1.0.1", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.2.1", - "is-set": "^2.0.3", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.1", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.4", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.4", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "stop-iteration-iterator": "^1.1.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.19" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-iterator-helpers": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", - "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.3", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.6", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "iterator.prototype": "^1.1.4", - "safe-array-concat": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/es-module-lexer": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", @@ -13050,66 +12024,6 @@ "dev": true, "license": "MIT" }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", - "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/esbuild": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", @@ -13285,382 +12199,398 @@ } } }, - "node_modules/eslint-config-next": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.3.0.tgz", - "integrity": "sha512-+Z3M1W9MnJjX3W4vI9CHfKlEyhTWOUHvc5dB89FyRnzPsUkJlLWZOi8+1pInuVcSztSM4MwBFB0hIHf4Rbwu4g==", + "node_modules/eslint-compat-utils": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.6.5.tgz", + "integrity": "sha512-vAUHYzue4YAa2hNACjB8HvUQj5yehAZgiClyFVVom9cP8z5NSFq3PwB/TtJslN2zAMgRX6FCFCjYBbQh71g5RQ==", "dev": true, "license": "MIT", "dependencies": { - "@next/eslint-plugin-next": "15.3.0", - "@rushstack/eslint-patch": "^1.10.3", - "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", - "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-import-resolver-typescript": "^3.5.2", - "eslint-plugin-import": "^2.31.0", - "eslint-plugin-jsx-a11y": "^6.10.0", - "eslint-plugin-react": "^7.37.0", - "eslint-plugin-react-hooks": "^5.0.0" + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12" }, "peerDependencies": { - "eslint": "^7.23.0 || ^8.0.0 || ^9.0.0", - "typescript": ">=3.3.1" + "eslint": ">=6.0.0" + } + }, + "node_modules/eslint-config-flat-gitignore": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-flat-gitignore/-/eslint-config-flat-gitignore-2.1.0.tgz", + "integrity": "sha512-cJzNJ7L+psWp5mXM7jBX+fjHtBvvh06RBlcweMhKD8jWqQw0G78hOW5tpVALGHGFPsBV+ot2H+pdDGJy6CV8pA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint/compat": "^1.2.5" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "eslint": "^9.5.0" } }, - "node_modules/eslint-config-next/node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.46.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.2.tgz", - "integrity": "sha512-ZGBMToy857/NIPaaCucIUQgqueOiq7HeAKkhlvqVV4lm089zUFW6ikRySx2v+cAhKeUCPuWVHeimyk6Dw1iY3w==", + "node_modules/eslint-flat-config-utils": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/eslint-flat-config-utils/-/eslint-flat-config-utils-2.1.4.tgz", + "integrity": "sha512-bEnmU5gqzS+4O+id9vrbP43vByjF+8KOs+QuuV4OlqAuXmnRW2zfI/Rza1fQvdihQ5h4DUo0NqFAiViD4mSrzQ==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.46.2", - "@typescript-eslint/type-utils": "8.46.2", - "@typescript-eslint/utils": "8.46.2", - "@typescript-eslint/visitor-keys": "8.46.2", - "graphemer": "^1.4.0", - "ignore": "^7.0.0", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.1.0" + "pathe": "^2.0.3" }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/eslint-formatting-reporter": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/eslint-formatting-reporter/-/eslint-formatting-reporter-0.0.0.tgz", + "integrity": "sha512-k9RdyTqxqN/wNYVaTk/ds5B5rA8lgoAmvceYN7bcZMBwU7TuXx5ntewJv81eF3pIL/CiJE+pJZm36llG8yhyyw==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/antfu" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.46.2", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" + "eslint": ">=8.40.0" } }, - "node_modules/eslint-config-next/node_modules/@typescript-eslint/parser": { - "version": "8.46.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.46.2.tgz", - "integrity": "sha512-BnOroVl1SgrPLywqxyqdJ4l3S2MsKVLDVxZvjI1Eoe8ev2r3kGDo+PcMihNmDE+6/KjkTubSJnmqGZZjQSBq/g==", + "node_modules/eslint-json-compat-utils": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/eslint-json-compat-utils/-/eslint-json-compat-utils-0.2.1.tgz", + "integrity": "sha512-YzEodbDyW8DX8bImKhAcCeu/L31Dd/70Bidx2Qex9OFUtgzXLqtfWL4Hr5fM/aCCB8QUZLuJur0S9k6UfgFkfg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.46.2", - "@typescript-eslint/types": "8.46.2", - "@typescript-eslint/typescript-estree": "8.46.2", - "@typescript-eslint/visitor-keys": "8.46.2", - "debug": "^4.3.4" + "esquery": "^1.6.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=12" + }, + "peerDependencies": { + "eslint": "*", + "jsonc-eslint-parser": "^2.4.0" }, + "peerDependenciesMeta": { + "@eslint/json": { + "optional": true + } + } + }, + "node_modules/eslint-merge-processors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-merge-processors/-/eslint-merge-processors-2.0.0.tgz", + "integrity": "sha512-sUuhSf3IrJdGooquEUB5TNpGNpBoQccbnaLHsb1XkBLUPPqCNivCpY05ZcpCOiV9uHwO2yxXEWVczVclzMxYlA==", + "dev": true, + "license": "MIT", "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "eslint": "*" + } + }, + "node_modules/eslint-parser-plain": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/eslint-parser-plain/-/eslint-parser-plain-0.1.1.tgz", + "integrity": "sha512-KRgd6wuxH4U8kczqPp+Oyk4irThIhHWxgFgLDtpgjUGVIS3wGrJntvZW/p6hHq1T4FOwnOtCNkvAI4Kr+mQ/Hw==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true + }, + "node_modules/eslint-plugin-antfu": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-antfu/-/eslint-plugin-antfu-3.1.1.tgz", + "integrity": "sha512-7Q+NhwLfHJFvopI2HBZbSxWXngTwBLKxW1AGXLr2lEGxcEIK/AsDs8pn8fvIizl5aZjBbVbVK5ujmMpBe4Tvdg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" + "eslint": "*" } }, - "node_modules/eslint-config-next/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.46.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.2.tgz", - "integrity": "sha512-f7rW7LJ2b7Uh2EiQ+7sza6RDZnajbNbemn54Ob6fRwQbgcIn+GWfyuHDHRYgRoZu1P4AayVScrRW+YfbTvPQoQ==", + "node_modules/eslint-plugin-command": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-command/-/eslint-plugin-command-3.3.1.tgz", + "integrity": "sha512-fBVTXQ2y48TVLT0+4A6PFINp7GcdIailHAXbvPBixE7x+YpYnNQhFZxTdvnb+aWk+COgNebQKen/7m4dmgyWAw==", "dev": true, "license": "MIT", "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" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "@es-joy/jsdoccomment": "^0.50.2" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/antfu" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "eslint": "*" } }, - "node_modules/eslint-config-next/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.46.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.2.tgz", - "integrity": "sha512-tUFMXI4gxzzMXt4xpGJEsBsTox0XbNQ1y94EwlD/CuZwFcQP79xfQqMhau9HsRc/J0cAPA/HZt1dZPtGn9V/7w==", + "node_modules/eslint-plugin-es-x": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz", + "integrity": "sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==", "dev": true, + "funding": [ + "https://github.com/sponsors/ota-meshi", + "https://opencollective.com/eslint" + ], "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.46.2", - "eslint-visitor-keys": "^4.2.1" + "@eslint-community/eslint-utils": "^4.1.2", + "@eslint-community/regexpp": "^4.11.0", + "eslint-compat-utils": "^0.5.1" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^14.18.0 || >=16.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "peerDependencies": { + "eslint": ">=8" } }, - "node_modules/eslint-config-next/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "node_modules/eslint-plugin-es-x/node_modules/eslint-compat-utils": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", + "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/eslint-config-next/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", + "semver": "^7.5.4" + }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=12" }, - "funding": { - "url": "https://opencollective.com/eslint" + "peerDependencies": { + "eslint": ">=6.0.0" } }, - "node_modules/eslint-config-next/node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "node_modules/eslint-plugin-format": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-format/-/eslint-plugin-format-1.0.2.tgz", + "integrity": "sha512-ySrDaLQZbreNAr/Betq6ocd5Hxy3+LBIfWNV2621EQQ6yGf/ZSLtN2MiM62WO2YQTX+nSFhv332Tpp51q+AkZQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/eslint-config-next/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", + "optional": true, + "peer": true, "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" + "@dprint/formatter": "^0.3.0", + "@dprint/markdown": "^0.17.8", + "@dprint/toml": "^0.6.4", + "eslint-formatting-reporter": "^0.0.0", + "eslint-parser-plain": "^0.1.1", + "prettier": "^3.6.2", + "synckit": "^0.9.3" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/eslint-config-prettier": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", - "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", - "dev": true, - "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" + "url": "https://github.com/sponsors/antfu" }, "peerDependencies": { - "eslint": ">=7.0.0" + "eslint": "^8.40.0 || ^9.0.0" } }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "node_modules/eslint-plugin-format/node_modules/@pkgr/core": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.2.tgz", + "integrity": "sha512-fdDH1LSGfZdTH2sxdpVMw31BanV28K/Gry0cVFxaNP77neJSkd82mM8ErPNYs9e+0O7SdHBLTDzDgwUuy18RnQ==", "dev": true, "license": "MIT", - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" + "optional": true, + "peer": true, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" } }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/eslint-plugin-format/node_modules/synckit": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.3.tgz", + "integrity": "sha512-JJoOEKTfL1urb1mDoEblhD9NhEbWmq9jHEMEnxoC4ujUaZ4itA8vKgwkFAyNClgxplLi9tsUKX+EduK0p/l7sg==", "dev": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { - "ms": "^2.1.1" + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" } }, - "node_modules/eslint-import-resolver-typescript": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.1.tgz", - "integrity": "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==", + "node_modules/eslint-plugin-import-lite": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import-lite/-/eslint-plugin-import-lite-0.3.0.tgz", + "integrity": "sha512-dkNBAL6jcoCsXZsQ/Tt2yXmMDoNt5NaBh/U7yvccjiK8cai6Ay+MK77bMykmqQA2bTF6lngaLCDij6MTO3KkvA==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "@nolyfill/is-core-module": "1.0.39", - "debug": "^4.4.0", - "get-tsconfig": "^4.10.0", - "is-bun-module": "^2.0.0", - "stable-hash": "^0.0.5", - "tinyglobby": "^0.2.13", - "unrs-resolver": "^1.6.2" + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/types": "^8.34.0" }, "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-import-resolver-typescript" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "peerDependencies": { - "eslint": "*", - "eslint-plugin-import": "*", - "eslint-plugin-import-x": "*" + "eslint": ">=9.0.0", + "typescript": ">=4.5" }, "peerDependenciesMeta": { - "eslint-plugin-import": { - "optional": true - }, - "eslint-plugin-import-x": { + "typescript": { "optional": true } } }, - "node_modules/eslint-module-utils": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", - "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", + "node_modules/eslint-plugin-jsdoc": { + "version": "61.1.10", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-61.1.10.tgz", + "integrity": "sha512-ACsczYGax1Iu9zRBiG176I66cgL2nRt1TbMgE9TAzxoGKfBD9PjhA//K/JKk3uBk25RsYHj3TqMaAiy913IpEA==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "debug": "^3.2.7" + "@es-joy/jsdoccomment": "~0.76.0", + "@es-joy/resolve.exports": "1.2.0", + "are-docs-informative": "^0.0.2", + "comment-parser": "1.4.1", + "debug": "^4.4.3", + "escape-string-regexp": "^4.0.0", + "espree": "^10.4.0", + "esquery": "^1.6.0", + "html-entities": "^2.6.0", + "object-deep-merge": "^2.0.0", + "parse-imports-exports": "^0.2.4", + "semver": "^7.7.3", + "spdx-expression-parse": "^4.0.0", + "to-valid-identifier": "^1.0.0" }, "engines": { - "node": ">=4" + "node": ">=20.11.0" }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" } }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/eslint-plugin-jsdoc/node_modules/@es-joy/jsdoccomment": { + "version": "0.76.0", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.76.0.tgz", + "integrity": "sha512-g+RihtzFgGTx2WYCuTHbdOXJeAlGnROws0TeALx9ow/ZmOROOZkVg5wp/B44n0WJgI4SQFP1eWM2iRPlU2Y14w==", "dev": true, "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "@types/estree": "^1.0.8", + "@typescript-eslint/types": "^8.46.0", + "comment-parser": "1.4.1", + "esquery": "^1.6.0", + "jsdoc-type-pratt-parser": "~6.10.0" + }, + "engines": { + "node": ">=20.11.0" } }, - "node_modules/eslint-plugin-import": { - "version": "2.32.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", - "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", + "node_modules/eslint-plugin-jsdoc/node_modules/jsdoc-type-pratt-parser": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-6.10.0.tgz", + "integrity": "sha512-+LexoTRyYui5iOhJGn13N9ZazL23nAHGkXsa1p/C8yeq79WRfLBag6ZZ0FQG2aRoc9yfo59JT9EYCQonOkHKkQ==", "dev": true, "license": "MIT", - "dependencies": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.9", - "array.prototype.findlastindex": "^1.2.6", - "array.prototype.flat": "^1.3.3", - "array.prototype.flatmap": "^1.3.3", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.1", - "hasown": "^2.0.2", - "is-core-module": "^2.16.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.1", - "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.9", - "tsconfig-paths": "^3.15.0" - }, "engines": { - "node": ">=4" + "node": ">=20.0.0" + } + }, + "node_modules/eslint-plugin-jsdoc/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + "engines": { + "node": ">=10" } }, - "node_modules/eslint-plugin-import-x": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.4.2.tgz", - "integrity": "sha512-mDRXPSLQ0UQZQw91QdG4/qZT6hgeW2MJTczAbgPseUZuPEtIjjdPOolXroRkulnOn3fzj6gNgvk+wchMJiHElg==", + "node_modules/eslint-plugin-jsonc": { + "version": "2.21.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsonc/-/eslint-plugin-jsonc-2.21.0.tgz", + "integrity": "sha512-HttlxdNG5ly3YjP1cFMP62R4qKLxJURfBZo2gnMY+yQojZxkLyOpY1H1KRTKBmvQeSG9pIpSGEhDjE17vvYosg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/utils": "^8.1.0", - "debug": "^4.3.4", - "doctrine": "^3.0.0", - "eslint-import-resolver-node": "^0.3.9", - "get-tsconfig": "^4.7.3", - "is-glob": "^4.0.3", - "minimatch": "^9.0.3", - "semver": "^7.6.3", - "stable-hash": "^0.0.4", - "tslib": "^2.6.3" + "@eslint-community/eslint-utils": "^4.5.1", + "diff-sequences": "^27.5.1", + "eslint-compat-utils": "^0.6.4", + "eslint-json-compat-utils": "^0.2.1", + "espree": "^9.6.1 || ^10.3.0", + "graphemer": "^1.4.0", + "jsonc-eslint-parser": "^2.4.0", + "natural-compare": "^1.4.0", + "synckit": "^0.6.2 || ^0.7.3 || ^0.11.5" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" + "eslint": ">=6.0.0" } }, - "node_modules/eslint-plugin-import-x/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "node_modules/eslint-plugin-n": { + "version": "17.23.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.23.1.tgz", + "integrity": "sha512-68PealUpYoHOBh332JLLD9Sj7OQUDkFpmcfqt8R9sySfFSeuGJjMTJQvCRRB96zO3A/PELRLkPrzsHmzEFQQ5A==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/eslint-plugin-import-x/node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" + "@eslint-community/eslint-utils": "^4.5.0", + "enhanced-resolve": "^5.17.1", + "eslint-plugin-es-x": "^7.8.0", + "get-tsconfig": "^4.8.1", + "globals": "^15.11.0", + "globrex": "^0.1.2", + "ignore": "^5.3.2", + "semver": "^7.6.3", + "ts-declaration-location": "^1.0.6" }, "engines": { - "node": ">=6.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": ">=8.23.0" } }, - "node_modules/eslint-plugin-import-x/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "node_modules/eslint-plugin-n/node_modules/globals": { + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, + "license": "MIT", "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-import-x/node_modules/semver": { + "node_modules/eslint-plugin-n/node_modules/semver": { "version": "7.7.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", @@ -13673,493 +12603,459 @@ "node": ">=10" } }, - "node_modules/eslint-plugin-import-x/node_modules/stable-hash": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.4.tgz", - "integrity": "sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==", - "dev": true, - "license": "MIT" - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/eslint-plugin-no-only-tests": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-only-tests/-/eslint-plugin-no-only-tests-3.3.0.tgz", + "integrity": "sha512-brcKcxGnISN2CcVhXJ/kEQlNa0MEfGRtwKtWA16SkqXHKitaKIMrfemJKLKX1YqDU5C/5JY3PvZXd5jEW04e0Q==", "dev": true, "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "engines": { + "node": ">=5.0.0" } }, - "node_modules/eslint-plugin-jest": { - "version": "28.9.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.9.0.tgz", - "integrity": "sha512-rLu1s1Wf96TgUUxSw6loVIkNtUjq1Re7A9QdCCHSohnvXEBAjuL420h0T/fMmkQlNsQP2GhQzEUpYHPfxBkvYQ==", + "node_modules/eslint-plugin-perfectionist": { + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-perfectionist/-/eslint-plugin-perfectionist-4.15.1.tgz", + "integrity": "sha512-MHF0cBoOG0XyBf7G0EAFCuJJu4I18wy0zAoT1OHfx2o6EOx1EFTIzr2HGeuZa1kDcusoX0xJ9V7oZmaeFd773Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/utils": "^6.0.0 || ^7.0.0 || ^8.0.0" + "@typescript-eslint/types": "^8.38.0", + "@typescript-eslint/utils": "^8.38.0", + "natural-orderby": "^5.0.0" }, "engines": { - "node": "^16.10.0 || ^18.12.0 || >=20.0.0" + "node": "^18.0.0 || >=20.0.0" }, "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^6.0.0 || ^7.0.0 || ^8.0.0", - "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0", - "jest": "*" - }, - "peerDependenciesMeta": { - "@typescript-eslint/eslint-plugin": { - "optional": true - }, - "jest": { - "optional": true - } + "eslint": ">=8.45.0" } }, - "node_modules/eslint-plugin-jest-dom": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest-dom/-/eslint-plugin-jest-dom-5.4.0.tgz", - "integrity": "sha512-yBqvFsnpS5Sybjoq61cJiUsenRkC9K32hYQBFS9doBR7nbQZZ5FyO+X7MlmfM1C48Ejx/qTuOCgukDUNyzKZ7A==", + "node_modules/eslint-plugin-pnpm": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-pnpm/-/eslint-plugin-pnpm-1.3.0.tgz", + "integrity": "sha512-Lkdnj3afoeUIkDUu8X74z60nrzjQ2U55EbOeI+qz7H1He4IO4gmUKT2KQIl0It52iMHJeuyLDWWNgjr6UIK8nw==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/antfu" + }, + { + "type": "individual", + "url": "https://github.com/sponsors/sxzz" + } + ], "license": "MIT", "dependencies": { - "@babel/runtime": "^7.16.3", - "requireindex": "^1.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0", - "npm": ">=6", - "yarn": ">=1" + "empathic": "^2.0.0", + "jsonc-eslint-parser": "^2.4.1", + "pathe": "^2.0.3", + "pnpm-workspace-yaml": "1.3.0", + "tinyglobby": "^0.2.15", + "yaml-eslint-parser": "^1.3.0" }, "peerDependencies": { - "@testing-library/dom": "^8.0.0 || ^9.0.0 || ^10.0.0", - "eslint": "^6.8.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "@testing-library/dom": { - "optional": true - } + "eslint": "^9.0.0" } }, - "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", - "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", + "node_modules/eslint-plugin-react-dom": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-dom/-/eslint-plugin-react-dom-2.2.4.tgz", + "integrity": "sha512-mrr56eZsNF0m6NrZxV3wojQnxADLqYGB0A5FHYRuMEX8jmkOy0Jb7v6B4IdzLt0kI1HhAhriOogxOkFlCch/4w==", "dev": true, "license": "MIT", "dependencies": { - "aria-query": "^5.3.2", - "array-includes": "^3.1.8", - "array.prototype.flatmap": "^1.3.2", - "ast-types-flow": "^0.0.8", - "axe-core": "^4.10.0", - "axobject-query": "^4.1.0", - "damerau-levenshtein": "^1.0.8", - "emoji-regex": "^9.2.2", - "hasown": "^2.0.2", - "jsx-ast-utils": "^3.3.5", - "language-tags": "^1.0.9", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "safe-regex-test": "^1.0.3", - "string.prototype.includes": "^2.0.1" + "@eslint-react/ast": "2.2.4", + "@eslint-react/core": "2.2.4", + "@eslint-react/eff": "2.2.4", + "@eslint-react/shared": "2.2.4", + "@eslint-react/var": "2.2.4", + "@typescript-eslint/scope-manager": "^8.46.2", + "@typescript-eslint/types": "^8.46.2", + "@typescript-eslint/utils": "^8.46.2", + "compare-versions": "^6.1.1", + "string-ts": "^2.2.1", + "ts-pattern": "^5.9.0" }, "engines": { - "node": ">=4.0" + "node": ">=20.19.0" }, "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" + "eslint": "^9.38.0", + "typescript": "^5.9.3" } }, - "node_modules/eslint-plugin-perfectionist": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-perfectionist/-/eslint-plugin-perfectionist-3.9.1.tgz", - "integrity": "sha512-9WRzf6XaAxF4Oi5t/3TqKP5zUjERhasHmLFHin2Yw6ZAp/EP/EVA2dr3BhQrrHWCm5SzTMZf0FcjDnBkO2xFkA==", + "node_modules/eslint-plugin-react-hooks": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz", + "integrity": "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "^8.9.0", - "@typescript-eslint/utils": "^8.9.0", - "minimatch": "^9.0.5", - "natural-compare-lite": "^1.4.0" + "@babel/core": "^7.24.4", + "@babel/parser": "^7.24.4", + "hermes-parser": "^0.25.1", + "zod": "^3.25.0 || ^4.0.0", + "zod-validation-error": "^3.5.0 || ^4.0.0" }, "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": ">=18" }, "peerDependencies": { - "astro-eslint-parser": "^1.0.2", - "eslint": ">=8.0.0", - "svelte": ">=3.0.0", - "svelte-eslint-parser": "^0.41.1", - "vue-eslint-parser": ">=9.0.0" - }, - "peerDependenciesMeta": { - "astro-eslint-parser": { - "optional": true - }, - "svelte": { - "optional": true - }, - "svelte-eslint-parser": { - "optional": true - }, - "vue-eslint-parser": { - "optional": true - } + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" } }, - "node_modules/eslint-plugin-perfectionist/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "node_modules/eslint-plugin-react-hooks-extra": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks-extra/-/eslint-plugin-react-hooks-extra-2.2.4.tgz", + "integrity": "sha512-tS2xQyEx5QEbd71xkB0xo41/Vbnfo78eZRQYCMYkRmGzCb/Kkax6KXYs3wQH4HGWXBJ6KQloSPL+ISAhhqmtiQ==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "@eslint-react/ast": "2.2.4", + "@eslint-react/core": "2.2.4", + "@eslint-react/eff": "2.2.4", + "@eslint-react/shared": "2.2.4", + "@eslint-react/var": "2.2.4", + "@typescript-eslint/scope-manager": "^8.46.2", + "@typescript-eslint/type-utils": "^8.46.2", + "@typescript-eslint/types": "^8.46.2", + "@typescript-eslint/utils": "^8.46.2", + "string-ts": "^2.2.1", + "ts-pattern": "^5.9.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "eslint": "^9.38.0", + "typescript": "^5.9.3" } }, - "node_modules/eslint-plugin-perfectionist/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "node_modules/eslint-plugin-react-naming-convention": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-naming-convention/-/eslint-plugin-react-naming-convention-2.2.4.tgz", + "integrity": "sha512-/nUL8YeLI2g6pCK/HwNwH/KjlJ4x1kHErpOdMNVuOWEKxjaMSBFfb/gEaG6wrgNoCjQ9grzvtc4B3mkK9+fjDw==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "@eslint-react/ast": "2.2.4", + "@eslint-react/core": "2.2.4", + "@eslint-react/eff": "2.2.4", + "@eslint-react/shared": "2.2.4", + "@eslint-react/var": "2.2.4", + "@typescript-eslint/scope-manager": "^8.46.2", + "@typescript-eslint/type-utils": "^8.46.2", + "@typescript-eslint/types": "^8.46.2", + "@typescript-eslint/utils": "^8.46.2", + "string-ts": "^2.2.1", + "ts-pattern": "^5.9.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=20.19.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependencies": { + "eslint": "^9.38.0", + "typescript": "^5.9.3" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.24.tgz", + "integrity": "sha512-nLHIW7TEq3aLrEYWpVaJ1dRgFR+wLDPN8e8FpYAql/bMV2oBEfC37K0gLEGgv9fy66juNShSMV8OkTqzltcG/w==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": ">=8.40" } }, - "node_modules/eslint-plugin-react": { - "version": "7.37.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", - "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", + "node_modules/eslint-plugin-react-web-api": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-web-api/-/eslint-plugin-react-web-api-2.2.4.tgz", + "integrity": "sha512-ZdGQkDBFp9wjnoqj3xPhIzfDv07wFMYdd+uwg94xl3Zya5G+d+oUduPvSu4Du+ei6hyeWngua0njUQ8BmppyjQ==", "dev": true, "license": "MIT", "dependencies": { - "array-includes": "^3.1.8", - "array.prototype.findlast": "^1.2.5", - "array.prototype.flatmap": "^1.3.3", - "array.prototype.tosorted": "^1.1.4", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.2.1", - "estraverse": "^5.3.0", - "hasown": "^2.0.2", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.9", - "object.fromentries": "^2.0.8", - "object.values": "^1.2.1", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.5", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.12", - "string.prototype.repeat": "^1.0.0" + "@eslint-react/ast": "2.2.4", + "@eslint-react/core": "2.2.4", + "@eslint-react/eff": "2.2.4", + "@eslint-react/shared": "2.2.4", + "@eslint-react/var": "2.2.4", + "@typescript-eslint/scope-manager": "^8.46.2", + "@typescript-eslint/types": "^8.46.2", + "@typescript-eslint/utils": "^8.46.2", + "string-ts": "^2.2.1", + "ts-pattern": "^5.9.0" }, "engines": { - "node": ">=4" + "node": ">=20.19.0" }, "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + "eslint": "^9.38.0", + "typescript": "^5.9.3" } }, - "node_modules/eslint-plugin-react-debug": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-debug/-/eslint-plugin-react-debug-1.16.1.tgz", - "integrity": "sha512-AijumibZ+3hBYCGBEeD3GQse5TPnq9z6bX0qfsFwCwWjkW+siL2EEGvaxT7UZp2mcFMvoRJT3E4Jsemn6g0AGw==", + "node_modules/eslint-plugin-react-x": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-x/-/eslint-plugin-react-x-2.2.4.tgz", + "integrity": "sha512-mdoxE1SPt653/udAGQvwPob7ZgaPjIk47G0MWNwKtzLyuI0oD5X+6uq1QAn99TOM1q+sqjsCvvL7aMwGDuZ6aw==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/ast": "1.16.1", - "@eslint-react/core": "1.16.1", - "@eslint-react/jsx": "1.16.1", - "@eslint-react/shared": "1.16.1", - "@eslint-react/tools": "1.16.1", - "@eslint-react/types": "1.16.1", - "@eslint-react/var": "1.16.1", - "@typescript-eslint/scope-manager": "^8.13.0", - "@typescript-eslint/type-utils": "^8.13.0", - "@typescript-eslint/types": "^8.13.0", - "@typescript-eslint/utils": "^8.13.0", - "string-ts": "^2.2.0", - "ts-pattern": "^5.5.0" + "@eslint-react/ast": "2.2.4", + "@eslint-react/core": "2.2.4", + "@eslint-react/eff": "2.2.4", + "@eslint-react/shared": "2.2.4", + "@eslint-react/var": "2.2.4", + "@typescript-eslint/scope-manager": "^8.46.2", + "@typescript-eslint/type-utils": "^8.46.2", + "@typescript-eslint/types": "^8.46.2", + "@typescript-eslint/utils": "^8.46.2", + "compare-versions": "^6.1.1", + "is-immutable-type": "^5.0.1", + "string-ts": "^2.2.1", + "ts-api-utils": "^2.1.0", + "ts-pattern": "^5.9.0" }, "engines": { - "bun": ">=1.0.15", - "node": ">=18.18.0" + "node": ">=20.19.0" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": "^4.9.5 || ^5.3.3" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": false - }, - "typescript": { - "optional": true - } + "eslint": "^9.38.0", + "typescript": "^5.9.3" } }, - "node_modules/eslint-plugin-react-dom": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-dom/-/eslint-plugin-react-dom-1.16.1.tgz", - "integrity": "sha512-qJFfCR2Rofd5/V9/8EE4sg6a829HcI07DeK7qqTosYRPBYkwbfUUjvizzlTxneMAcPQuFfPZa1UMDTaejKStyg==", + "node_modules/eslint-plugin-regexp": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-2.10.0.tgz", + "integrity": "sha512-ovzQT8ESVn5oOe5a7gIDPD5v9bCSjIFJu57sVPDqgPRXicQzOnYfFN21WoQBQF18vrhT5o7UMKFwJQVVjyJ0ng==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/ast": "1.16.1", - "@eslint-react/core": "1.16.1", - "@eslint-react/jsx": "1.16.1", - "@eslint-react/shared": "1.16.1", - "@eslint-react/tools": "1.16.1", - "@eslint-react/types": "1.16.1", - "@eslint-react/var": "1.16.1", - "@typescript-eslint/scope-manager": "^8.13.0", - "@typescript-eslint/types": "^8.13.0", - "@typescript-eslint/utils": "^8.13.0", - "ts-pattern": "^5.5.0" + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.11.0", + "comment-parser": "^1.4.0", + "jsdoc-type-pratt-parser": "^4.0.0", + "refa": "^0.12.1", + "regexp-ast-analysis": "^0.7.1", + "scslre": "^0.3.0" }, "engines": { - "bun": ">=1.0.15", - "node": ">=18.18.0" + "node": "^18 || >=20" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": "^4.9.5 || ^5.3.3" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": false - }, - "typescript": { - "optional": true - } + "eslint": ">=8.44.0" } }, - "node_modules/eslint-plugin-react-hooks": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0.tgz", - "integrity": "sha512-hIOwI+5hYGpJEc4uPRmz2ulCjAGD/N13Lukkh8cLV0i2IRk/bdZDYjgLVHj+U9Z704kLIdIO6iueGvxNur0sgw==", + "node_modules/eslint-plugin-toml": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-toml/-/eslint-plugin-toml-0.12.0.tgz", + "integrity": "sha512-+/wVObA9DVhwZB1nG83D2OAQRrcQZXy+drqUnFJKymqnmbnbfg/UPmEMCKrJNcEboUGxUjYrJlgy+/Y930mURQ==", "dev": true, "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "eslint-compat-utils": "^0.6.0", + "lodash": "^4.17.19", + "toml-eslint-parser": "^0.10.0" + }, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" }, "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + "eslint": ">=6.0.0" } }, - "node_modules/eslint-plugin-react-hooks-extra": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks-extra/-/eslint-plugin-react-hooks-extra-1.16.1.tgz", - "integrity": "sha512-OJ4RJZ7n25XnF6+NaFC9dzrec2C+/o4zb4Brs+v6fVVbvQQZirgWamKZMOJo+I1HsHdOULtBo1uwopLfnVBihQ==", + "node_modules/eslint-plugin-unicorn": { + "version": "61.0.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-61.0.2.tgz", + "integrity": "sha512-zLihukvneYT7f74GNbVJXfWIiNQmkc/a9vYBTE4qPkQZswolWNdu+Wsp9sIXno1JOzdn6OUwLPd19ekXVkahRA==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/ast": "1.16.1", - "@eslint-react/core": "1.16.1", - "@eslint-react/jsx": "1.16.1", - "@eslint-react/shared": "1.16.1", - "@eslint-react/tools": "1.16.1", - "@eslint-react/types": "1.16.1", - "@eslint-react/var": "1.16.1", - "@typescript-eslint/scope-manager": "^8.13.0", - "@typescript-eslint/type-utils": "^8.13.0", - "@typescript-eslint/types": "^8.13.0", - "@typescript-eslint/utils": "^8.13.0", - "ts-pattern": "^5.5.0" + "@babel/helper-validator-identifier": "^7.27.1", + "@eslint-community/eslint-utils": "^4.7.0", + "@eslint/plugin-kit": "^0.3.3", + "change-case": "^5.4.4", + "ci-info": "^4.3.0", + "clean-regexp": "^1.0.0", + "core-js-compat": "^3.44.0", + "esquery": "^1.6.0", + "find-up-simple": "^1.0.1", + "globals": "^16.3.0", + "indent-string": "^5.0.0", + "is-builtin-module": "^5.0.0", + "jsesc": "^3.1.0", + "pluralize": "^8.0.0", + "regexp-tree": "^0.1.27", + "regjsparser": "^0.12.0", + "semver": "^7.7.2", + "strip-indent": "^4.0.0" }, "engines": { - "bun": ">=1.0.15", - "node": ">=18.18.0" + "node": "^20.10.0 || >=21.0.0" }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": "^4.9.5 || ^5.3.3" + "funding": { + "url": "https://github.com/sindresorhus/eslint-plugin-unicorn?sponsor=1" }, - "peerDependenciesMeta": { - "eslint": { - "optional": false - }, - "typescript": { - "optional": true - } + "peerDependencies": { + "eslint": ">=9.29.0" } }, - "node_modules/eslint-plugin-react-naming-convention": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-naming-convention/-/eslint-plugin-react-naming-convention-1.16.1.tgz", - "integrity": "sha512-qyZ6YW82vLHHQEboc0LhE+9Uga2koCtwEV0XYEWxq3DI3Wg1SlwsfchPYQc7skRh2c/Jh9YG2gzRmNXG4Ul2Ww==", + "node_modules/eslint-plugin-unicorn/node_modules/@eslint/core": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.2.tgz", + "integrity": "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@eslint-react/ast": "1.16.1", - "@eslint-react/core": "1.16.1", - "@eslint-react/jsx": "1.16.1", - "@eslint-react/shared": "1.16.1", - "@eslint-react/tools": "1.16.1", - "@eslint-react/types": "1.16.1", - "@typescript-eslint/scope-manager": "^8.13.0", - "@typescript-eslint/type-utils": "^8.13.0", - "@typescript-eslint/types": "^8.13.0", - "@typescript-eslint/utils": "^8.13.0", - "ts-pattern": "^5.5.0" + "@types/json-schema": "^7.0.15" }, "engines": { - "bun": ">=1.0.15", - "node": ">=18.18.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/eslint-plugin-unicorn/node_modules/@eslint/plugin-kit": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.5.tgz", + "integrity": "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.15.2", + "levn": "^0.4.1" }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": "^4.9.5 || ^5.3.3" + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/eslint-plugin-unicorn/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" }, - "peerDependenciesMeta": { - "eslint": { - "optional": false - }, - "typescript": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-react-web-api": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-web-api/-/eslint-plugin-react-web-api-1.16.1.tgz", - "integrity": "sha512-kQp8NlJESf87tVPyQnzyziVUwbqYhn0Xsrwj8joA8Bxnkt2bsylmDuMoBV0VntNYnfgoUvBj8D/OuZgb1IfLVQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-react/ast": "1.16.1", - "@eslint-react/core": "1.16.1", - "@eslint-react/jsx": "1.16.1", - "@eslint-react/shared": "1.16.1", - "@eslint-react/tools": "1.16.1", - "@eslint-react/types": "1.16.1", - "@eslint-react/var": "1.16.1", - "@typescript-eslint/scope-manager": "^8.13.0", - "@typescript-eslint/types": "^8.13.0", - "@typescript-eslint/utils": "^8.13.0", - "birecord": "^0.1.1", - "ts-pattern": "^5.5.0" + "node_modules/eslint-plugin-unicorn/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "bun": ">=1.0.15", - "node": ">=18.18.0" - }, + "node": ">=10" + } + }, + "node_modules/eslint-plugin-unused-imports": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-4.3.0.tgz", + "integrity": "sha512-ZFBmXMGBYfHttdRtOG9nFFpmUvMtbHSjsKrS20vdWdbfiVYsO3yA2SGYy9i9XmZJDfMGBflZGBCm70SEnFQtOA==", + "dev": true, + "license": "MIT", "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": "^4.9.5 || ^5.3.3" + "@typescript-eslint/eslint-plugin": "^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0", + "eslint": "^9.0.0 || ^8.0.0" }, "peerDependenciesMeta": { - "eslint": { - "optional": false - }, - "typescript": { + "@typescript-eslint/eslint-plugin": { "optional": true } } }, - "node_modules/eslint-plugin-react-x": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-x/-/eslint-plugin-react-x-1.16.1.tgz", - "integrity": "sha512-Oqu3DMLHXEisvXrAzk7lyZ57W6MlP8nOo3/PkcKtxImB5fCGYILKJY22Jz6hfWZ3MhTzEuVZru8x26Mev+9thQ==", + "node_modules/eslint-plugin-vue": { + "version": "10.5.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-10.5.1.tgz", + "integrity": "sha512-SbR9ZBUFKgvWAbq3RrdCtWaW0IKm6wwUiApxf3BVTNfqUIo4IQQmreMg2iHFJJ6C/0wss3LXURBJ1OwS/MhFcQ==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-react/ast": "1.16.1", - "@eslint-react/core": "1.16.1", - "@eslint-react/jsx": "1.16.1", - "@eslint-react/shared": "1.16.1", - "@eslint-react/tools": "1.16.1", - "@eslint-react/types": "1.16.1", - "@eslint-react/var": "1.16.1", - "@typescript-eslint/scope-manager": "^8.13.0", - "@typescript-eslint/type-utils": "^8.13.0", - "@typescript-eslint/types": "^8.13.0", - "@typescript-eslint/utils": "^8.13.0", - "is-immutable-type": "5.0.0", - "ts-pattern": "^5.5.0" + "@eslint-community/eslint-utils": "^4.4.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.1.1", + "postcss-selector-parser": "^6.0.15", + "semver": "^7.6.3", + "xml-name-validator": "^4.0.0" }, "engines": { - "bun": ">=1.0.15", - "node": ">=18.18.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "peerDependencies": { + "@stylistic/eslint-plugin": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0", + "@typescript-eslint/parser": "^7.0.0 || ^8.0.0", "eslint": "^8.57.0 || ^9.0.0", - "typescript": "^4.9.5 || ^5.3.3" + "vue-eslint-parser": "^10.0.0" }, "peerDependenciesMeta": { - "eslint": { - "optional": false + "@stylistic/eslint-plugin": { + "optional": true }, - "typescript": { + "@typescript-eslint/parser": { "optional": true } } }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/eslint-plugin-vue/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/eslint-plugin-regexp": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-regexp/-/eslint-plugin-regexp-2.6.0.tgz", - "integrity": "sha512-FCL851+kislsTEQEMioAlpDuK5+E5vs0hi1bF8cFlPlHcEjeRhuAzEsGikXRreE+0j4WhW2uO54MqTjXtYOi3A==", + "node_modules/eslint-plugin-yml": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-yml/-/eslint-plugin-yml-1.19.0.tgz", + "integrity": "sha512-S+4GbcCWksFKAvFJtf0vpdiCkZZvDJCV4Zsi9ahmYkYOYcf+LRqqzvzkb/ST7vTYV6sFwXOvawzYyL/jFT2nQA==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.9.1", - "comment-parser": "^1.4.0", - "jsdoc-type-pratt-parser": "^4.0.0", - "refa": "^0.12.1", - "regexp-ast-analysis": "^0.7.1", - "scslre": "^0.3.0" + "debug": "^4.3.2", + "diff-sequences": "^27.5.1", + "escape-string-regexp": "4.0.0", + "eslint-compat-utils": "^0.6.0", + "natural-compare": "^1.4.0", + "yaml-eslint-parser": "^1.2.1" }, "engines": { - "node": "^18 || >=20" + "node": "^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" }, "peerDependencies": { - "eslint": ">=8.44.0" + "eslint": ">=6.0.0" + } + }, + "node_modules/eslint-processor-vue-blocks": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-processor-vue-blocks/-/eslint-processor-vue-blocks-2.0.0.tgz", + "integrity": "sha512-u4W0CJwGoWY3bjXAuFpc/b6eK3NQEI8MoeW7ritKj3G3z/WtHrKjkqf+wk8mPEy5rlMGS+k6AZYOw2XBoN/02Q==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/compiler-sfc": "^3.3.0", + "eslint": ">=9.0.0" } }, "node_modules/eslint-scope": { @@ -14180,29 +13076,16 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/@eslint/js": { - "version": "9.38.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.38.0.tgz", - "integrity": "sha512-UZ1VpFvXf9J06YG9xQBdnzU+kthors6KjhMAl6f4gH4usHyh31rUf2DLGInT8RFYIReYXNSydgPY0V2LuWgl7A==", - "dev": true, - "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://eslint.org/donate" + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/ajv": { @@ -14222,19 +13105,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/eslint/node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -14273,19 +13143,6 @@ "node": ">=0.4.0" } }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -14363,14 +13220,12 @@ } }, "node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true, "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - } + "peer": true }, "node_modules/esutils": { "version": "2.0.3", @@ -14547,6 +13402,15 @@ "dev": true, "license": "MIT" }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "peer": true + }, "node_modules/fast-fifo": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", @@ -14555,9 +13419,9 @@ "license": "MIT" }, "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", "dev": true, "license": "MIT", "dependencies": { @@ -14565,7 +13429,7 @@ "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.8" + "micromatch": "^4.0.4" }, "engines": { "node": ">=8.6.0" @@ -14642,6 +13506,20 @@ "reusify": "^1.0.4" } }, + "node_modules/fault": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz", + "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "format": "^0.2.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/fb-watchman": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", @@ -14865,7 +13743,6 @@ "integrity": "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=18" }, @@ -14941,22 +13818,6 @@ } } }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/form-data-encoder": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", @@ -14967,6 +13828,15 @@ "node": ">= 14.17" } }, + "node_modules/format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, "node_modules/formdata-polyfill": { "version": "4.0.10", "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", @@ -15104,47 +13974,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/generator-function": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", - "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -15178,31 +14007,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/get-package-type": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", @@ -15213,20 +14017,6 @@ "node": ">=8.0.0" } }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/get-stdin": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", @@ -15253,24 +14043,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/get-tsconfig": { "version": "4.13.0", "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.0.tgz", @@ -15555,6 +14327,13 @@ "dev": true, "license": "MIT" }, + "node_modules/github-slugger": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", + "dev": true, + "license": "ISC" + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -15604,9 +14383,9 @@ } }, "node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "version": "16.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.4.0.tgz", + "integrity": "sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==", "dev": true, "license": "MIT", "engines": { @@ -15616,23 +14395,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/globrex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", @@ -15640,19 +14402,6 @@ "dev": true, "license": "MIT" }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/got": { "version": "13.0.0", "resolved": "https://registry.npmjs.org/got/-/got-13.0.0.tgz", @@ -15789,19 +14538,6 @@ "node": ">=6" } }, - "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -15812,64 +14548,6 @@ "node": ">=8" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -15890,6 +14568,23 @@ "dev": true, "license": "MIT" }, + "node_modules/hermes-estree": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "dev": true, + "license": "MIT" + }, + "node_modules/hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hermes-estree": "0.25.1" + } + }, "node_modules/highlight.js": { "version": "10.7.3", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", @@ -15954,6 +14649,23 @@ "license": "ISC", "peer": true }, + "node_modules/html-entities": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", + "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], + "license": "MIT" + }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -16288,21 +15000,6 @@ "kind-of": "^6.0.2" } }, - "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/into-stream": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-7.0.0.tgz", @@ -16334,90 +15031,36 @@ "node_modules/is-alphabetical": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", - "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-alphanumerical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", - "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-alphabetical": "^2.0.0", - "is-decimal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "dev": true, + "license": "MIT", "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", "dev": true, "license": "MIT", "dependencies": { - "has-bigints": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -16431,23 +15074,6 @@ "node": ">=8" } }, - "node_modules/is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", @@ -16455,40 +15081,20 @@ "dev": true, "license": "MIT" }, - "node_modules/is-bun-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", - "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", + "node_modules/is-builtin-module": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-5.0.0.tgz", + "integrity": "sha512-f4RqJKBUe5rQkJ2eJEJBXSticB3hGbN9j0yxxMQFqIW89Jp9WYFtzfTcRlstDKVUTRzSOTLKRfO9vIztenwtxA==", "dev": true, "license": "MIT", "dependencies": { - "semver": "^7.7.1" - } - }, - "node_modules/is-bun-module/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "builtin-modules": "^5.0.0" }, "engines": { - "node": ">=10" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" + "node": ">=18.20" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-core-module": { @@ -16507,41 +15113,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-decimal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", @@ -16579,22 +15150,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-fullwidth-code-point": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", @@ -16618,26 +15173,6 @@ "node": ">=6" } }, - "node_modules/is-generator-function": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", - "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", - "dev": true, - "license": "MIT", - "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" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -16663,14 +15198,14 @@ } }, "node_modules/is-immutable-type": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-immutable-type/-/is-immutable-type-5.0.0.tgz", - "integrity": "sha512-mcvHasqbRBWJznuPqqHRKiJgYAz60sZ0mvO3bN70JbkuK7ksfmgc489aKZYxMEjIbRvyOseaTjaRZLRF/xFeRA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/is-immutable-type/-/is-immutable-type-5.0.1.tgz", + "integrity": "sha512-LkHEOGVZZXxGl8vDs+10k3DvP++SEoYEAJLRk6buTFi6kD7QekThV7xHS0j6gpnUCQ0zpud/gMDGiV4dQneLTg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { "@typescript-eslint/type-utils": "^8.0.0", - "ts-api-utils": "^1.3.0", + "ts-api-utils": "^2.0.0", "ts-declaration-location": "^1.0.4" }, "peerDependencies": { @@ -16678,19 +15213,6 @@ "typescript": ">=4.7.4" } }, - "node_modules/is-immutable-type/node_modules/ts-api-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", - "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "typescript": ">=4.2.0" - } - }, "node_modules/is-inside-container": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", @@ -16723,32 +15245,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -16759,23 +15255,6 @@ "node": ">=0.12.0" } }, - "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", @@ -16796,54 +15275,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-ssh": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.1.tgz", @@ -16867,41 +15298,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-text-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", @@ -16915,79 +15311,17 @@ "node": ">=8" } }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-unicode-supported": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, + "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-wsl": { @@ -17130,24 +15464,6 @@ "node": ">=8" } }, - "node_modules/iterator.prototype": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", - "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "get-proto": "^1.0.0", - "has-symbols": "^1.1.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/java-properties": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", @@ -17427,6 +15743,22 @@ "dev": true, "license": "MIT" }, + "node_modules/jest-config/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/jest-config/node_modules/jest-regex-util": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", @@ -17453,6 +15785,16 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-diff/node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/jest-docblock": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", @@ -18176,6 +16518,22 @@ "dev": true, "license": "MIT" }, + "node_modules/jest-util/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/jest-util/node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -18444,9 +16802,9 @@ } }, "node_modules/jsdoc-type-pratt-parser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.8.0.tgz", - "integrity": "sha512-iZ8Bdb84lWRuGHamRXFyML07r21pcwBrLkHEuHgEY5UbCouBwv7ECknDRKzsQIXMiqpPymqtIf8TC/shYKB5rw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.1.0.tgz", + "integrity": "sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==", "dev": true, "license": "MIT", "engines": { @@ -18539,6 +16897,56 @@ "node": ">=6" } }, + "node_modules/jsonc-eslint-parser": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/jsonc-eslint-parser/-/jsonc-eslint-parser-2.4.1.tgz", + "integrity": "sha512-uuPNLJkKN8NXAlZlQ6kmUF9qO+T6Kyd7oV4+/7yy8Jz6+MZNyhPq8EdLpdfnPVzUC8qSf1b4j1azKaGnFsjmsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.5.0", + "eslint-visitor-keys": "^3.0.0", + "espree": "^9.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + } + }, + "node_modules/jsonc-eslint-parser/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/jsonc-eslint-parser/node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/jsonc-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", @@ -18596,22 +17004,6 @@ "jsox": "lib/cli.js" } }, - "node_modules/jsx-ast-utils": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" - }, - "engines": { - "node": ">=4.0" - } - }, "node_modules/kareem": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.6.3.tgz", @@ -18652,26 +17044,6 @@ "node": ">=6" } }, - "node_modules/language-subtag-registry": { - "version": "0.3.23", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", - "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/language-tags": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", - "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", - "dev": true, - "license": "MIT", - "dependencies": { - "language-subtag-registry": "^0.3.20" - }, - "engines": { - "node": ">=0.10" - } - }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -19032,6 +17404,24 @@ "node": ">=4" } }, + "node_modules/local-pkg": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.1.2.tgz", + "integrity": "sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==", + "dev": true, + "license": "MIT", + "dependencies": { + "mlly": "^1.7.4", + "pkg-types": "^2.3.0", + "quansync": "^0.2.11" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -19392,6 +17782,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/markdown-table": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", + "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/marked": { "version": "14.0.0", "resolved": "https://registry.npmjs.org/marked/-/marked-14.0.0.tgz", @@ -19429,78 +17830,237 @@ "marked": ">=1 <16" } }, - "node_modules/marked-terminal/node_modules/ansi-escapes": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.1.1.tgz", - "integrity": "sha512-Zhl0ErHcSRUaVfGUeUdDuLgpkEo8KIFjB4Y9uAc46ScOpdDiU1Dbyplh7qWJeJ/ZHpbyMSM26+X3BySgnIz40Q==", + "node_modules/marked-terminal/node_modules/ansi-escapes": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.1.1.tgz", + "integrity": "sha512-Zhl0ErHcSRUaVfGUeUdDuLgpkEo8KIFjB4Y9uAc46ScOpdDiU1Dbyplh7qWJeJ/ZHpbyMSM26+X3BySgnIz40Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "environment": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/marked-terminal/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", + "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", + "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-frontmatter": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz", + "integrity": "sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "escape-string-regexp": "^5.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-extension-frontmatter": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-frontmatter/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mdast-util-gfm": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", + "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", + "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "environment": "^1.0.0" - }, - "engines": { - "node": ">=18" + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/marked-terminal/node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "node_modules/mdast-util-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", "dev": true, "license": "MIT", - "peer": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.4" + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/md5": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", - "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "charenc": "0.0.2", - "crypt": "0.0.2", - "is-buffer": "~1.1.6" + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-from-markdown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", - "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark": "^4.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-stringify-position": "^4.0.0" + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, "funding": { "type": "opencollective", @@ -19698,6 +18258,151 @@ "micromark-util-types": "^2.0.0" } }, + "node_modules/micromark-extension-frontmatter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz", + "integrity": "sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "fault": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "dev": true, + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", + "dev": true, + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", + "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/micromark-extension-mdx-jsx": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.1.tgz", @@ -20339,6 +19044,51 @@ "dev": true, "license": "MIT" }, + "node_modules/mlly": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.0.tgz", + "integrity": "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.15.0", + "pathe": "^2.0.3", + "pkg-types": "^1.3.1", + "ufo": "^1.6.1" + } + }, + "node_modules/mlly/node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/mlly/node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/mlly/node_modules/pkg-types": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" + } + }, "node_modules/monaco-editor": { "version": "0.54.0", "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.54.0.tgz", @@ -20633,22 +19383,6 @@ "dev": true, "license": "MIT" }, - "node_modules/napi-postinstall": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", - "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", - "dev": true, - "license": "MIT", - "bin": { - "napi-postinstall": "lib/cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/napi-postinstall" - } - }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -20656,12 +19390,15 @@ "dev": true, "license": "MIT" }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "node_modules/natural-orderby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/natural-orderby/-/natural-orderby-5.0.0.tgz", + "integrity": "sha512-kKHJhxwpR/Okycz4HhQKKlhWe4ASEfPgkSWNmKFHd7+ezuQlxkA5cM3+XkBPvm1gmHen3w53qsYAv+8GwRrBlg==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=18" + } }, "node_modules/neo-async": { "version": "2.6.2", @@ -20732,16 +19469,14 @@ } }, "node_modules/next": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/next/-/next-15.3.0.tgz", - "integrity": "sha512-k0MgP6BsK8cZ73wRjMazl2y2UcXj49ZXLDEgx6BikWuby/CN+nh81qFFI16edgd7xYpe/jj2OZEIwCoqnzz0bQ==", + "version": "15.5.6", + "resolved": "https://registry.npmjs.org/next/-/next-15.5.6.tgz", + "integrity": "sha512-zTxsnI3LQo3c9HSdSf91O1jMNsEzIXDShXd4wVdg9y5shwLqBXi4ZtUUJyB86KGVSJLZx0PFONvO54aheGX8QQ==", "dev": true, "license": "MIT", "dependencies": { - "@next/env": "15.3.0", - "@swc/counter": "0.1.3", + "@next/env": "15.5.6", "@swc/helpers": "0.5.15", - "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", "styled-jsx": "5.1.6" @@ -20753,19 +19488,19 @@ "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "15.3.0", - "@next/swc-darwin-x64": "15.3.0", - "@next/swc-linux-arm64-gnu": "15.3.0", - "@next/swc-linux-arm64-musl": "15.3.0", - "@next/swc-linux-x64-gnu": "15.3.0", - "@next/swc-linux-x64-musl": "15.3.0", - "@next/swc-win32-arm64-msvc": "15.3.0", - "@next/swc-win32-x64-msvc": "15.3.0", - "sharp": "^0.34.1" + "@next/swc-darwin-arm64": "15.5.6", + "@next/swc-darwin-x64": "15.5.6", + "@next/swc-linux-arm64-gnu": "15.5.6", + "@next/swc-linux-arm64-musl": "15.5.6", + "@next/swc-linux-x64-gnu": "15.5.6", + "@next/swc-linux-x64-musl": "15.5.6", + "@next/swc-win32-arm64-msvc": "15.5.6", + "@next/swc-win32-x64-msvc": "15.5.6", + "sharp": "^0.34.3" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", - "@playwright/test": "^1.41.2", + "@playwright/test": "^1.51.1", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", @@ -20804,7 +19539,36 @@ "license": "Apache-2.0", "optional": true, "engines": { - "node": ">=8" + "node": ">=8" + } + }, + "node_modules/next/node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" } }, "node_modules/next/node_modules/semver": { @@ -20866,9 +19630,9 @@ } }, "node_modules/node-abi": { - "version": "3.78.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.78.0.tgz", - "integrity": "sha512-E2wEyrgX/CqvicaQYU3Ze1PFGjc4QYPGsjUrlYkqAE0WjHEZwgOsGMPMzkMse4LjJbDmaEuDX3CM036j5K2DSQ==", + "version": "3.79.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.79.0.tgz", + "integrity": "sha512-Pr/5KdBQGG8TirdkS0qN3B+f3eo8zTOfZQWAxHoJqopMz2/uvRnG+S4fWu/6AZxKei2CP2p/psdQ5HFC2Ap5BA==", "dev": true, "license": "MIT", "dependencies": { @@ -21229,6 +19993,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -21246,6 +20011,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -21257,13 +20023,15 @@ "version": "9.2.2", "dev": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/npm/node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -21281,6 +20049,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { "ansi-regex": "^6.0.1" }, @@ -21296,6 +20065,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "minipass": "^7.0.4" }, @@ -21307,13 +20077,15 @@ "version": "1.1.0", "dev": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "peer": true }, "node_modules/npm/node_modules/@npmcli/agent": { "version": "3.0.0", "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "agent-base": "^7.1.0", "http-proxy-agent": "^7.0.0", @@ -21330,6 +20102,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", "@npmcli/fs": "^4.0.0", @@ -21379,6 +20152,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "@npmcli/map-workspaces": "^4.0.1", "@npmcli/package-json": "^6.0.1", @@ -21398,6 +20172,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "semver": "^7.3.5" }, @@ -21410,6 +20185,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "@npmcli/promise-spawn": "^8.0.0", "ini": "^5.0.0", @@ -21429,6 +20205,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "npm-bundled": "^4.0.0", "npm-normalize-package-bin": "^4.0.0" @@ -21445,6 +20222,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "@npmcli/name-from-folder": "^3.0.0", "@npmcli/package-json": "^6.0.0", @@ -21460,6 +20238,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "cacache": "^19.0.0", "json-parse-even-better-errors": "^4.0.0", @@ -21476,6 +20255,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "@npmcli/git": "^6.0.0", "@npmcli/installed-package-contents": "^3.0.0", @@ -21507,6 +20287,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "engines": { "node": "^18.17.0 || >=20.5.0" } @@ -21516,6 +20297,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "engines": { "node": "^18.17.0 || >=20.5.0" } @@ -21525,6 +20307,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "@npmcli/git": "^6.0.0", "glob": "^10.2.2", @@ -21543,6 +20326,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "which": "^5.0.0" }, @@ -21555,6 +20339,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "postcss-selector-parser": "^7.0.0" }, @@ -21567,6 +20352,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "engines": { "node": "^18.17.0 || >=20.5.0" } @@ -21576,6 +20362,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "@npmcli/node-gyp": "^4.0.0", "@npmcli/package-json": "^6.0.0", @@ -21594,6 +20381,7 @@ "inBundle": true, "license": "MIT", "optional": true, + "peer": true, "engines": { "node": ">=14" } @@ -21603,6 +20391,7 @@ "dev": true, "inBundle": true, "license": "Apache-2.0", + "peer": true, "engines": { "node": "^18.17.0 || >=20.5.0" } @@ -21612,6 +20401,7 @@ "dev": true, "inBundle": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "@sigstore/protobuf-specs": "^0.4.1", "tuf-js": "^3.0.1" @@ -21625,6 +20415,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "engines": { "node": "^16.14.0 || >=18.0.0" } @@ -21634,6 +20425,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "engines": { "node": "^18.17.0 || >=20.5.0" } @@ -21643,6 +20435,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 14" } @@ -21652,6 +20445,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "engines": { "node": ">=8" } @@ -21661,6 +20455,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -21672,25 +20467,29 @@ "version": "2.0.0", "dev": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "peer": true }, "node_modules/npm/node_modules/archy": { "version": "1.0.0", "dev": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/npm/node_modules/balanced-match": { "version": "1.0.2", "dev": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/npm/node_modules/bin-links": { "version": "5.0.0", "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "cmd-shim": "^7.0.0", "npm-normalize-package-bin": "^4.0.0", @@ -21707,6 +20506,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "engines": { "node": ">=8" }, @@ -21719,6 +20519,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -21728,6 +20529,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "@npmcli/fs": "^4.0.0", "fs-minipass": "^3.0.0", @@ -21751,6 +20553,7 @@ "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", + "peer": true, "engines": { "node": ">=18" } @@ -21760,6 +20563,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "bin": { "mkdirp": "dist/cjs/src/bin.js" }, @@ -21775,6 +20579,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", @@ -21792,6 +20597,7 @@ "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", + "peer": true, "engines": { "node": ">=18" } @@ -21801,6 +20607,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -21813,6 +20620,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "engines": { "node": ">=10" } @@ -21828,6 +20636,7 @@ ], "inBundle": true, "license": "MIT", + "peer": true, "engines": { "node": ">=8" } @@ -21837,6 +20646,7 @@ "dev": true, "inBundle": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "ip-regex": "^5.0.0" }, @@ -21849,6 +20659,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { "string-width": "^4.2.3", "strip-ansi": "^6.0.1" @@ -21862,6 +20673,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "engines": { "node": "^18.17.0 || >=20.5.0" } @@ -21871,6 +20683,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -21882,19 +20695,22 @@ "version": "1.1.4", "dev": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/npm/node_modules/common-ancestor-path": { "version": "1.0.1", "dev": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "peer": true }, "node_modules/npm/node_modules/cross-spawn": { "version": "7.0.6", "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -21909,6 +20725,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "isexe": "^2.0.0" }, @@ -21924,6 +20741,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "bin": { "cssesc": "bin/cssesc" }, @@ -21936,6 +20754,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { "ms": "^2.1.3" }, @@ -21953,6 +20772,7 @@ "dev": true, "inBundle": true, "license": "BSD-3-Clause", + "peer": true, "engines": { "node": ">=0.3.1" } @@ -21961,13 +20781,15 @@ "version": "0.2.0", "dev": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/npm/node_modules/emoji-regex": { "version": "8.0.0", "dev": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/npm/node_modules/encoding": { "version": "0.1.13", @@ -21975,6 +20797,7 @@ "inBundle": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "iconv-lite": "^0.6.2" } @@ -21984,6 +20807,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "engines": { "node": ">=6" } @@ -21992,19 +20816,22 @@ "version": "2.0.3", "dev": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/npm/node_modules/exponential-backoff": { "version": "3.1.2", "dev": true, "inBundle": true, - "license": "Apache-2.0" + "license": "Apache-2.0", + "peer": true }, "node_modules/npm/node_modules/fastest-levenshtein": { "version": "1.0.16", "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 4.9.1" } @@ -22014,6 +20841,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" @@ -22030,6 +20858,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "minipass": "^7.0.3" }, @@ -22042,6 +20871,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -22061,13 +20891,15 @@ "version": "4.2.11", "dev": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "peer": true }, "node_modules/npm/node_modules/hosted-git-info": { "version": "8.1.0", "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "lru-cache": "^10.0.1" }, @@ -22079,13 +20911,15 @@ "version": "4.2.0", "dev": true, "inBundle": true, - "license": "BSD-2-Clause" + "license": "BSD-2-Clause", + "peer": true }, "node_modules/npm/node_modules/http-proxy-agent": { "version": "7.0.2", "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" @@ -22099,6 +20933,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { "agent-base": "^7.1.2", "debug": "4" @@ -22113,6 +20948,7 @@ "inBundle": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -22125,6 +20961,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "minimatch": "^9.0.0" }, @@ -22137,6 +20974,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "engines": { "node": ">=0.8.19" } @@ -22146,6 +20984,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "engines": { "node": "^18.17.0 || >=20.5.0" } @@ -22155,6 +20994,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "@npmcli/package-json": "^6.0.0", "npm-package-arg": "^12.0.0", @@ -22173,6 +21013,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { "jsbn": "1.1.0", "sprintf-js": "^1.1.3" @@ -22186,6 +21027,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -22198,6 +21040,7 @@ "dev": true, "inBundle": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "cidr-regex": "^4.1.1" }, @@ -22210,6 +21053,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "engines": { "node": ">=8" } @@ -22218,13 +21062,15 @@ "version": "2.0.0", "dev": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "peer": true }, "node_modules/npm/node_modules/jackspeak": { "version": "3.4.3", "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", + "peer": true, "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -22239,13 +21085,15 @@ "version": "1.1.0", "dev": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/npm/node_modules/json-parse-even-better-errors": { "version": "4.0.0", "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "engines": { "node": "^18.17.0 || >=20.5.0" } @@ -22255,6 +21103,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "funding": { "url": "https://github.com/sponsors/isaacs" } @@ -22266,25 +21115,29 @@ "node >= 0.2.0" ], "inBundle": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/npm/node_modules/just-diff": { "version": "6.0.2", "dev": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/npm/node_modules/just-diff-apply": { "version": "5.5.0", "dev": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/npm/node_modules/libnpmaccess": { "version": "9.0.0", "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "npm-package-arg": "^12.0.0", "npm-registry-fetch": "^18.0.1" @@ -22298,6 +21151,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "@npmcli/arborist": "^8.0.1", "@npmcli/installed-package-contents": "^3.0.0", @@ -22317,6 +21171,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "@npmcli/arborist": "^8.0.1", "@npmcli/run-script": "^9.0.1", @@ -22338,6 +21193,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "@npmcli/arborist": "^8.0.1" }, @@ -22350,6 +21206,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "aproba": "^2.0.0", "npm-registry-fetch": "^18.0.1" @@ -22363,6 +21220,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "aproba": "^2.0.0", "npm-registry-fetch": "^18.0.1" @@ -22376,6 +21234,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "@npmcli/arborist": "^8.0.1", "@npmcli/run-script": "^9.0.1", @@ -22391,6 +21250,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "ci-info": "^4.0.0", "normalize-package-data": "^7.0.0", @@ -22410,6 +21270,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "npm-registry-fetch": "^18.0.1" }, @@ -22422,6 +21283,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "aproba": "^2.0.0", "npm-registry-fetch": "^18.0.1" @@ -22435,6 +21297,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "@npmcli/git": "^6.0.1", "@npmcli/run-script": "^9.0.1", @@ -22450,13 +21313,15 @@ "version": "10.4.3", "dev": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "peer": true }, "node_modules/npm/node_modules/make-fetch-happen": { "version": "14.0.3", "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "@npmcli/agent": "^3.0.0", "cacache": "^19.0.1", @@ -22479,6 +21344,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 0.6" } @@ -22488,6 +21354,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -22503,6 +21370,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "engines": { "node": ">=16 || 14 >=14.17" } @@ -22512,6 +21380,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "minipass": "^7.0.3" }, @@ -22524,6 +21393,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { "minipass": "^7.0.3", "minipass-sized": "^1.0.3", @@ -22541,6 +21411,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "minipass": "^3.0.0" }, @@ -22553,6 +21424,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "yallist": "^4.0.0" }, @@ -22565,6 +21437,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "minipass": "^3.0.0" }, @@ -22577,6 +21450,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "yallist": "^4.0.0" }, @@ -22589,6 +21463,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "minipass": "^3.0.0" }, @@ -22601,6 +21476,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "yallist": "^4.0.0" }, @@ -22613,6 +21489,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { "minipass": "^7.1.2" }, @@ -22625,6 +21502,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "bin": { "mkdirp": "bin/cmd.js" }, @@ -22636,13 +21514,15 @@ "version": "2.1.3", "dev": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/npm/node_modules/mute-stream": { "version": "2.0.0", "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "engines": { "node": "^18.17.0 || >=20.5.0" } @@ -22652,6 +21532,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", @@ -22676,6 +21557,7 @@ "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", + "peer": true, "engines": { "node": ">=18" } @@ -22685,6 +21567,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "bin": { "mkdirp": "dist/cjs/src/bin.js" }, @@ -22700,6 +21583,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", @@ -22717,6 +21601,7 @@ "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", + "peer": true, "engines": { "node": ">=18" } @@ -22726,6 +21611,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "abbrev": "^3.0.0" }, @@ -22741,6 +21627,7 @@ "dev": true, "inBundle": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "hosted-git-info": "^8.0.0", "semver": "^7.3.5", @@ -22755,6 +21642,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "engines": { "node": "^18.17.0 || >=20.5.0" } @@ -22764,6 +21652,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "npm-normalize-package-bin": "^4.0.0" }, @@ -22776,6 +21665,7 @@ "dev": true, "inBundle": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "semver": "^7.1.1" }, @@ -22788,6 +21678,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "engines": { "node": "^18.17.0 || >=20.5.0" } @@ -22797,6 +21688,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "hosted-git-info": "^8.0.0", "proc-log": "^5.0.0", @@ -22812,6 +21704,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "ignore-walk": "^7.0.0" }, @@ -22824,6 +21717,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "npm-install-checks": "^7.1.0", "npm-normalize-package-bin": "^4.0.0", @@ -22839,6 +21733,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "npm-registry-fetch": "^18.0.0", "proc-log": "^5.0.0" @@ -22852,6 +21747,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "@npmcli/redact": "^3.0.0", "jsonparse": "^1.3.1", @@ -22871,6 +21767,7 @@ "dev": true, "inBundle": true, "license": "BSD-2-Clause", + "peer": true, "engines": { "node": "^18.17.0 || >=20.5.0" } @@ -22880,6 +21777,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "engines": { "node": ">=18" }, @@ -22891,13 +21789,15 @@ "version": "1.0.1", "dev": true, "inBundle": true, - "license": "BlueOak-1.0.0" + "license": "BlueOak-1.0.0", + "peer": true }, "node_modules/npm/node_modules/pacote": { "version": "19.0.1", "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "@npmcli/git": "^6.0.0", "@npmcli/installed-package-contents": "^3.0.0", @@ -22929,6 +21829,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "json-parse-even-better-errors": "^4.0.0", "just-diff": "^6.0.0", @@ -22943,6 +21844,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "engines": { "node": ">=8" } @@ -22952,6 +21854,7 @@ "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", + "peer": true, "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -22968,6 +21871,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -22981,6 +21885,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "engines": { "node": "^18.17.0 || >=20.5.0" } @@ -22990,6 +21895,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "engines": { "node": "^18.17.0 || >=20.5.0" } @@ -22999,6 +21905,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "funding": { "url": "https://github.com/sponsors/isaacs" } @@ -23008,6 +21915,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "funding": { "url": "https://github.com/sponsors/isaacs" } @@ -23017,6 +21925,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { "err-code": "^2.0.2", "retry": "^0.12.0" @@ -23030,6 +21939,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "read": "^4.0.0" }, @@ -23041,6 +21951,7 @@ "version": "0.12.0", "dev": true, "inBundle": true, + "peer": true, "bin": { "qrcode-terminal": "bin/qrcode-terminal.js" } @@ -23050,6 +21961,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "mute-stream": "^2.0.0" }, @@ -23062,6 +21974,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "engines": { "node": "^18.17.0 || >=20.5.0" } @@ -23071,6 +21984,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "json-parse-even-better-errors": "^4.0.0", "npm-normalize-package-bin": "^4.0.0" @@ -23084,6 +21998,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 4" } @@ -23093,13 +22008,15 @@ "dev": true, "inBundle": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/npm/node_modules/semver": { "version": "7.7.2", "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "bin": { "semver": "bin/semver.js" }, @@ -23112,6 +22029,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { "shebang-regex": "^3.0.0" }, @@ -23124,6 +22042,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "engines": { "node": ">=8" } @@ -23133,6 +22052,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "engines": { "node": ">=14" }, @@ -23145,6 +22065,7 @@ "dev": true, "inBundle": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "@sigstore/bundle": "^3.1.0", "@sigstore/core": "^2.0.0", @@ -23162,6 +22083,7 @@ "dev": true, "inBundle": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "@sigstore/protobuf-specs": "^0.4.0" }, @@ -23174,6 +22096,7 @@ "dev": true, "inBundle": true, "license": "Apache-2.0", + "peer": true, "engines": { "node": "^18.17.0 || >=20.5.0" } @@ -23183,6 +22106,7 @@ "dev": true, "inBundle": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "@sigstore/bundle": "^3.1.0", "@sigstore/core": "^2.0.0", @@ -23200,6 +22124,7 @@ "dev": true, "inBundle": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "@sigstore/bundle": "^3.1.0", "@sigstore/core": "^2.0.0", @@ -23214,6 +22139,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" @@ -23224,6 +22150,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" @@ -23238,6 +22165,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", @@ -23252,6 +22180,7 @@ "dev": true, "inBundle": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -23262,6 +22191,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -23271,13 +22201,15 @@ "version": "2.5.0", "dev": true, "inBundle": true, - "license": "CC-BY-3.0" + "license": "CC-BY-3.0", + "peer": true }, "node_modules/npm/node_modules/spdx-expression-parse": { "version": "4.0.0", "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -23287,19 +22219,22 @@ "version": "3.0.21", "dev": true, "inBundle": true, - "license": "CC0-1.0" + "license": "CC0-1.0", + "peer": true }, "node_modules/npm/node_modules/sprintf-js": { "version": "1.1.3", "dev": true, "inBundle": true, - "license": "BSD-3-Clause" + "license": "BSD-3-Clause", + "peer": true }, "node_modules/npm/node_modules/ssri": { "version": "12.0.0", "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "minipass": "^7.0.3" }, @@ -23312,6 +22247,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -23327,6 +22263,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -23341,6 +22278,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -23354,6 +22292,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -23366,6 +22305,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -23378,6 +22318,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -23395,6 +22336,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "minipass": "^3.0.0" }, @@ -23407,6 +22349,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "yallist": "^4.0.0" }, @@ -23419,6 +22362,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "engines": { "node": ">=8" } @@ -23428,6 +22372,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -23441,6 +22386,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "yallist": "^4.0.0" }, @@ -23452,19 +22398,22 @@ "version": "0.2.0", "dev": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/npm/node_modules/tiny-relative-date": { "version": "1.3.0", "dev": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/npm/node_modules/tinyglobby": { "version": "0.2.14", "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { "fdir": "^6.4.4", "picomatch": "^4.0.2" @@ -23481,6 +22430,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "peerDependencies": { "picomatch": "^3 || ^4" }, @@ -23495,6 +22445,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -23507,6 +22458,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -23516,6 +22468,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { "@tufjs/models": "3.0.1", "debug": "^4.3.6", @@ -23530,6 +22483,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { "@tufjs/canonical-json": "2.0.0", "minimatch": "^9.0.5" @@ -23543,6 +22497,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "unique-slug": "^5.0.0" }, @@ -23555,6 +22510,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "imurmurhash": "^0.1.4" }, @@ -23566,13 +22522,15 @@ "version": "1.0.2", "dev": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/npm/node_modules/validate-npm-package-license": { "version": "3.0.4", "dev": true, "inBundle": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -23583,6 +22541,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -23593,6 +22552,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "engines": { "node": "^18.17.0 || >=20.5.0" } @@ -23601,13 +22561,15 @@ "version": "3.0.1", "dev": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "peer": true }, "node_modules/npm/node_modules/which": { "version": "5.0.0", "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "isexe": "^3.1.1" }, @@ -23623,6 +22585,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "engines": { "node": ">=16" } @@ -23632,6 +22595,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -23650,6 +22614,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -23667,6 +22632,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -23682,6 +22648,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -23693,13 +22660,15 @@ "version": "9.2.2", "dev": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": { "version": "5.1.2", "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -23717,6 +22686,7 @@ "dev": true, "inBundle": true, "license": "MIT", + "peer": true, "dependencies": { "ansi-regex": "^6.0.1" }, @@ -23732,6 +22702,7 @@ "dev": true, "inBundle": true, "license": "ISC", + "peer": true, "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^4.0.1" @@ -23744,7 +22715,21 @@ "version": "4.0.0", "dev": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "peer": true + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } }, "node_modules/nypm": { "version": "0.6.2", @@ -23766,13 +22751,6 @@ "node": "^14.16.0 || >=16.10.0" } }, - "node_modules/nypm/node_modules/tinyexec": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.1.tgz", - "integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==", - "dev": true, - "license": "MIT" - }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -23783,28 +22761,12 @@ "node": ">=0.10.0" } }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "node_modules/object-deep-merge": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/object-deep-merge/-/object-deep-merge-2.0.0.tgz", + "integrity": "sha512-3DC3UMpeffLTHiuXSy/UG4NOIYTLlY9u3V82+djSCLYClWobZiS4ivYzpIUWrRY/nfsJ8cWsKyG3QfyLePmhvg==", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } + "license": "MIT" }, "node_modules/object-to-formdata": { "version": "4.5.1", @@ -23813,96 +22775,6 @@ "dev": true, "license": "MIT" }, - "node_modules/object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", - "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.values": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", - "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/obuf": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", @@ -24077,24 +22949,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/own-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", - "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.6", - "object-keys": "^1.1.1", - "safe-push-apply": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/oxc-resolver": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/oxc-resolver/-/oxc-resolver-1.12.0.tgz", @@ -24270,6 +23124,13 @@ "node": ">= 14" } }, + "node_modules/package-manager-detector": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.5.0.tgz", + "integrity": "sha512-uBj69dVlYe/+wxj8JOpr97XfsxH/eumMt6HqjNTmJDf/6NO9s+0uxeOneIz3AsPt2m6y9PqzDzd3ATcU17MNfw==", + "dev": true, + "license": "MIT" + }, "node_modules/packet-reader": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", @@ -24317,6 +23178,26 @@ "dev": true, "license": "MIT" }, + "node_modules/parse-gitignore": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-gitignore/-/parse-gitignore-2.0.0.tgz", + "integrity": "sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/parse-imports-exports": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/parse-imports-exports/-/parse-imports-exports-0.2.4.tgz", + "integrity": "sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse-statements": "1.0.11" + } + }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -24360,6 +23241,13 @@ "protocols": "^2.0.0" } }, + "node_modules/parse-statements": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/parse-statements/-/parse-statements-1.0.11.tgz", + "integrity": "sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==", + "dev": true, + "license": "MIT" + }, "node_modules/parse-url": { "version": "9.2.0", "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-9.2.0.tgz", @@ -24529,22 +23417,6 @@ "date-fns": "4.1.0" } }, - "node_modules/payload/node_modules/ci-info": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", - "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/payload/node_modules/get-tsconfig": { "version": "4.8.1", "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", @@ -25071,20 +23943,30 @@ "node": ">=4" } }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "node_modules/pnpm-workspace-yaml": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/pnpm-workspace-yaml/-/pnpm-workspace-yaml-1.3.0.tgz", + "integrity": "sha512-Krb5q8Totd5mVuLx7we+EFHq/AfxA75nbfTm25Q1pIf606+RlaKUG+PXH8SDihfe5b5k4H09gE+sL47L1t5lbw==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/antfu" + }, + { + "type": "individual", + "url": "https://github.com/sponsors/sxzz" + } + ], "license": "MIT", - "engines": { - "node": ">= 0.4" + "dependencies": { + "yaml": "^2.8.1" } }, "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "dev": true, "funding": [ { @@ -25102,14 +23984,28 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" } }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/postgres-array": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-3.0.4.tgz", @@ -25268,6 +24164,21 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", @@ -25510,6 +24421,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/quansync": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz", + "integrity": "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/antfu" + }, + { + "type": "individual", + "url": "https://github.com/sponsors/sxzz" + } + ], + "license": "MIT" + }, "node_modules/queue": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", @@ -26023,40 +24951,30 @@ "node": ">=8" } }, - "node_modules/refa": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/refa/-/refa-0.12.1.tgz", - "integrity": "sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==", + "node_modules/redent/node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/regexpp": "^4.8.0" + "min-indent": "^1.0.0" }, "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", - "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "node_modules/refa": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/refa/-/refa-0.12.1.tgz", + "integrity": "sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.1", - "which-builtin-type": "^1.2.1" + "@eslint-community/regexpp": "^4.8.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/regexp-ast-analysis": { @@ -26073,39 +24991,54 @@ "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", - "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "node_modules/regexp-tree": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz", + "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", + "dev": true, + "license": "MIT", + "bin": { + "regexp-tree": "bin/regexp-tree" + } + }, + "node_modules/registry-auth-token": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.1.0.tgz", + "integrity": "sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "set-function-name": "^2.0.2" + "@pnpm/npm-conf": "^2.1.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=14" + } + }, + "node_modules/regjsparser": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.0.2" + }, + "bin": { + "regjsparser": "bin/parser" } }, - "node_modules/registry-auth-token": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.1.0.tgz", - "integrity": "sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw==", + "node_modules/regjsparser/node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "@pnpm/npm-conf": "^2.1.0" + "bin": { + "jsesc": "bin/jsesc" }, "engines": { - "node": ">=14" + "node": ">=6" } }, "node_modules/release-it": { @@ -26156,22 +25089,6 @@ "node": "^20.12.0 || >=22.0.0" } }, - "node_modules/release-it/node_modules/ci-info": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", - "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/release-it/node_modules/semver": { "version": "7.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", @@ -26205,14 +25122,17 @@ "node": ">=0.10.0" } }, - "node_modules/requireindex": { + "node_modules/reserved-identifiers": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", - "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", + "resolved": "https://registry.npmjs.org/reserved-identifiers/-/reserved-identifiers-1.2.0.tgz", + "integrity": "sha512-yE7KUfFvaBFzGPs5H3Ops1RevfUEsDc5Iz65rOwWg4lE8HJSYtle77uul3+573457oHvBKuHYDl/xqUkKpEEdw==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.5" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/resolve": { @@ -26505,33 +25425,6 @@ "tslib": "^2.1.0" } }, - "node_modules/safe-array-concat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", - "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "has-symbols": "^1.1.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-array-concat/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -26553,48 +25446,6 @@ ], "license": "MIT" }, - "node_modules/safe-push-apply": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", - "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-push-apply/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/safe-stable-stringify": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", @@ -27199,55 +26050,6 @@ "dev": true, "license": "ISC" }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", - "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/sharp": { "version": "0.32.6", "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz", @@ -27295,93 +26097,6 @@ "node": ">=8" } }, - "node_modules/short-unique-id": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/short-unique-id/-/short-unique-id-5.3.2.tgz", - "integrity": "sha512-KRT/hufMSxXKEDSQujfVE0Faa/kZ51ihUcZQAcmP04t00DvPj7Ox5anHke1sJYUtzSuiT/Y5uyzg/W7bBEGhCg==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "short-unique-id": "bin/short-unique-id", - "suid": "bin/short-unique-id" - } - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/sift": { "version": "17.1.3", "resolved": "https://registry.npmjs.org/sift/-/sift-17.1.3.tgz", @@ -27861,6 +26576,17 @@ "spdx-license-ids": "^3.0.0" } }, + "node_modules/spdx-correct/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, "node_modules/spdx-exceptions": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", @@ -27869,9 +26595,9 @@ "license": "CC-BY-3.0" }, "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", + "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", "dev": true, "license": "MIT", "dependencies": { @@ -27903,13 +26629,6 @@ "dev": true, "license": "BSD-3-Clause" }, - "node_modules/stable-hash": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", - "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==", - "dev": true, - "license": "MIT" - }, "node_modules/stack-utils": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", @@ -27967,20 +26686,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stop-iteration-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", - "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "internal-slot": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/stream-combiner2": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", @@ -28065,189 +26770,69 @@ "dev": true, "license": "MIT" }, - "node_modules/string-argv": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", - "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6.19" - } - }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-ts": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/string-ts/-/string-ts-2.2.1.tgz", - "integrity": "sha512-Q2u0gko67PLLhbte5HmPfdOjNvUKbKQM+mCNQae6jE91DmoFHY6HH9GcdqCeNx87DZ2KKjiFxmA0R/42OneGWw==", - "dev": true, - "license": "MIT" - }, - "node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string-width/node_modules/emoji-regex": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", - "dev": true, - "license": "MIT" - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/string.prototype.includes": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", - "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", + "node_modules/string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", "dev": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3" - }, "engines": { - "node": ">= 0.4" + "node": ">=0.6.19" } }, - "node_modules/string.prototype.matchall": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", - "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "regexp.prototype.flags": "^1.5.3", - "set-function-name": "^2.0.2", - "side-channel": "^1.1.0" + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.repeat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", - "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "node": ">=10" } }, - "node_modules/string.prototype.trim": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "node_modules/string-ts": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/string-ts/-/string-ts-2.2.1.tgz", + "integrity": "sha512-Q2u0gko67PLLhbte5HmPfdOjNvUKbKQM+mCNQae6jE91DmoFHY6HH9GcdqCeNx87DZ2KKjiFxmA0R/42OneGWw==", "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-data-property": "^1.1.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-object-atoms": "^1.0.0", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "license": "MIT" }, - "node_modules/string.prototype.trimend": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/stringify-entities": { @@ -28320,16 +26905,16 @@ } }, "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.1.1.tgz", + "integrity": "sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==", "dev": true, "license": "MIT", - "dependencies": { - "min-indent": "^1.0.0" - }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/strip-json-comments": { @@ -28476,6 +27061,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/synckit": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", + "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.2.9" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" + } + }, "node_modules/tabbable": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.3.0.tgz", @@ -28483,6 +27084,20 @@ "dev": true, "license": "MIT" }, + "node_modules/tapable": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, "node_modules/tar-fs": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.1.tgz", @@ -28607,13 +27222,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, - "license": "MIT" - }, "node_modules/thenify": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", @@ -28732,9 +27340,9 @@ "license": "MIT" }, "node_modules/tinyexec": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", - "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.1.tgz", + "integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==", "dev": true, "license": "MIT" }, @@ -28832,6 +27440,23 @@ "to-no-case": "^1.0.0" } }, + "node_modules/to-valid-identifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-valid-identifier/-/to-valid-identifier-1.0.0.tgz", + "integrity": "sha512-41wJyvKep3yT2tyPqX/4blcfybknGB4D+oETKLs7Q76UiPqRpUJK3hr1nxelyYO0PHKVzJwlu0aCeEAsGI6rpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/base62": "^1.0.0", + "reserved-identifiers": "^1.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/token-types": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.1.1.tgz", @@ -28851,6 +27476,35 @@ "url": "https://github.com/sponsors/Borewit" } }, + "node_modules/toml-eslint-parser": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/toml-eslint-parser/-/toml-eslint-parser-0.10.0.tgz", + "integrity": "sha512-khrZo4buq4qVmsGzS5yQjKe/WsFvV8fGfOjDQN0q4iy9FjRfPWRgTFrU8u1R2iu/SfWLhY9WnCi4Jhdrcbtg+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + } + }, + "node_modules/toml-eslint-parser/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/tr46": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz", @@ -28977,42 +27631,6 @@ } } }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/tsconfig-paths/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", @@ -29477,220 +28095,70 @@ "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dev": true, "license": "Apache-2.0", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", - "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", - "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.15", - "reflect.getprototypeof": "^1.0.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", - "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", - "dev": true, - "license": "MIT", - "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" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typescript": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", - "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "dependencies": { + "safe-buffer": "^5.0.1" }, "engines": { - "node": ">=14.17" + "node": "*" } }, - "node_modules/typescript-eslint": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.14.0.tgz", - "integrity": "sha512-K8fBJHxVL3kxMmwByvz8hNdBJ8a0YqKzKDX6jRlrjMuNXyd5T2V02HIq37+OiWXvUUOXgOOGiSSOh26Mh8pC3w==", + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.14.0", - "@typescript-eslint/parser": "8.14.0", - "@typescript-eslint/utils": "8.14.0" + "prelude-ls": "^1.2.1" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">= 0.8.0" } }, - "node_modules/typescript-eslint/node_modules/@typescript-eslint/scope-manager": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.14.0.tgz", - "integrity": "sha512-aBbBrnW9ARIDn92Zbo7rguLnqQ/pOrUguVpbUwzOhkFg2npFDwTgPGqFqE0H5feXcOoJOfX3SxlJaKEVtq54dw==", + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.14.0", - "@typescript-eslint/visitor-keys": "8.14.0" - }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=4" } }, - "node_modules/typescript-eslint/node_modules/@typescript-eslint/types": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.14.0.tgz", - "integrity": "sha512-yjeB9fnO/opvLJFAsPNYlKPnEM8+z4og09Pk504dkqonT02AyL5Z9SSqlE0XqezS93v6CXn49VHvB2G7XSsl0g==", + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, - "license": "MIT", + "license": "(MIT OR CC0-1.0)", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/typescript-eslint/node_modules/@typescript-eslint/utils": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.14.0.tgz", - "integrity": "sha512-OGqj6uB8THhrHj0Fk27DcHPojW7zKwKkPmHXHvQ58pLYp4hy8CSUdTKykKeh+5vFqTTVmjz0zCOOPKRovdsgHA==", + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.14.0", - "@typescript-eslint/types": "8.14.0", - "@typescript-eslint/typescript-estree": "8.14.0" + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" + "node": ">=14.17" } }, + "node_modules/ufo": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz", + "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==", + "dev": true, + "license": "MIT" + }, "node_modules/uglify-js": { "version": "3.19.3", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", @@ -29719,25 +28187,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/unbox-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-bigints": "^1.0.2", - "has-symbols": "^1.1.0", - "which-boxed-primitive": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/unbzip2-stream": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", @@ -29898,41 +28347,6 @@ "node": ">= 10.0.0" } }, - "node_modules/unrs-resolver": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", - "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "napi-postinstall": "^0.3.0" - }, - "funding": { - "url": "https://opencollective.com/unrs-resolver" - }, - "optionalDependencies": { - "@unrs/resolver-binding-android-arm-eabi": "1.11.1", - "@unrs/resolver-binding-android-arm64": "1.11.1", - "@unrs/resolver-binding-darwin-arm64": "1.11.1", - "@unrs/resolver-binding-darwin-x64": "1.11.1", - "@unrs/resolver-binding-freebsd-x64": "1.11.1", - "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", - "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", - "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", - "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", - "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", - "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-x64-musl": "1.11.1", - "@unrs/resolver-binding-wasm32-wasi": "1.11.1", - "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", - "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", - "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" - } - }, "node_modules/untildify": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", @@ -30074,6 +28488,17 @@ "spdx-expression-parse": "^3.0.0" } }, + "node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, "node_modules/vfile-message": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz", @@ -30657,35 +29082,6 @@ "@esbuild/win32-x64": "0.25.11" } }, - "node_modules/vite/node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.11", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, "node_modules/vitest": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz", @@ -30759,6 +29155,50 @@ } } }, + "node_modules/vitest/node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/vue-eslint-parser": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-10.2.0.tgz", + "integrity": "sha512-CydUvFOQKD928UzZhTp4pr2vWz1L+H99t7Pkln2QSPdvmURT0MoC4wUccfCnuEaihNsu9aYYyk+bep8rlfkUXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.6.0", + "semver": "^7.6.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -30819,102 +29259,6 @@ "node": ">= 8" } }, - "node_modules/which-boxed-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", - "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-bigint": "^1.1.0", - "is-boolean-object": "^1.2.1", - "is-number-object": "^1.1.1", - "is-string": "^1.1.1", - "is-symbol": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", - "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", - "is-async-function": "^2.0.0", - "is-date-object": "^1.1.0", - "is-finalizationregistry": "^1.1.0", - "is-generator-function": "^1.0.10", - "is-regex": "^1.2.1", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.1.0", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, - "node_modules/which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/why-is-node-running": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", @@ -31223,6 +29567,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12" + } + }, "node_modules/xss": { "version": "1.0.15", "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.15.tgz", @@ -31287,6 +29641,36 @@ "node": ">= 14.6" } }, + "node_modules/yaml-eslint-parser": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/yaml-eslint-parser/-/yaml-eslint-parser-1.3.0.tgz", + "integrity": "sha512-E/+VitOorXSLiAqtTd7Yqax0/pAS3xaYMP+AUUJGOK1OZG3rhcj9fcJOM5HJ2VrP1FrStVCWr1muTfQCdj4tAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.0.0", + "yaml": "^2.0.0" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + } + }, + "node_modules/yaml-eslint-parser/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", @@ -31420,6 +29804,29 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/zod": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.12.tgz", + "integrity": "sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-validation-error": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-4.0.2.tgz", + "integrity": "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "zod": "^3.25.0 || ^4.0.0" + } + }, "node_modules/zwitch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", diff --git a/package.json b/package.json index adfa2e1..b432acf 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,21 @@ { "name": "payload-auditor", + "type": "module", "version": "1.8.0", "description": "Simple, fast and customizable plugin for payload cms", - "license": "MIT", - "type": "module", "author": { "name": "seyed mojtaba shadab | shaadcode", "email": "shaadcode@gmail.com" }, + "license": "MIT", + "homepage": "https://github.com/shaadcode/payload-auditor#readme", + "repository": { + "type": "git", + "url": "https://github.com/shaadcode/payload-auditor" + }, + "bugs": { + "url": "https://github.com/shaadcode/payload-auditor/issues" + }, "keywords": [ "payload", "plugin", @@ -20,28 +28,31 @@ ], "exports": { ".": { - "import": "./dist/index.js", "types": "./dist/index.d.ts", + "import": "./dist/index.js", "default": "./dist/index.js" }, "./client": { - "import": "./dist/exports/client.js", "types": "./dist/exports/client.d.ts", + "import": "./dist/exports/client.js", "default": "./dist/exports/client.js" }, "./rsc": { - "import": "./dist/exports/rsc.js", "types": "./dist/exports/rsc.d.ts", + "import": "./dist/exports/rsc.js", "default": "./dist/exports/rsc.js" } }, "main": "./dist/index.js", "types": "./dist/index.d.ts", "files": [ - "dist", + "LICENSE", "README.md", - "LICENSE" + "dist" ], + "engines": { + "node": "^18.20.2 || >=20.19.1" + }, "scripts": { "build:safe": "npm run test && npm run check-types && npm run copyfiles && npm run build:types && npm run build:swc", "build:swc": "swc ./src -d ./dist --config-file .swcrc --strip-leading-paths --ignore **/*.test.ts **/*.test.tsx **/__tests__/**", @@ -53,8 +64,12 @@ "dev:generate-importmap": "npm run dev:payload generate:importmap", "dev:generate-types": "npm run dev:payload generate:types", "dev:payload": "cross-env PAYLOAD_CONFIG_PATH=./dev/payload.config.ts payload", - "lint": "eslint", - "lint:fix": "eslint ./src --fix", + "eslint": "eslint .", + "lint": "npm run eslint:base", + "lint:commit": "npm run lint-staged", + "lint:fix": "npm run eslint:base -- --fix", + "eslint:base": "eslint . --cache --cache-location .cache/eslint/ --no-warn-ignored", + "eslint:clear": "rimraf .cache/eslint", "manual-publish": "npm publish --access public", "check-types": "npx tsc --noEmit --pretty", "prepublishOnly": "npm run clean && npm run build", @@ -68,14 +83,19 @@ "lint-staged": "lint-staged", "pre-release": "release-it --config .release-it.prerelease.ts --preRelease=beta" }, + "peerDependencies": { + "payload": "^3.29.0" + }, "devDependencies": { + "@antfu/eslint-config": "^6.1.0", "@commitlint/cli": "^18.4.1", "@commitlint/config-conventional": "^19.8.0", + "@eslint-react/eslint-plugin": "^2.2.4", "@eslint/eslintrc": "^3.2.0", + "@next/eslint-plugin-next": "^16.0.1", "@payloadcms/db-mongodb": "3.29.0", "@payloadcms/db-postgres": "3.29.0", "@payloadcms/db-sqlite": "3.29.0", - "@payloadcms/eslint-config": "3.9.0", "@payloadcms/next": "3.29.0", "@payloadcms/richtext-lexical": "3.29.0", "@payloadcms/translations": "^3.39.1", @@ -92,17 +112,18 @@ "copyfiles": "2.4.1", "cross-env": "^7.0.3", "cz-git": "^1.11.1", - "eslint": "^9.23.0", - "eslint-config-next": "15.3.0", + "eslint": "^9.38.0", + "eslint-plugin-perfectionist": "^4.15.1", + "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-react-refresh": "^0.4.24", "graphql": "^16.8.1", "husky": "^9.1.7", "jest": "29.7.0", "lint-staged": "^15.5.1", "mongodb-memory-server": "^10.1.2", - "next": "15.3.0", + "next": "^15.5.6", "open": "^10.1.0", "payload": "3.29.0", - "prettier": "^3.4.2", "qs-esm": "7.0.2", "react": "19.1.0", "react-dom": "19.1.0", @@ -110,16 +131,10 @@ "rimraf": "3.0.2", "sharp": "0.32.6", "sort-package-json": "^2.10.0", - "typescript": "5.7.3", + "typescript": "^5.9.3", "vite-tsconfig-paths": "^5.1.4", "vitest": "^3.1.2" }, - "peerDependencies": { - "payload": "^3.29.0" - }, - "engines": { - "node": "^18.20.2 || >=20.19.1" - }, "publishConfig": { "exports": { ".": { @@ -151,13 +166,5 @@ "path": "node_modules/cz-git" } }, - "repository": { - "type": "git", - "url": "https://github.com/shaadcode/payload-auditor" - }, - "bugs": { - "url": "https://github.com/shaadcode/payload-auditor/issues" - }, - "homepage": "https://github.com/shaadcode/payload-auditor#readme", "registry": "https://registry.npmjs.org/" } diff --git a/src/Constant/Constant.ts b/src/Constant/Constant.ts index f2c3f22..31cf20b 100644 --- a/src/Constant/Constant.ts +++ b/src/Constant/Constant.ts @@ -1,17 +1,16 @@ -import type { LabelFunction, StaticLabel } from 'payload' +import type { LabelFunction, StaticLabel } from 'payload'; -import type { AllCollectionHooks } from './../types/pluginOptions.js' +import type { AllCollectionHooks } from './../types/pluginOptions.js'; +import { sharedLogic } from './../core/log-builders/collections/shared.js'; -import { sharedLogic } from './../core/log-builders/collections/shared.js' - -type DefaultCollectionValues = { +interface DefaultCollectionValues { labels: | { - plural?: LabelFunction | StaticLabel | undefined - singular?: LabelFunction | StaticLabel - } - | undefined - slug: string + plural?: LabelFunction | StaticLabel | undefined; + singular?: LabelFunction | StaticLabel; + } + | undefined; + slug: string; } export const defaultCollectionValues: DefaultCollectionValues = { @@ -20,14 +19,14 @@ export const defaultCollectionValues: DefaultCollectionValues = { plural: 'Audit-logs', singular: 'Audit-log', }, -} +}; export const defaultPluginOpts = { collection: { trackCollections: [], }, enabled: true, -} +}; export const hookMap: AllCollectionHooks = { afterChange: async (args) => { @@ -37,9 +36,9 @@ export const hookMap: AllCollectionHooks = { hook: 'afterChange', operation: args.operation, req: args.req, - }) + }); - return args.doc + return args.doc; }, afterDelete: async (args) => { await sharedLogic(args, { @@ -48,9 +47,9 @@ export const hookMap: AllCollectionHooks = { hook: 'afterDelete', operation: 'delete', req: args.req, - }) + }); - return {} + return {}; }, afterError: async (args) => { await sharedLogic(args, { @@ -59,9 +58,9 @@ export const hookMap: AllCollectionHooks = { hook: 'afterError', operation: 'error', req: args.req, - }) + }); - return {} + return {}; }, afterForgotPassword: async (args) => { await sharedLogic(args, { @@ -70,9 +69,9 @@ export const hookMap: AllCollectionHooks = { hook: 'afterForgotPassword', operation: 'forgotPassword', req: args.args.req, - }) + }); - return {} + return {}; }, afterLogin: async (args) => { await sharedLogic(args, { @@ -81,9 +80,9 @@ export const hookMap: AllCollectionHooks = { hook: 'afterLogin', operation: 'delete', req: args.req, - }) + }); - return {} + return {}; }, afterLogout: async (args) => { await sharedLogic(args, { @@ -92,9 +91,9 @@ export const hookMap: AllCollectionHooks = { hook: 'afterLogout', operation: 'logout', req: args.req, - }) + }); - return {} + return {}; }, afterMe: async (args) => { await sharedLogic(args, { @@ -103,9 +102,9 @@ export const hookMap: AllCollectionHooks = { hook: 'afterMe', operation: 'me', req: args.req, - }) + }); - return {} + return {}; }, afterOperation: async (args) => { await sharedLogic(args, { @@ -115,8 +114,8 @@ export const hookMap: AllCollectionHooks = { hook: 'afterOperation', operation: args.operation, req: args.req, - }) - return args.result + }); + return args.result; }, afterRead: async (args) => { await sharedLogic(args, { @@ -125,9 +124,9 @@ export const hookMap: AllCollectionHooks = { hook: 'afterRead', operation: 'read', req: args.req, - }) + }); - return args.doc + return args.doc; }, afterRefresh: async (args) => { await sharedLogic(args, { @@ -136,8 +135,8 @@ export const hookMap: AllCollectionHooks = { hook: 'afterRefresh', operation: 'refresh', req: args.req, - }) - return {} + }); + return {}; }, beforeChange: async (args) => { await sharedLogic(args, { @@ -146,9 +145,9 @@ export const hookMap: AllCollectionHooks = { hook: 'beforeChange', operation: args.operation, req: args.req, - }) + }); - return args.data + return args.data; }, beforeDelete: async (args) => { await sharedLogic(args, { @@ -157,9 +156,9 @@ export const hookMap: AllCollectionHooks = { hook: 'beforeDelete', operation: 'delete', req: args.req, - }) + }); - return {} + return {}; }, beforeLogin: async (args) => { await sharedLogic(args, { @@ -168,8 +167,8 @@ export const hookMap: AllCollectionHooks = { hook: 'beforeLogin', operation: 'read', req: args.req, - }) - return args.user + }); + return args.user; }, beforeOperation: async (args) => { await sharedLogic(args, { @@ -178,8 +177,8 @@ export const hookMap: AllCollectionHooks = { hook: 'beforeOperation', operation: args.operation, req: args.req, - }) - return args + }); + return args; }, beforeRead: async (args) => { await sharedLogic(args, { @@ -188,9 +187,9 @@ export const hookMap: AllCollectionHooks = { hook: 'beforeRead', operation: 'read', req: args.req, - }) + }); - return args.doc + return args.doc; }, beforeValidate: async (args) => { await sharedLogic(args, { @@ -199,8 +198,8 @@ export const hookMap: AllCollectionHooks = { hook: 'beforeValidate', operation: args.operation, req: args.req, - }) - return args.data + }); + return args.data; }, me: async (args) => { await sharedLogic(args, { @@ -210,7 +209,7 @@ export const hookMap: AllCollectionHooks = { hook: 'me', operation: 'me', req: args.args.req, - }) + }); }, refresh: async (args) => { await sharedLogic(args, { @@ -220,6 +219,6 @@ export const hookMap: AllCollectionHooks = { hook: 'refresh', operation: 'refresh', req: args.args.req, - }) + }); }, -} +}; diff --git a/src/Constant/automation.ts b/src/Constant/automation.ts index 7db3a56..98bd3b4 100644 --- a/src/Constant/automation.ts +++ b/src/Constant/automation.ts @@ -1,4 +1,4 @@ -import type { ManualStrategy } from './../types/pluginOptions.js' +import type { ManualStrategy } from './../types/pluginOptions.js'; // export const defaultAutomationValues = // // PluginOptions['automation'] @@ -24,7 +24,7 @@ export const cleanupStrategiesDefaultValues = { // name: 'time', // olderThan: '30s', // } as TimeStrategy, -} +}; // export const defaultCleanupTaskValues = { // defaultInput: [ diff --git a/src/collections/access/index.ts b/src/collections/access/index.ts index 5f1d429..bc7095d 100644 --- a/src/collections/access/index.ts +++ b/src/collections/access/index.ts @@ -1,5 +1,5 @@ -import type { Access } from 'payload' +import type { Access } from 'payload'; export const adminAccess: Access = (): boolean => { - return true -} + return true; +}; diff --git a/src/collections/auditor.ts b/src/collections/auditor.ts index 06ce199..bb115e8 100644 --- a/src/collections/auditor.ts +++ b/src/collections/auditor.ts @@ -1,22 +1,21 @@ -import type { CollectionConfig } from 'payload' +import type { CollectionConfig } from 'payload'; -import type { AuditHookOperationType } from '../types/pluginOptions.js' -import type { hookTypes } from './../pluginUtils/configHelpers.js' +import { defaultCollectionValues } from '../Constant/Constant.js'; +import type { hookTypes } from './../pluginUtils/configHelpers.js'; +import type { AuditHookOperationType } from '../types/pluginOptions.js'; -import { defaultCollectionValues } from '../Constant/Constant.js' - -export type AuditorLog = { - collection: string - documentId?: string - hook: (typeof hookTypes)[number] - operation: AuditHookOperationType - timestamp: Date - type: 'audit' | 'debug' | 'error' | 'info' | 'security' | 'unknown' | 'warning' - user: unknown - userAgent?: string +export interface AuditorLog { + collection: string; + documentId?: string; + hook: (typeof hookTypes)[number]; + operation: AuditHookOperationType; + timestamp: Date; + type: 'audit' | 'debug' | 'error' | 'info' | 'security' | 'unknown' | 'warning'; + user: unknown; + userAgent?: string; } -export type TypedRootCollection = typeof auditor +export type TypedRootCollection = typeof auditor; export const auditor: CollectionConfig = { slug: defaultCollectionValues.slug, @@ -83,6 +82,6 @@ export const auditor: CollectionConfig = { ], labels: defaultCollectionValues.labels, timestamps: false, -} +}; -export default auditor +export default auditor; diff --git a/src/collections/hooks/beforeChange.ts b/src/collections/hooks/beforeChange.ts index 29b3a99..5ad2a7b 100644 --- a/src/collections/hooks/beforeChange.ts +++ b/src/collections/hooks/beforeChange.ts @@ -1,28 +1,27 @@ -import type { BeforeChangeHook } from 'node_modules/payload/dist/collections/config/types.js' +import type { BeforeChangeHook } from 'node_modules/payload/dist/collections/config/types.js'; -import type { Duration } from './../../utils/toMS.js' +import ms from './../../utils/toMS.js'; +import type { Duration } from './../../utils/toMS.js'; +import { defaultCollectionValues } from './../../Constant/Constant.js'; +import { cleanupStrategiesDefaultValues } from './../../Constant/automation.js'; -import { cleanupStrategiesDefaultValues } from './../../Constant/automation.js' -import { defaultCollectionValues } from './../../Constant/Constant.js' -import ms from './../../utils/toMS.js' - -type AutoLogCleanerProps = { - id: string - olderThan: Duration +interface AutoLogCleanerProps { + id: string; + olderThan: Duration; } export const autoLogCleaner: BeforeChangeHook = async ({ context, data, - operation, + // operation, req, }) => { try { const millisecondsAgo = new Date( Date.now() - ms(data.olderThan || cleanupStrategiesDefaultValues.manual.olderThan), - ) - const collectionSlug = context.pluginOptions.collection?.slug ?? defaultCollectionValues.slug - const limit = context.pluginOptions.automation?.logCleanup?.strategy?.amount ?? 100 + ); + const collectionSlug = context.pluginOptions.collection?.slug ?? defaultCollectionValues.slug; + const limit = context.pluginOptions.automation?.logCleanup?.strategy?.amount ?? 100; const oldLogsToDelete = await req.payload.find({ collection: collectionSlug, @@ -32,9 +31,9 @@ export const autoLogCleaner: BeforeChangeHook = async ({ less_than: millisecondsAgo.toISOString(), }, }, - }) + }); - const ids = oldLogsToDelete.docs.map((doc) => doc.id) + const ids = oldLogsToDelete.docs.map(doc => doc.id); if (ids.length > 0) { await req.payload.delete({ collection: collectionSlug, @@ -43,9 +42,10 @@ export const autoLogCleaner: BeforeChangeHook = async ({ in: ids, }, }, - }) + }); } - } catch (err) { - console.error('Error cleaning old logs:', err) } -} + catch (err) { + console.error('Error cleaning old logs:', err); + } +}; diff --git a/src/core/buffer/bufferManager.test.ts b/src/core/buffer/bufferManager.test.ts index d2701b2..e31928c 100644 --- a/src/core/buffer/bufferManager.test.ts +++ b/src/core/buffer/bufferManager.test.ts @@ -1,29 +1,28 @@ -import type { PluginOptions } from 'src/types/pluginOptions.js' +import type { PluginOptions } from 'src/types/pluginOptions.js'; +import { defaultCollectionValues } from 'src/Constant/Constant.js'; +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; -import { defaultCollectionValues } from 'src/Constant/Constant.js' -import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' - -import { bufferManager } from './../../core/buffer/bufferManager.js' -import { onEventLog } from './../../core/events/emitter.js' +import { onEventLog } from './../../core/events/emitter.js'; +import { bufferManager } from './../../core/buffer/bufferManager.js'; vi.mock('../../core/events/emitter.ts', () => ({ onEventLog: vi.fn(), -})) +})); -const createMock = vi.fn() +const createMock = vi.fn(); const mockPayload = { create: createMock, -} +}; -const sampleLog = { message: 'test log', timestamp: Date.now() } +const sampleLog = { message: 'test log', timestamp: Date.now() }; beforeEach(() => { - vi.clearAllMocks() - vi.useFakeTimers() -}) + vi.clearAllMocks(); + vi.useFakeTimers(); +}); afterEach(() => { - vi.useRealTimers() -}) + vi.useRealTimers(); +}); describe('bufferManager', () => { it('should flush when buffer reaches size limit', async () => { @@ -34,19 +33,19 @@ describe('bufferManager', () => { size: 2, }, }, - } as PluginOptions + } as PluginOptions; - bufferManager(mockPayload as any, pluginOptions) + bufferManager(mockPayload as any, pluginOptions); // simulate event listener - const handler = (onEventLog as any).mock.calls[0][1] + const handler = (onEventLog as any).mock.calls[0][1]; - await handler(sampleLog) - expect(createMock).not.toHaveBeenCalled() + await handler(sampleLog); + expect(createMock).not.toHaveBeenCalled(); - await handler(sampleLog) - expect(createMock).toHaveBeenCalledTimes(2) - }) + await handler(sampleLog); + expect(createMock).toHaveBeenCalledTimes(2); + }); it('should flush immediately in realtime mode', async () => { const pluginOptions = { @@ -55,17 +54,17 @@ describe('bufferManager', () => { flushStrategy: 'realtime', }, }, - } as PluginOptions + } as PluginOptions; - bufferManager(mockPayload as any, pluginOptions) - const handler = (onEventLog as any).mock.calls[0][1] + bufferManager(mockPayload as any, pluginOptions); + const handler = (onEventLog as any).mock.calls[0][1]; - await handler(sampleLog) + await handler(sampleLog); expect(createMock).toHaveBeenCalledWith({ collection: defaultCollectionValues.slug, data: sampleLog, - }) - }) + }); + }); it('should flush periodically in time mode', async () => { const pluginOptions = { @@ -75,21 +74,21 @@ describe('bufferManager', () => { time: '2s', }, }, - } as unknown as PluginOptions + } as unknown as PluginOptions; - bufferManager(mockPayload as any, pluginOptions) - const handler = (onEventLog as any).mock.calls[0][1] - await handler(sampleLog) - expect(createMock).not.toHaveBeenCalled() + bufferManager(mockPayload as any, pluginOptions); + const handler = (onEventLog as any).mock.calls[0][1]; + await handler(sampleLog); + expect(createMock).not.toHaveBeenCalled(); - vi.advanceTimersByTime(2000) + vi.advanceTimersByTime(2000); - await Promise.resolve() // allow flushBuffer to run + await Promise.resolve(); // allow flushBuffer to run expect(createMock).toHaveBeenCalledWith({ collection: defaultCollectionValues.slug, data: sampleLog, - }) - }) + }); + }); it('should clear buffer after flushing', async () => { const pluginOptions = { @@ -99,16 +98,16 @@ describe('bufferManager', () => { size: 1, }, }, - } as PluginOptions + } as PluginOptions; - bufferManager(mockPayload as any, pluginOptions) - const handler = (onEventLog as any).mock.calls[0][1] + bufferManager(mockPayload as any, pluginOptions); + const handler = (onEventLog as any).mock.calls[0][1]; - await handler(sampleLog) - expect(createMock).toHaveBeenCalledTimes(1) + await handler(sampleLog); + expect(createMock).toHaveBeenCalledTimes(1); // now push another and check it's flushed separately (i.e., buffer reset) - await handler(sampleLog) - expect(createMock).toHaveBeenCalledTimes(2) - }) -}) + await handler(sampleLog); + expect(createMock).toHaveBeenCalledTimes(2); + }); +}); diff --git a/src/core/buffer/bufferManager.ts b/src/core/buffer/bufferManager.ts index 0a69330..29367b6 100644 --- a/src/core/buffer/bufferManager.ts +++ b/src/core/buffer/bufferManager.ts @@ -1,59 +1,59 @@ -import type { Payload } from 'payload' +import type { Payload } from 'payload'; -import type { AuditorLog } from '../../collections/auditor.js' -import type { PluginOptions } from './../../types/pluginOptions.js' +import ms from './../../utils/toMS.js'; +import { onEventLog } from './../../core/events/emitter.js'; +import type { AuditorLog } from '../../collections/auditor.js'; +import type { PluginOptions } from './../../types/pluginOptions.js'; +import { defaultCollectionValues } from './../../Constant/Constant.js'; +import { handleBufferDebugMode } from './../../core/buffer/helpers/handleBufferDebugMode.js'; -import { defaultCollectionValues } from './../../Constant/Constant.js' -import { handleBufferDebugMode } from './../../core/buffer/helpers/handleBufferDebugMode.js' -import { onEventLog } from './../../core/events/emitter.js' -import ms from './../../utils/toMS.js' +const store: AuditorLog[] = []; -const store: AuditorLog[] = [] +let payloadInstance: Payload; -let payloadInstance: Payload +const flushBuffer = async (pluginOptions: PluginOptions) => { + const logsToInsert = [...store]; + store.length = 0; + await Promise.all( + logsToInsert.map(log => + payloadInstance.create({ + collection: pluginOptions.collection?.slug + ? pluginOptions.collection?.slug + : defaultCollectionValues.slug, + data: log, + }), + ), + ); +}; export const bufferManager = (payload: Payload, pluginOptions: PluginOptions) => { - const bufferConfig = pluginOptions.collection?.buffer - const size = bufferConfig?.size ?? 10 - const interval = ms(bufferConfig?.time ?? '5s') - const flushStrategy = bufferConfig?.flushStrategy ?? 'time' - payloadInstance = payload + const bufferConfig = pluginOptions.collection?.buffer; + const size = bufferConfig?.size ?? 10; + const interval = ms(bufferConfig?.time ?? '5s'); + const flushStrategy = bufferConfig?.flushStrategy ?? 'time'; + payloadInstance = payload; // When the log is generated, add it to the buffer. onEventLog('logGenerated', async (log: AuditorLog) => { - handleBufferDebugMode({ flushStrategy, interval, size }, bufferConfig) - store.push(log) + handleBufferDebugMode({ flushStrategy, interval, size }, bufferConfig); + store.push(log); if (flushStrategy === 'size') { if (store.length >= size) { - await flushBuffer(pluginOptions) + await flushBuffer(pluginOptions); } - } else if (flushStrategy === 'realtime') { - await flushBuffer(pluginOptions) } - }) + else if (flushStrategy === 'realtime') { + await flushBuffer(pluginOptions); + } + }); if (flushStrategy === 'time') { // Every few seconds, empty the buffer (even if it's not full) setInterval(async () => { if (store.length > 0) { - await flushBuffer(pluginOptions) + await flushBuffer(pluginOptions); } - }, interval) + }, interval); } -} - -const flushBuffer = async (pluginOptions: PluginOptions) => { - const logsToInsert = [...store] - store.length = 0 - await Promise.all( - logsToInsert.map((log) => - payloadInstance.create({ - collection: pluginOptions.collection?.slug - ? pluginOptions.collection?.slug - : defaultCollectionValues.slug, - data: log, - }), - ), - ) -} +}; diff --git a/src/core/buffer/helpers/handleBufferDebugMode.ts b/src/core/buffer/helpers/handleBufferDebugMode.ts index a17fd8a..88cc636 100644 --- a/src/core/buffer/helpers/handleBufferDebugMode.ts +++ b/src/core/buffer/helpers/handleBufferDebugMode.ts @@ -1,21 +1,20 @@ -import type { BufferConfig, BufferDebugFields } from './../../../types/pluginOptions.js' - -import { prettyDebugLog } from './../../../utils/prettyDebugLog.js' +import { prettyDebugLog } from './../../../utils/prettyDebugLog.js'; +import type { BufferConfig, BufferDebugFields } from './../../../types/pluginOptions.js'; export const handleBufferDebugMode = ( fields: Record, bufferConfig: BufferConfig | undefined, ) => { - const isDebugEnabled = bufferConfig?.modes?.debug?.enabled ?? false + const isDebugEnabled = bufferConfig?.modes?.debug?.enabled ?? false; if (!isDebugEnabled) { - return null + return null; } - const debugFields = bufferConfig?.modes?.debug?.fields ?? fields - const displayType = bufferConfig?.modes?.debug?.displayType + const debugFields = bufferConfig?.modes?.debug?.fields ?? fields; + const displayType = bufferConfig?.modes?.debug?.displayType; const debugLog = Object.fromEntries( Object.entries(fields).filter(([key]) => debugFields[key as keyof BufferDebugFields]), - ) + ); - prettyDebugLog('Buffer', '', debugLog, displayType) -} + prettyDebugLog('Buffer', '', debugLog, displayType); +}; diff --git a/src/core/events/emitter.ts b/src/core/events/emitter.ts index 7504e48..e109276 100644 --- a/src/core/events/emitter.ts +++ b/src/core/events/emitter.ts @@ -1,19 +1,20 @@ -import { EventEmitter } from 'events' +/* eslint-disable no-restricted-globals */ +import { EventEmitter } from 'node:events'; -import type { AuditorLog } from '../../collections/auditor.js' +import type { AuditorLog } from '../../collections/auditor.js'; -const globalEmitter = (global as any).payloadAuditorEmitter || new EventEmitter() +const globalEmitter = (global as any).payloadAuditorEmitter || new EventEmitter(); if (!(global as any).payloadAuditorEmitter) { - ;(global as any).payloadAuditorEmitter = globalEmitter + ;(global as any).payloadAuditorEmitter = globalEmitter; } export const emitEvent = (event: string, data: T) => { setImmediate(() => { - globalEmitter.emit(event, data) - }) -} + globalEmitter.emit(event, data); + }); +}; export const onEventLog = (event: string, handler: (log: AuditorLog) => Promise) => { - globalEmitter.on(event, handler) -} + globalEmitter.on(event, handler); +}; diff --git a/src/core/log-builders/collections/helpers/emitWrapper.ts b/src/core/log-builders/collections/helpers/emitWrapper.ts index 2ca9c2d..a3ecdb9 100644 --- a/src/core/log-builders/collections/helpers/emitWrapper.ts +++ b/src/core/log-builders/collections/helpers/emitWrapper.ts @@ -1,12 +1,11 @@ -import type { AuditorLog } from './../../../../collections/auditor.js' +import { emitEvent } from './../../../../core/events/emitter.js'; +import type { AuditorLog } from './../../../../collections/auditor.js'; import type { AllCollectionHooks, HookOperationConfig, HookTrackingOperationMap, PluginOptions, -} from './../../../../types/pluginOptions.js' - -import { emitEvent } from './../../../../core/events/emitter.js' +} from './../../../../types/pluginOptions.js'; export const emitWrapper = async ( logData: AuditorLog, @@ -18,31 +17,34 @@ export const emitWrapper = async ( userActivatedHooks: Partial | undefined, ) => { const customLogging = async (): Promise => { - const { hook, ...otherLogData } = logData + const { hook, ...otherLogData } = logData; - let result: AuditorLog = logData + let result: AuditorLog = logData; if (operationConfig?.customLogger) { result = { ...(await operationConfig.customLogger(hookArgs, otherLogData)), hook, - } - } else if (hookConfig?.customLogger) { + }; + } + else if (hookConfig?.customLogger) { result = { // @ts-ignore ...(await hookConfig.customLogger(hookArgs, otherLogData)), hook, - } - } else if (userActivatedHooks?.customLogger) { + }; + } + else if (userActivatedHooks?.customLogger) { result = { ...(await userActivatedHooks.customLogger(hookArgs, otherLogData)), hook, - } - } else if (pluginOpts?.customLogger) { + }; + } + else if (pluginOpts?.customLogger) { result = { ...(await pluginOpts.customLogger(hookArgs, otherLogData)), hook, - } + }; } return { @@ -55,8 +57,8 @@ export const emitWrapper = async ( timestamp: result.timestamp, user: result.user, userAgent: result.userAgent, - } - } + }; + }; - emitEvent('logGenerated', await customLogging()) -} + emitEvent('logGenerated', await customLogging()); +}; diff --git a/src/core/log-builders/collections/helpers/handleDebugMode.ts b/src/core/log-builders/collections/helpers/handleDebugMode.ts index 2b8b837..3fd13fd 100644 --- a/src/core/log-builders/collections/helpers/handleDebugMode.ts +++ b/src/core/log-builders/collections/helpers/handleDebugMode.ts @@ -1,12 +1,11 @@ -import type { AuditorLog } from './../../../../collections/auditor.js' +import type { AuditorLog } from './../../../../collections/auditor.js'; +import { prettyDebugLog } from './../../../../utils/prettyDebugLog.js'; import type { AllCollectionHooks, AuditHookOperationType, HookOperationConfig, HookTrackingOperationMap, -} from './../../../../types/pluginOptions.js' - -import { prettyDebugLog } from './../../../../utils/prettyDebugLog.js' +} from './../../../../types/pluginOptions.js'; export const handleDebugMode = ( hookConfig: HookTrackingOperationMap[T] | undefined, @@ -14,22 +13,22 @@ export const handleDebugMode = ( allFields: AuditorLog, operation: AuditHookOperationType, ) => { - const hookDebugConfig = hookConfig?.modes?.debug - const operationDebugConfig = operationConfig?.modes?.debug + const hookDebugConfig = hookConfig?.modes?.debug; + const operationDebugConfig = operationConfig?.modes?.debug; - const isDebugEnabled = - (operationDebugConfig?.enabled ?? false) || (hookDebugConfig?.enabled ?? false) + const isDebugEnabled + = (operationDebugConfig?.enabled ?? false) || (hookDebugConfig?.enabled ?? false); if (isDebugEnabled) { - const debugFields = operationDebugConfig?.fields ?? hookDebugConfig?.fields - const debugDisplayType = operationDebugConfig?.displayType ?? hookDebugConfig?.displayType + const debugFields = operationDebugConfig?.fields ?? hookDebugConfig?.fields; + const debugDisplayType = operationDebugConfig?.displayType ?? hookDebugConfig?.displayType; const debugLog = debugFields ? Object.fromEntries( Object.entries(allFields).filter(([key]) => debugFields[key as keyof AuditorLog]), ) - : allFields + : allFields; - prettyDebugLog('afterChange', operation, debugLog, debugDisplayType) + prettyDebugLog('afterChange', operation, debugLog, debugDisplayType); } -} +}; diff --git a/src/core/log-builders/collections/helpers/isOperationEnabled.ts b/src/core/log-builders/collections/helpers/isOperationEnabled.ts index 6383caa..6155614 100644 --- a/src/core/log-builders/collections/helpers/isOperationEnabled.ts +++ b/src/core/log-builders/collections/helpers/isOperationEnabled.ts @@ -2,21 +2,25 @@ import type { AllCollectionHooks, HookOperationConfig, HookTrackingOperationMap, -} from 'src/types/pluginOptions.js' +} from 'src/types/pluginOptions.js'; export const checkOperationEnabled = ( userHookOperationConfig: HookOperationConfig | undefined, userHookConfig: HookTrackingOperationMap[T] | undefined, ): boolean => { if (userHookConfig?.enabled === false) { - return false - } else if (userHookConfig?.enabled === true && userHookOperationConfig?.enabled !== false) { - return true - } else if (userHookConfig?.enabled === true && userHookOperationConfig?.enabled === false) { - return false - } else if (userHookOperationConfig?.enabled) { - return true - } else { - return false + return false; } -} + else if (userHookConfig?.enabled === true && userHookOperationConfig?.enabled !== false) { + return true; + } + else if (userHookConfig?.enabled === true && userHookOperationConfig?.enabled === false) { + return false; + } + else if (userHookOperationConfig?.enabled) { + return true; + } + else { + return false; + } +}; diff --git a/src/core/log-builders/collections/hooks.ts b/src/core/log-builders/collections/hooks.ts index d5f1c0e..3287054 100644 --- a/src/core/log-builders/collections/hooks.ts +++ b/src/core/log-builders/collections/hooks.ts @@ -17,19 +17,18 @@ import type { CollectionBeforeValidateHook, CollectionMeHook, CollectionRefreshHook, -} from 'payload' +} from 'payload'; -import type { AuditorLog } from './../../../collections/auditor.js' +import type { SharedArgs } from './shared.js'; +import { emitWrapper } from './helpers/emitWrapper.js'; +import { handleDebugMode } from './helpers/handleDebugMode.js'; +import type { AuditorLog } from './../../../collections/auditor.js'; import type { AllCollectionHooks, HookOperationConfig, HookTrackingOperationMap, PluginOptions, -} from './../../../types/pluginOptions.js' -import type { SharedArgs } from './shared.js' - -import { emitWrapper } from './helpers/emitWrapper.js' -import { handleDebugMode } from './helpers/handleDebugMode.js' +} from './../../../types/pluginOptions.js'; export const hookHandlers = { afterChange: ( @@ -37,109 +36,109 @@ export const hookHandlers = { sharedArgs: SharedArgs, baseLog: Partial, ) => { - baseLog.type = 'audit' - baseLog.documentId = args.doc.id - baseLog.user = sharedArgs.req?.user?.id || 'anonymous' + baseLog.type = 'audit'; + baseLog.documentId = args.doc.id; + baseLog.user = sharedArgs.req?.user?.id || 'anonymous'; - return args.doc + return args.doc; }, afterDelete: ( args: Parameters[0], sharedArgs: SharedArgs, baseLog: Partial, ) => { - baseLog.type = 'audit' - baseLog.documentId = args.doc.id - baseLog.user = sharedArgs.req?.user?.id || 'anonymous' + baseLog.type = 'audit'; + baseLog.documentId = args.doc.id; + baseLog.user = sharedArgs.req?.user?.id || 'anonymous'; }, afterError: ( args: Parameters[0], sharedArgs: SharedArgs, baseLog: Partial, ) => { - baseLog.type = 'error' - baseLog.documentId = 'unknown' - baseLog.user = sharedArgs.req?.user?.id || null + baseLog.type = 'error'; + baseLog.documentId = 'unknown'; + baseLog.user = sharedArgs.req?.user?.id || null; }, afterForgotPassword: async ( args: Parameters[0], sharedArgs: SharedArgs, baseLog: Partial, ) => { - baseLog.type = 'security' - baseLog.user = 'anonymous' + baseLog.type = 'security'; + baseLog.user = 'anonymous'; - const email = args.args.data?.email + const email = args.args.data?.email; const userDoc = await sharedArgs.req.payload.find({ collection: sharedArgs.collection.slug, limit: 1, where: { email: { equals: email } }, - }) + }); - const userId = userDoc?.docs?.[0]?.id - baseLog.user = userId + const userId = userDoc?.docs?.[0]?.id; + baseLog.user = userId; }, afterLogin: ( args: Parameters[0], sharedArgs: SharedArgs, baseLog: Partial, ) => { - baseLog.type = 'security' - baseLog.operation = 'login' - baseLog.user = args.user.id || 'anonymous' + baseLog.type = 'security'; + baseLog.operation = 'login'; + baseLog.user = args.user.id || 'anonymous'; }, afterLogout: ( args: Parameters[0], sharedArgs: SharedArgs, baseLog: Omit, ) => { - baseLog.type = 'security' - baseLog.user = sharedArgs.req.user?.id || 'anonymous' + baseLog.type = 'security'; + baseLog.user = sharedArgs.req.user?.id || 'anonymous'; }, afterMe: ( args: Parameters[0], sharedArgs: SharedArgs, baseLog: Omit, ) => { - baseLog.user = sharedArgs.req?.user?.id || 'anonymous' - baseLog.type = 'info' + baseLog.user = sharedArgs.req?.user?.id || 'anonymous'; + baseLog.type = 'info'; }, afterOperation: async ( args: Parameters[0], sharedArgs: SharedArgs, baseLog: Partial, data: { - pluginOpts: PluginOptions - userActivatedHooks: Partial | undefined - userHookConfig: HookTrackingOperationMap - userHookOperationConfig: HookOperationConfig + pluginOpts: PluginOptions; + userActivatedHooks: Partial | undefined; + userHookConfig: HookTrackingOperationMap; + userHookOperationConfig: HookOperationConfig; }, ) => { - baseLog.type = 'audit' - baseLog.documentId = 'unknown' - baseLog.user = sharedArgs.req?.user?.id || 'anonymous' + baseLog.type = 'audit'; + baseLog.documentId = 'unknown'; + baseLog.user = sharedArgs.req?.user?.id || 'anonymous'; switch (args.operation) { case 'create': case 'deleteByID': case 'findByID': case 'updateByID': { - baseLog.documentId = args.result ? args.result?.id.toString() : 'unknown' + baseLog.documentId = args.result ? args.result?.id.toString() : 'unknown'; - break + break; } case 'delete': case 'update': { if (args.result?.docs?.length) { for (const doc of args.result.docs) { - baseLog.documentId = doc.id.toString() + baseLog.documentId = doc.id.toString(); handleDebugMode( data.userHookConfig as HookTrackingOperationMap[T], data.userHookOperationConfig, baseLog as AuditorLog, args.operation, - ) + ); await emitWrapper( baseLog as AuditorLog, data.userHookConfig as HookTrackingOperationMap[T], @@ -148,15 +147,15 @@ export const hookHandlers = { data.pluginOpts, args, data.userActivatedHooks, - ) + ); } } - break + break; } case 'login': case 'refresh': { - baseLog.user = args.result.user.id.toString() - break + baseLog.user = args.result.user.id.toString(); + break; } } }, @@ -165,70 +164,70 @@ export const hookHandlers = { sharedArgs: SharedArgs, baseLog: Partial, ) => { - baseLog.type = 'info' - baseLog.user = sharedArgs.req?.user?.id || 'anonymous' + baseLog.type = 'info'; + baseLog.user = sharedArgs.req?.user?.id || 'anonymous'; }, afterRefresh: ( args: Parameters[0], sharedArgs: SharedArgs, baseLog: Partial, ) => { - baseLog.type = 'info' - baseLog.user = sharedArgs.req.user?.id || 'anonymous' + baseLog.type = 'info'; + baseLog.user = sharedArgs.req.user?.id || 'anonymous'; }, beforeChange: ( args: Parameters[0], sharedArgs: SharedArgs, baseLog: Partial, ) => { - baseLog.type = 'audit' - baseLog.documentId = args.originalDoc?.id - baseLog.user = sharedArgs.req?.user?.id || 'anonymous' + baseLog.type = 'audit'; + baseLog.documentId = args.originalDoc?.id; + baseLog.user = sharedArgs.req?.user?.id || 'anonymous'; }, beforeDelete: ( args: Parameters[0], sharedArgs: SharedArgs, baseLog: Partial, ) => { - baseLog.type = 'audit' - baseLog.documentId = args.id.toString() - baseLog.user = sharedArgs.req?.user?.id || 'anonymous' + baseLog.type = 'audit'; + baseLog.documentId = args.id.toString(); + baseLog.user = sharedArgs.req?.user?.id || 'anonymous'; }, beforeLogin: ( args: Parameters[0], sharedArgs: SharedArgs, baseLog: Partial, ) => { - baseLog.type = 'security' - baseLog.user = args.user.id || 'anonymous' + baseLog.type = 'security'; + baseLog.user = args.user.id || 'anonymous'; }, beforeOperation: async ( args: Parameters[0], sharedArgs: SharedArgs, baseLog: Partial, ) => { - baseLog.type = 'audit' - baseLog.user = sharedArgs.req?.user?.id || 'anonymous' + baseLog.type = 'audit'; + baseLog.user = sharedArgs.req?.user?.id || 'anonymous'; switch (args.operation) { case 'create': case 'refresh': case 'update': - break + break; case 'delete': - baseLog.documentId = args.args.id ? args.args.id.toString() : 'unknown' - break + baseLog.documentId = args.args.id ? args.args.id.toString() : 'unknown'; + break; case 'forgotPassword': case 'login': { - const email = args.args.data?.email + const email = args.args.data?.email; const result = await args.req.payload.find({ collection: sharedArgs.collection.slug, limit: 1, where: { email: { equals: email } }, - }) - const userId = result?.docs?.[0]?.id - baseLog.user = userId || 'anonymous' - break + }); + const userId = result?.docs?.[0]?.id; + baseLog.user = userId || 'anonymous'; + break; } } }, @@ -237,33 +236,33 @@ export const hookHandlers = { sharedArgs: SharedArgs, baseLog: Partial, ) => { - baseLog.type = 'info' - baseLog.documentId = args.doc.id - baseLog.user = sharedArgs.req?.user?.id || 'anonymous' + baseLog.type = 'info'; + baseLog.documentId = args.doc.id; + baseLog.user = sharedArgs.req?.user?.id || 'anonymous'; }, beforeValidate: ( args: Parameters[0], sharedArgs: SharedArgs, baseLog: Partial, ) => { - baseLog.type = 'debug' - baseLog.documentId = args.operation === 'update' ? args.originalDoc?.id : 'unknown' - baseLog.user = sharedArgs.req?.user?.id || 'anonymous' + baseLog.type = 'debug'; + baseLog.documentId = args.operation === 'update' ? args.originalDoc?.id : 'unknown'; + baseLog.user = sharedArgs.req?.user?.id || 'anonymous'; }, me: ( args: Parameters[0], sharedArgs: SharedArgs, baseLog: Partial, ) => { - baseLog.type = 'info' - baseLog.user = args.user.id || 'anonymous' + baseLog.type = 'info'; + baseLog.user = args.user.id || 'anonymous'; }, refresh: ( args: Parameters[0], sharedArgs: SharedArgs, baseLog: Partial, ) => { - baseLog.type = 'info' - baseLog.user = args.user?.id || 'anonymous' + baseLog.type = 'info'; + baseLog.user = args.user?.id || 'anonymous'; }, -} +}; diff --git a/src/core/log-builders/collections/shared.ts b/src/core/log-builders/collections/shared.ts index c2c85f6..c91d5af 100644 --- a/src/core/log-builders/collections/shared.ts +++ b/src/core/log-builders/collections/shared.ts @@ -1,41 +1,60 @@ -import type { PayloadRequest, RequestContext, SanitizedCollectionConfig } from 'payload' +import type { PayloadRequest, RequestContext, SanitizedCollectionConfig } from 'payload'; -import type { AuditorLog } from './../../../collections/auditor.js' -import type { hookTypes } from './../../../pluginUtils/configHelpers.js' +import { hookHandlers } from './hooks.js'; +import { emitWrapper } from './helpers/emitWrapper.js'; +import { handleDebugMode } from './helpers/handleDebugMode.js'; +import type { AuditorLog } from './../../../collections/auditor.js'; +import { checkOperationEnabled } from './helpers/isOperationEnabled.js'; +import type { hookTypes } from './../../../pluginUtils/configHelpers.js'; import type { AllCollectionHooks, AuditHookOperationType, HookOperationConfig, HookTrackingOperationMap, -} from './../../../types/pluginOptions.js' +} from './../../../types/pluginOptions.js'; -import { emitWrapper } from './helpers/emitWrapper.js' -import { handleDebugMode } from './helpers/handleDebugMode.js' -import { checkOperationEnabled } from './helpers/isOperationEnabled.js' -import { hookHandlers } from './hooks.js' +export interface SharedArgs { + collection: SanitizedCollectionConfig; + context: RequestContext; + hook: (typeof hookTypes)[number]; + operation: AuditHookOperationType; + req: PayloadRequest; +} -export type SharedArgs = { - collection: SanitizedCollectionConfig - context: RequestContext - hook: (typeof hookTypes)[number] - operation: AuditHookOperationType - req: PayloadRequest +interface ExceptionsParams { + hookName: (typeof hookTypes)[number]; + operation: AuditHookOperationType; } +const exceptions = (params: ExceptionsParams): boolean => { + let result: boolean = false; + switch (params.hookName) { + case 'afterOperation': + if (params.operation === 'delete' || params.operation === 'update') { + result = true; + } + break; + + default: + break; + } + return result; +}; + export const sharedLogic = async ( args: Parameters[0], sharedArgs: SharedArgs, ) => { - const pluginOpts = sharedArgs.context.pluginOptions - const userActivatedHooks = sharedArgs.context.userHookConfig?.hooks - const userHookConfig = sharedArgs.context.userHookConfig?.hooks?.[sharedArgs.hook] + const pluginOpts = sharedArgs.context.pluginOptions; + const userActivatedHooks = sharedArgs.context.userHookConfig?.hooks; + const userHookConfig = sharedArgs.context.userHookConfig?.hooks?.[sharedArgs.hook]; const userHookOperationConfig = ( userHookConfig as Record | undefined> - )?.[sharedArgs.operation] + )?.[sharedArgs.operation]; const isOperationEnabled = checkOperationEnabled( userHookOperationConfig, userHookConfig, - ) + ); const baseLog: AuditorLog = { type: 'unknown', @@ -46,7 +65,7 @@ export const sharedLogic = async ( timestamp: new Date(), user: 'anonymous', userAgent: sharedArgs.req.headers.get('user-agent') || 'unknown', - } + }; if (!exceptions({ hookName: sharedArgs.hook, operation: sharedArgs.operation })) { handleDebugMode( @@ -54,7 +73,7 @@ export const sharedLogic = async ( userHookOperationConfig, baseLog, sharedArgs.operation, - ) + ); } if (isOperationEnabled) { @@ -64,7 +83,7 @@ export const sharedLogic = async ( userActivatedHooks, userHookConfig, userHookOperationConfig, - }) + }); if (!exceptions({ hookName: sharedArgs.hook, operation: sharedArgs.operation })) { await emitWrapper( baseLog, @@ -74,27 +93,7 @@ export const sharedLogic = async ( pluginOpts, args, userActivatedHooks, - ) + ); } } -} - -type ExceptionsParams = { - hookName: (typeof hookTypes)[number] - operation: AuditHookOperationType -} - -const exceptions = (params: ExceptionsParams): boolean => { - let result: boolean = false - switch (params.hookName) { - case 'afterOperation': - if (params.operation === 'delete' || params.operation === 'update') { - result = true - } - break - - default: - break - } - return result -} +}; diff --git a/src/index.ts b/src/index.ts index 7e32c8f..746ca92 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,14 +1,13 @@ -import type { Config, Plugin } from 'payload' +import type { Config, Plugin } from 'payload'; -import type { PluginOptions } from './types/pluginOptions.js' - -import { defaultPluginOpts } from './Constant/Constant.js' +import { defaultPluginOpts } from './Constant/Constant.js'; +import type { PluginOptions } from './types/pluginOptions.js'; import { attachAutomationConfig, attachCollectionConfig, buildAccessControl, OnInitManager, -} from './pluginUtils/configHelpers.js' +} from './pluginUtils/configHelpers.js'; /** * 📝 The main function of plugin packaging * @@ -18,20 +17,20 @@ import { * @param opts * */ -export const auditorPlugin = - (opts: PluginOptions = defaultPluginOpts): Plugin => - (incomingConfig: Config): Config => { - let config = incomingConfig - if (opts.enabled === false) { - return config - } - // Accessibility customization - // TODO: combine to attachCollectionConfig function - buildAccessControl(opts) +export const auditorPlugin + = (opts: PluginOptions = defaultPluginOpts): Plugin => + (incomingConfig: Config): Config => { + let config = incomingConfig; + if (opts.enabled === false) { + return config; + } + // Accessibility customization + // TODO: combine to attachCollectionConfig function + buildAccessControl(opts); - config = attachAutomationConfig(config, opts) - config.collections = attachCollectionConfig(config.collections, opts) - config.onInit = OnInitManager(config.onInit, opts) + config = attachAutomationConfig(config, opts); + config.collections = attachCollectionConfig(config.collections, opts); + config.onInit = OnInitManager(config.onInit, opts); - return config - } + return config; + }; diff --git a/src/pluginUtils/configHelpers.ts b/src/pluginUtils/configHelpers.ts index 59273b6..d81f872 100644 --- a/src/pluginUtils/configHelpers.ts +++ b/src/pluginUtils/configHelpers.ts @@ -1,18 +1,17 @@ -import type { Access, BasePayload, Config } from 'payload' +import type { Access, BasePayload, Config } from 'payload'; -import type { AllCollectionHooks, PluginOptions } from './../types/pluginOptions.js' +import auditor from '../collections/auditor.js'; +import { bufferManager } from '../core/buffer/bufferManager.js'; +import { autoLogCleaner } from './../collections/hooks/beforeChange.js'; +import { cleanupStrategiesDefaultValues } from './../Constant/automation.js'; +import { defaultCollectionValues, hookMap } from './../Constant/Constant.js'; +import type { AllCollectionHooks, PluginOptions } from './../types/pluginOptions.js'; -import auditor from '../collections/auditor.js' -import { bufferManager } from '../core/buffer/bufferManager.js' -import { autoLogCleaner } from './../collections/hooks/beforeChange.js' -import { cleanupStrategiesDefaultValues } from './../Constant/automation.js' -import { defaultCollectionValues, hookMap } from './../Constant/Constant.js' +type AccessOps = 'create' | 'delete' | 'read' | 'update'; -type AccessOps = 'create' | 'delete' | 'read' | 'update' +type RoleAccessMap = Partial>; -type RoleAccessMap = Partial> - -type CustomAccessMap = Partial> +type CustomAccessMap = Partial>; export const hookTypes = [ 'beforeOperation', @@ -33,67 +32,69 @@ export const hookTypes = [ 'afterForgotPassword', 'refresh', 'me', -] as const +] as const; export const buildAccessControl = (pluginOpts: PluginOptions) => { - const roles: RoleAccessMap = pluginOpts?.collection?.Accessibility?.roles ?? {} - const customAccess: CustomAccessMap = pluginOpts?.collection?.Accessibility?.customAccess ?? {} + const roles: RoleAccessMap = pluginOpts?.collection?.Accessibility?.roles ?? {}; + const customAccess: CustomAccessMap = pluginOpts?.collection?.Accessibility?.customAccess ?? {}; - const defaultAccess: Access = ({ req }) => req.user?.role === 'admin' + const defaultAccess: Access = ({ req }) => req.user?.role === 'admin'; - const accessOps: AccessOps[] = ['read'] + const accessOps: AccessOps[] = ['read']; - const access: Partial> = {} + const access: Partial> = {}; accessOps.forEach((op) => { if (roles[op] && roles[op].length > 0) { - access[op] = ({ req }) => roles[op]!.includes(req.user?.role) - } else if (customAccess[op]) { - access[op] = customAccess[op] - } else { - access[op] = defaultAccess + access[op] = ({ req }) => roles[op]!.includes(req.user?.role); + } + else if (customAccess[op]) { + access[op] = customAccess[op]; + } + else { + access[op] = defaultAccess; } - }) + }); - auditor.access = { ...auditor.access, ...access } -} + auditor.access = { ...auditor.access, ...access }; +}; export const attachCollectionConfig = ( userCollectionsConfig: Config['collections'], pluginOpts: PluginOptions, ) => { - const pluginCollectionsConfig = pluginOpts.collection + const pluginCollectionsConfig = pluginOpts.collection; if (!pluginCollectionsConfig) { - return userCollectionsConfig + return userCollectionsConfig; } // attach localization for (const field of auditor.fields) { // @ts-ignore - field.label = pluginCollectionsConfig.locale?.collection?.fields?.[field.name] ?? field.label + field.label = pluginCollectionsConfig.locale?.collection?.fields?.[field.name] ?? field.label; } // Attach Slug if (pluginCollectionsConfig.slug && pluginCollectionsConfig.slug.length > 0) { - auditor.slug = pluginCollectionsConfig.slug + auditor.slug = pluginCollectionsConfig.slug; } // Attaching Log Builders if ( - pluginCollectionsConfig.trackCollections && - pluginCollectionsConfig.trackCollections.length > 0 + pluginCollectionsConfig.trackCollections + && pluginCollectionsConfig.trackCollections.length > 0 ) { userCollectionsConfig = (userCollectionsConfig || []).map((collection) => { const tracked = pluginCollectionsConfig.trackCollections.find( - (tc) => tc.slug === collection.slug, - ) + tc => tc.slug === collection.slug, + ); if (tracked && !tracked.disabled) { - collection.hooks = collection.hooks || {} + collection.hooks = collection.hooks || {}; if (tracked.hooks) { for (const hookName in tracked?.hooks) { - const typedHookName = hookName as keyof AllCollectionHooks + const typedHookName = hookName as keyof AllCollectionHooks; // @ts-ignore collection.hooks[typedHookName] = [ ...(collection.hooks[typedHookName] || []), @@ -105,13 +106,13 @@ export const attachCollectionConfig = ( userHookConfig: tracked, }, }), - ] + ]; } } } - return collection - }) + return collection; + }); // console.log(auditor) } @@ -122,27 +123,27 @@ export const attachCollectionConfig = ( ...auditor, ...pluginCollectionsConfig.configureRootCollection(auditor), } - : auditor + : auditor; // attach collection slug - const collectionSlug = rootCollection.slug ? rootCollection.slug : pluginCollectionsConfig.slug - pluginCollectionsConfig.slug = collectionSlug + const collectionSlug = rootCollection.slug ? rootCollection.slug : pluginCollectionsConfig.slug; + pluginCollectionsConfig.slug = collectionSlug; userCollectionsConfig = [ ...(userCollectionsConfig || []), { ...rootCollection, slug: collectionSlug || defaultCollectionValues.slug }, - ] + ]; // Attaching settings to plugin's internal collection hooks // ... - return userCollectionsConfig -} + return userCollectionsConfig; +}; export const attachAutomationConfig = ( incomingConfig: Config, pluginOpts: PluginOptions, ): Config => { - const typedAuditorCollection = auditor + const typedAuditorCollection = auditor; // if (pluginOpts.automation?.logCleanup.disabled) { // return incomingConfig @@ -152,7 +153,7 @@ export const attachAutomationConfig = ( ...typedAuditorCollection.hooks, beforeChange: [ ...(typedAuditorCollection.hooks?.beforeChange || []), - (args) => + args => autoLogCleaner({ ...args, context: { @@ -160,15 +161,15 @@ export const attachAutomationConfig = ( }, data: { olderThan: - pluginOpts.automation?.logCleanup?.strategy?.olderThan ?? - cleanupStrategiesDefaultValues.manual.olderThan, + pluginOpts.automation?.logCleanup?.strategy?.olderThan + ?? cleanupStrategiesDefaultValues.manual.olderThan, }, }), ], - } + }; // incomingConfig.collections = [...(incomingConfig.collections || []), auditor] - return incomingConfig + return incomingConfig; // if (!incomingConfig.jobs) { // incomingConfig.jobs = {} as JobsConfig @@ -209,15 +210,15 @@ export const attachAutomationConfig = ( // } // return incomingConfig -} +}; export const OnInitManager = (originalOnInit: Config['onInit'], pluginOpts: PluginOptions) => { return async (payload: BasePayload) => { if (originalOnInit) { - await originalOnInit(payload) + await originalOnInit(payload); } - bufferManager(payload, pluginOpts) + bufferManager(payload, pluginOpts); // add jobs // await payload.jobs.queue({ @@ -231,5 +232,5 @@ export const OnInitManager = (originalOnInit: Config['onInit'], pluginOpts: Plug // defaultAutomationValues.logCleanup.schedule.queue, // task: pluginOpts.automation?.logCleanup.taskConfig?.slug ?? defaultCleanupTaskValues.slug, // }) - } -} + }; +}; diff --git a/src/types/pluginOptions.ts b/src/types/pluginOptions.ts index 18ada40..dc797a4 100644 --- a/src/types/pluginOptions.ts +++ b/src/types/pluginOptions.ts @@ -22,84 +22,84 @@ import type { HookOperationType, LabelFunction, StaticLabel, -} from 'payload' +} from 'payload'; -import type { AuditorLog } from './../collections/auditor.js' -import type { Duration } from './../utils/toMS.js' +import type { Duration } from './../utils/toMS.js'; +import type { AuditorLog } from './../collections/auditor.js'; -export type HookStage = - | 'afterChange' - | 'afterDelete' - | 'afterError' - | 'afterForgotPassword' - | 'afterLogin' - | 'afterLogout' - | 'afterMe' - | 'afterRead' - | 'afterRefresh' - | 'beforeChange' - | 'beforeDelete' - | 'beforeLogin' - | 'beforeOperation' - | 'beforeRead' - | 'beforeValidate' - | 'refresh' +export type HookStage + = | 'afterChange' + | 'afterDelete' + | 'afterError' + | 'afterForgotPassword' + | 'afterLogin' + | 'afterLogout' + | 'afterMe' + | 'afterRead' + | 'afterRefresh' + | 'beforeChange' + | 'beforeDelete' + | 'beforeLogin' + | 'beforeOperation' + | 'beforeRead' + | 'beforeValidate' + | 'refresh'; -export type AuditHookOperationType = - | 'deleteByID' - | 'error' - | 'find' - | 'findByID' - | 'forgotPassword' - | 'logout' - | 'me' - | 'refresh' - | 'updateByID' - | HookOperationType +export type AuditHookOperationType + = | 'deleteByID' + | 'error' + | 'find' + | 'findByID' + | 'forgotPassword' + | 'logout' + | 'me' + | 'refresh' + | 'updateByID' + | HookOperationType; -export type HookOperations = { - afterChange: Parameters[0]['operation'] - afterDelete: 'delete' - afterError: 'error' - afterForgotPassword: 'afterForgotPassword' - afterLogin: 'login' - afterLogout: 'logout' - afterMe: 'me' - afterOperation: Parameters[0]['operation'] - afterRead: 'read' - afterRefresh: 'refresh' - beforeChange: Parameters[0]['operation'] - beforeDelete: 'delete' - beforeLogin: 'login' - beforeOperation: Parameters[0]['operation'] - beforeRead: 'read' - beforeValidate: Parameters[0]['operation'] - me: 'me' - refresh: 'refresh' +export interface HookOperations { + afterChange: Parameters[0]['operation']; + afterDelete: 'delete'; + afterError: 'error'; + afterForgotPassword: 'afterForgotPassword'; + afterLogin: 'login'; + afterLogout: 'logout'; + afterMe: 'me'; + afterOperation: Parameters[0]['operation']; + afterRead: 'read'; + afterRefresh: 'refresh'; + beforeChange: Parameters[0]['operation']; + beforeDelete: 'delete'; + beforeLogin: 'login'; + beforeOperation: Parameters[0]['operation']; + beforeRead: 'read'; + beforeValidate: Parameters[0]['operation']; + me: 'me'; + refresh: 'refresh'; } -export type AllCollectionHooks = { - afterChange: CollectionAfterChangeHook - afterDelete: CollectionAfterDeleteHook - afterError: CollectionAfterErrorHook - afterForgotPassword: CollectionAfterForgotPasswordHook - afterLogin: CollectionAfterLoginHook - afterLogout: CollectionAfterLogoutHook - afterMe: CollectionAfterMeHook - afterOperation: CollectionAfterOperationHook - afterRead: CollectionAfterReadHook - afterRefresh: CollectionAfterRefreshHook - beforeChange: CollectionBeforeChangeHook - beforeDelete: CollectionBeforeDeleteHook - beforeLogin: CollectionBeforeLoginHook - beforeOperation: CollectionBeforeOperationHook - beforeRead: CollectionBeforeReadHook - beforeValidate: CollectionBeforeValidateHook - me: CollectionMeHook - refresh: CollectionRefreshHook +export interface AllCollectionHooks { + afterChange: CollectionAfterChangeHook; + afterDelete: CollectionAfterDeleteHook; + afterError: CollectionAfterErrorHook; + afterForgotPassword: CollectionAfterForgotPasswordHook; + afterLogin: CollectionAfterLoginHook; + afterLogout: CollectionAfterLogoutHook; + afterMe: CollectionAfterMeHook; + afterOperation: CollectionAfterOperationHook; + afterRead: CollectionAfterReadHook; + afterRefresh: CollectionAfterRefreshHook; + beforeChange: CollectionBeforeChangeHook; + beforeDelete: CollectionBeforeDeleteHook; + beforeLogin: CollectionBeforeLoginHook; + beforeOperation: CollectionBeforeOperationHook; + beforeRead: CollectionBeforeReadHook; + beforeValidate: CollectionBeforeValidateHook; + me: CollectionMeHook; + refresh: CollectionRefreshHook; } -export type HookOperationDebugModeConfig = { +export interface HookOperationDebugModeConfig { /** * 📝 How to display debug logs * @@ -119,7 +119,7 @@ export type HookOperationDebugModeConfig = { * - The timeStamp field is not displayed in the table type * */ - displayType?: 'manual' | 'table' + displayType?: 'manual' | 'table'; /** * 📝 Enable or disable debug mode * @@ -139,7 +139,7 @@ export type HookOperationDebugModeConfig = { * - The timeStamp field is not displayed in the table type * */ - enabled?: boolean + enabled?: boolean; /** * 📝 Select the required fields * @@ -160,10 +160,10 @@ export type HookOperationDebugModeConfig = { * ``` * */ - fields?: Partial> + fields?: Partial>; } -export type HookModesConfig = { +export interface HookModesConfig { /** * 📝 Debug mode for better inspection of logging performance * @@ -182,10 +182,10 @@ export type HookModesConfig = { * ### ⚠️ Critical Notes * - The generated logs are only displayed in the console and are not stored in the database. */ - debug?: HookOperationDebugModeConfig + debug?: HookOperationDebugModeConfig; } -export type HookOperationConfig = { +export interface HookOperationConfig { /** * 📝 Custom log creation at a operation level * @@ -212,7 +212,7 @@ export type HookOperationConfig customLogger?: ( args: Parameters[0], fields: Omit, - ) => Omit | Promise> + ) => Omit | Promise>; /** * 📝 Specifies whether logging is enabled or disabled for this operation within the hook * @@ -235,24 +235,24 @@ export type HookOperationConfig * - If the enabled value is not entered, it is considered false. * */ - enabled?: boolean + enabled?: boolean; /** * 📝 Auxiliary side modes * * - */ - modes?: HookModesConfig + modes?: HookModesConfig; } -export type HookTrackingOperationMap = { +export interface HookTrackingOperationMap { afterChange: { /** * Create operation * * Triggered when a new item is created. */ - create?: HookOperationConfig<'afterChange'> + create?: HookOperationConfig<'afterChange'>; /** * 📝 Custom log creation at a hook level @@ -278,7 +278,7 @@ export type HookTrackingOperationMap = { customLogger?: ( args: Parameters[0], fields: Omit, - ) => Omit | Promise> + ) => Omit | Promise>; /** * 📝 Enabling all supported operations within the afterChange hook @@ -301,7 +301,7 @@ export type HookTrackingOperationMap = { * - If the value is false, it disables all operations (even explicitly enabled operations) * */ - enabled?: boolean + enabled?: boolean; /** * 📝 Auxiliary side modes @@ -309,14 +309,14 @@ export type HookTrackingOperationMap = { * ### ⚠️ Critical Notes * - By enabling debug mode at the hook level, all operations of that hook are logged */ - modes?: HookModesConfig + modes?: HookModesConfig; /** * Update operation * * Triggered when an existing item is updated. */ - update?: HookOperationConfig<'afterChange'> - } + update?: HookOperationConfig<'afterChange'>; + }; afterDelete: { /** * 📝 Custom log creation at a hook level @@ -342,13 +342,13 @@ export type HookTrackingOperationMap = { customLogger?: ( args: Parameters[0], fields: Omit, - ) => Omit | Promise> + ) => Omit | Promise>; /** * Delete operation * * Triggered when an item is deleted. */ - delete?: HookOperationConfig<'afterDelete'> + delete?: HookOperationConfig<'afterDelete'>; /** * 📝 Enabling all supported operations within the afterChange hook * @@ -370,15 +370,15 @@ export type HookTrackingOperationMap = { * - If the value is false, it disables all operations (even explicitly enabled operations) * */ - enabled?: boolean + enabled?: boolean; /** * 📝 Auxiliary side modes * * ### ⚠️ Critical Notes * - By enabling debug mode at the hook level, all operations of that hook are logged */ - modes?: HookModesConfig - } + modes?: HookModesConfig; + }; afterError: { /** * 📝 Custom log creation at a hook level @@ -404,7 +404,7 @@ export type HookTrackingOperationMap = { customLogger?: ( args: Parameters[0], fields: Omit, - ) => Omit | Promise> + ) => Omit | Promise>; /** * 📝 Enabling all supported operations within the afterChange hook * @@ -426,21 +426,21 @@ export type HookTrackingOperationMap = { * - If the value is false, it disables all operations (even explicitly enabled operations) * */ - enabled?: boolean + enabled?: boolean; /** * Error operation * * Triggered when an error occurs during another operation. */ - error?: HookOperationConfig<'afterError'> + error?: HookOperationConfig<'afterError'>; /** * 📝 Auxiliary side modes * * ### ⚠️ Critical Notes * - By enabling debug mode at the hook level, all operations of that hook are logged */ - modes?: HookModesConfig - } + modes?: HookModesConfig; + }; afterForgotPassword: { /** * 📝 Custom log creation at a hook level @@ -466,7 +466,7 @@ export type HookTrackingOperationMap = { customLogger?: ( args: Parameters[0], fields: Omit, - ) => Omit | Promise> + ) => Omit | Promise>; /** * 📝 Enabling all supported operations within the afterChange hook @@ -489,21 +489,21 @@ export type HookTrackingOperationMap = { * - If the value is false, it disables all operations (even explicitly enabled operations) * */ - enabled?: boolean + enabled?: boolean; /** * Forgot password operation * * Triggered when a password recovery request is made. */ - forgotPassword?: HookOperationConfig<'afterForgotPassword'> + forgotPassword?: HookOperationConfig<'afterForgotPassword'>; /** * 📝 Auxiliary side modes * * ### ⚠️ Critical Notes * - By enabling debug mode at the hook level, all operations of that hook are logged */ - modes?: HookModesConfig - } + modes?: HookModesConfig; + }; afterLogin: { /** * 📝 Custom log creation at a hook level @@ -529,7 +529,7 @@ export type HookTrackingOperationMap = { customLogger?: ( args: Parameters[0], fields: Omit, - ) => Omit | Promise> + ) => Omit | Promise>; /** * 📝 Enabling all supported operations within the afterChange hook * @@ -551,21 +551,21 @@ export type HookTrackingOperationMap = { * - If the value is false, it disables all operations (even explicitly enabled operations) * */ - enabled?: boolean + enabled?: boolean; /** * Login operation * * Triggered when a user logs in. */ - login?: HookOperationConfig<'afterLogin'> + login?: HookOperationConfig<'afterLogin'>; /** * 📝 Auxiliary side modes * * ### ⚠️ Critical Notes * - By enabling debug mode at the hook level, all operations of that hook are logged */ - modes?: HookModesConfig - } + modes?: HookModesConfig; + }; afterLogout: { /** * 📝 Custom log creation at a hook level @@ -591,7 +591,7 @@ export type HookTrackingOperationMap = { customLogger?: ( args: Parameters[0], fields: Omit, - ) => Omit | Promise> + ) => Omit | Promise>; /** * 📝 Enabling all supported operations within the afterChange hook * @@ -613,21 +613,21 @@ export type HookTrackingOperationMap = { * - If the value is false, it disables all operations (even explicitly enabled operations) * */ - enabled?: boolean + enabled?: boolean; /** * Logout operation * * Triggered when a user logs out. */ - logout?: HookOperationConfig<'afterLogout'> + logout?: HookOperationConfig<'afterLogout'>; /** * 📝 Auxiliary side modes * * ### ⚠️ Critical Notes * - By enabling debug mode at the hook level, all operations of that hook are logged */ - modes?: HookModesConfig - } + modes?: HookModesConfig; + }; afterMe: { /** * 📝 Custom log creation at a hook level @@ -653,7 +653,7 @@ export type HookTrackingOperationMap = { customLogger?: ( args: Parameters[0], fields: Omit, - ) => Omit | Promise> + ) => Omit | Promise>; /** * 📝 Enabling all supported operations within the afterChange hook * @@ -675,29 +675,29 @@ export type HookTrackingOperationMap = { * - If the value is false, it disables all operations (even explicitly enabled operations) * */ - enabled?: boolean + enabled?: boolean; /** * Me operation * * Triggered when a user fetches their own profile information. */ - me?: HookOperationConfig<'afterMe'> + me?: HookOperationConfig<'afterMe'>; /** * 📝 Auxiliary side modes * * ### ⚠️ Critical Notes * - By enabling debug mode at the hook level, all operations of that hook are logged */ - modes?: HookModesConfig - } + modes?: HookModesConfig; + }; afterOperation: { - countVersions?: HookOperationConfig<'afterOperation'> + countVersions?: HookOperationConfig<'afterOperation'>; /** * Create operation * * Triggered when a new item is created. */ - create?: HookOperationConfig<'afterOperation'> + create?: HookOperationConfig<'afterOperation'>; /** * 📝 Custom log creation at a hook level * @@ -722,19 +722,19 @@ export type HookTrackingOperationMap = { customLogger?: ( args: Parameters[0], fields: Omit, - ) => Omit | Promise> + ) => Omit | Promise>; /** * Delete operation * * Triggered when an item is deleted. */ - delete?: HookOperationConfig<'afterOperation'> + delete?: HookOperationConfig<'afterOperation'>; /** * Delete by ID operation * * Triggered when a specific item is deleted by its ID. */ - deleteByID?: HookOperationConfig<'afterOperation'> + deleteByID?: HookOperationConfig<'afterOperation'>; /** * 📝 Enabling all supported operations within the afterChange hook * @@ -756,58 +756,58 @@ export type HookTrackingOperationMap = { * - If the value is false, it disables all operations (even explicitly enabled operations) * */ - enabled?: boolean + enabled?: boolean; /** * Find operation * * Triggered when items are queried based on specific conditions. */ - find?: HookOperationConfig<'afterOperation'> + find?: HookOperationConfig<'afterOperation'>; /** * Find by ID operation * * Triggered when a specific item is retrieved by its ID. */ - findByID?: HookOperationConfig<'afterOperation'> + findByID?: HookOperationConfig<'afterOperation'>; /** * Forgot password operation * * Triggered when a password recovery request is made. */ - forgotPassword?: HookOperationConfig<'afterOperation'> + forgotPassword?: HookOperationConfig<'afterOperation'>; /** * Login operation * * Triggered when a user logs in. */ - login?: HookOperationConfig<'afterOperation'> + login?: HookOperationConfig<'afterOperation'>; /** * 📝 Auxiliary side modes * * ### ⚠️ Critical Notes * - By enabling debug mode at the hook level, all operations of that hook are logged */ - modes?: HookModesConfig + modes?: HookModesConfig; /** * Refresh operation * * Triggered when authentication tokens are refreshed. */ - refresh?: HookOperationConfig<'afterOperation'> + refresh?: HookOperationConfig<'afterOperation'>; /** * Update operation * * Triggered when an existing item is updated. */ - update?: HookOperationConfig<'afterOperation'> + update?: HookOperationConfig<'afterOperation'>; /** * Update by ID operation * * Triggered when a specific item is updated by its ID. */ - updateByID?: HookOperationConfig<'afterOperation'> - } + updateByID?: HookOperationConfig<'afterOperation'>; + }; afterRead: { /** * 📝 Custom log creation at a hook level @@ -833,7 +833,7 @@ export type HookTrackingOperationMap = { customLogger?: ( args: Parameters[0], fields: Omit, - ) => Omit | Promise> + ) => Omit | Promise>; /** * 📝 Enabling all supported operations within the afterChange hook * @@ -855,21 +855,21 @@ export type HookTrackingOperationMap = { * - If the value is false, it disables all operations (even explicitly enabled operations) * */ - enabled?: boolean + enabled?: boolean; /** * 📝 Auxiliary side modes * * ### ⚠️ Critical Notes * - By enabling debug mode at the hook level, all operations of that hook are logged */ - modes?: HookModesConfig + modes?: HookModesConfig; /** * Read operation * * Triggered when data is read. */ - read?: HookOperationConfig<'afterRead'> - } + read?: HookOperationConfig<'afterRead'>; + }; afterRefresh: { /** * 📝 Custom log creation at a hook level @@ -895,7 +895,7 @@ export type HookTrackingOperationMap = { customLogger?: ( args: Parameters[0], fields: Omit, - ) => Omit | Promise> + ) => Omit | Promise>; /** * 📝 Enabling all supported operations within the afterChange hook * @@ -917,28 +917,28 @@ export type HookTrackingOperationMap = { * - If the value is false, it disables all operations (even explicitly enabled operations) * */ - enabled?: boolean + enabled?: boolean; /** * 📝 Auxiliary side modes * * ### ⚠️ Critical Notes * - By enabling debug mode at the hook level, all operations of that hook are logged */ - modes?: HookModesConfig + modes?: HookModesConfig; /** * Refresh operation * * Triggered when authentication tokens are refreshed. */ - refresh?: HookOperationConfig<'afterRefresh'> - } + refresh?: HookOperationConfig<'afterRefresh'>; + }; beforeChange: { /** * Create operation * * Triggered when a new item is created. */ - create?: HookOperationConfig<'beforeChange'> + create?: HookOperationConfig<'beforeChange'>; /** * 📝 Custom log creation at a hook level * @@ -963,7 +963,7 @@ export type HookTrackingOperationMap = { customLogger?: ( args: Parameters[0], fields: Omit, - ) => Omit | Promise> + ) => Omit | Promise>; /** * 📝 Enabling all supported operations within the afterChange hook * @@ -985,21 +985,21 @@ export type HookTrackingOperationMap = { * - If the value is false, it disables all operations (even explicitly enabled operations) * */ - enabled?: boolean + enabled?: boolean; /** * 📝 Auxiliary side modes * * ### ⚠️ Critical Notes * - By enabling debug mode at the hook level, all operations of that hook are logged */ - modes?: HookModesConfig + modes?: HookModesConfig; /** * Update operation * * Triggered when an existing item is updated. */ - update?: HookOperationConfig<'beforeChange'> - } + update?: HookOperationConfig<'beforeChange'>; + }; beforeDelete: { /** * 📝 Custom log creation at a hook level @@ -1025,13 +1025,13 @@ export type HookTrackingOperationMap = { customLogger?: ( args: Parameters[0], fields: Omit, - ) => Omit | Promise> + ) => Omit | Promise>; /** * Delete operation * * Triggered when an item is deleted. */ - delete?: HookOperationConfig<'beforeDelete'> + delete?: HookOperationConfig<'beforeDelete'>; /** * 📝 Enabling all supported operations within the afterChange hook * @@ -1053,15 +1053,15 @@ export type HookTrackingOperationMap = { * - If the value is false, it disables all operations (even explicitly enabled operations) * */ - enabled?: boolean + enabled?: boolean; /** * 📝 Auxiliary side modes * * ### ⚠️ Critical Notes * - By enabling debug mode at the hook level, all operations of that hook are logged */ - modes?: HookModesConfig - } + modes?: HookModesConfig; + }; beforeLogin: { /** * 📝 Custom log creation at a hook level @@ -1087,7 +1087,7 @@ export type HookTrackingOperationMap = { customLogger?: ( args: Parameters[0], fields: Omit, - ) => Omit | Promise> + ) => Omit | Promise>; /** * 📝 Enabling all supported operations within the afterChange hook * @@ -1109,28 +1109,28 @@ export type HookTrackingOperationMap = { * - If the value is false, it disables all operations (even explicitly enabled operations) * */ - enabled?: boolean + enabled?: boolean; /** * Login operation * * Triggered when a user logs in. */ - login?: HookOperationConfig<'beforeLogin'> + login?: HookOperationConfig<'beforeLogin'>; /** * 📝 Auxiliary side modes * * ### ⚠️ Critical Notes * - By enabling debug mode at the hook level, all operations of that hook are logged */ - modes?: HookModesConfig - } + modes?: HookModesConfig; + }; beforeOperation: { /** * Create operation * * Triggered when a new item is created. */ - create?: HookOperationConfig<'beforeOperation'> + create?: HookOperationConfig<'beforeOperation'>; /** * 📝 Custom log creation at a hook level * @@ -1155,13 +1155,13 @@ export type HookTrackingOperationMap = { customLogger?: ( args: Parameters[0], fields: Omit, - ) => Omit | Promise> + ) => Omit | Promise>; /** * Delete operation * * Triggered when an item is deleted. */ - delete?: HookOperationConfig<'beforeOperation'> + delete?: HookOperationConfig<'beforeOperation'>; /** * 📝 Enabling all supported operations within the afterChange hook * @@ -1183,45 +1183,45 @@ export type HookTrackingOperationMap = { * - If the value is false, it disables all operations (even explicitly enabled operations) * */ - enabled?: boolean + enabled?: boolean; /** * Forgot password operation * * Triggered when a password recovery request is made. */ - forgotPassword?: HookOperationConfig<'beforeOperation'> + forgotPassword?: HookOperationConfig<'beforeOperation'>; /** * Login operation * * Triggered when a user logs in. */ - login?: HookOperationConfig<'beforeOperation'> + login?: HookOperationConfig<'beforeOperation'>; /** * 📝 Auxiliary side modes * * ### ⚠️ Critical Notes * - By enabling debug mode at the hook level, all operations of that hook are logged */ - modes?: HookModesConfig + modes?: HookModesConfig; /** * Read operation * * Triggered when data is read. */ - read?: HookOperationConfig<'beforeOperation'> + read?: HookOperationConfig<'beforeOperation'>; /** * Refresh operation * * Triggered when authentication tokens are refreshed. */ - refresh?: HookOperationConfig<'beforeOperation'> + refresh?: HookOperationConfig<'beforeOperation'>; /** * Update operation * * Triggered when an existing item is updated. */ - update?: HookOperationConfig<'beforeOperation'> - } + update?: HookOperationConfig<'beforeOperation'>; + }; beforeRead: { /** * 📝 Custom log creation at a hook level @@ -1247,7 +1247,7 @@ export type HookTrackingOperationMap = { customLogger?: ( args: Parameters[0], fields: Omit, - ) => Omit | Promise> + ) => Omit | Promise>; /** * 📝 Enabling all supported operations within the afterChange hook * @@ -1269,28 +1269,28 @@ export type HookTrackingOperationMap = { * - If the value is false, it disables all operations (even explicitly enabled operations) * */ - enabled?: boolean + enabled?: boolean; /** * 📝 Auxiliary side modes * * ### ⚠️ Critical Notes * - By enabling debug mode at the hook level, all operations of that hook are logged */ - modes?: HookModesConfig + modes?: HookModesConfig; /** * Read operation * * Triggered when data is read. */ - read?: HookOperationConfig<'beforeRead'> - } + read?: HookOperationConfig<'beforeRead'>; + }; beforeValidate: { /** * Create operation * * Triggered when a new item is created. */ - create?: HookOperationConfig<'beforeValidate'> + create?: HookOperationConfig<'beforeValidate'>; /** * 📝 Custom log creation at a hook level * @@ -1315,7 +1315,7 @@ export type HookTrackingOperationMap = { customLogger?: ( args: Parameters[0], fields: Omit, - ) => Omit | Promise> + ) => Omit | Promise>; /** * 📝 Enabling all supported operations within the afterChange hook * @@ -1337,21 +1337,21 @@ export type HookTrackingOperationMap = { * - If the value is false, it disables all operations (even explicitly enabled operations) * */ - enabled?: boolean + enabled?: boolean; /** * 📝 Auxiliary side modes * * ### ⚠️ Critical Notes * - By enabling debug mode at the hook level, all operations of that hook are logged */ - modes?: HookModesConfig + modes?: HookModesConfig; /** * Update operation * * Triggered when an existing item is updated. */ - update?: HookOperationConfig<'beforeValidate'> - } + update?: HookOperationConfig<'beforeValidate'>; + }; /** * 📝 Custom log creation at a hooks level * @@ -1376,7 +1376,7 @@ export type HookTrackingOperationMap = { customLogger?: ( args: Parameters[0], fields: Omit, - ) => Omit | Promise> + ) => Omit | Promise>; me: { /** @@ -1403,7 +1403,7 @@ export type HookTrackingOperationMap = { customLogger?: ( args: Parameters[0], fields: Omit, - ) => Omit | Promise> + ) => Omit | Promise>; /** * 📝 Enabling all supported operations within the afterChange hook * @@ -1425,21 +1425,21 @@ export type HookTrackingOperationMap = { * - If the value is false, it disables all operations (even explicitly enabled operations) * */ - enabled?: boolean + enabled?: boolean; /** * Me operation * * Triggered when a user fetches their own profile information. */ - me?: HookOperationConfig<'me'> + me?: HookOperationConfig<'me'>; /** * 📝 Auxiliary side modes * * ### ⚠️ Critical Notes * - By enabling debug mode at the hook level, all operations of that hook are logged */ - modes?: HookModesConfig - } + modes?: HookModesConfig; + }; refresh: { /** * 📝 Custom log creation at a hook level @@ -1465,7 +1465,7 @@ export type HookTrackingOperationMap = { customLogger?: ( args: Parameters[0], fields: Omit, - ) => Omit | Promise> + ) => Omit | Promise>; /** * 📝 Enabling all supported operations within the afterChange hook * @@ -1487,24 +1487,24 @@ export type HookTrackingOperationMap = { * - If the value is false, it disables all operations (even explicitly enabled operations) * */ - enabled?: boolean + enabled?: boolean; /** * 📝 Auxiliary side modes * * ### ⚠️ Critical Notes * - By enabling debug mode at the hook level, all operations of that hook are logged */ - modes?: HookModesConfig + modes?: HookModesConfig; /** * Refresh operation * * Triggered when authentication tokens are refreshed. */ - refresh?: HookOperationConfig<'refresh'> - } + refresh?: HookOperationConfig<'refresh'>; + }; } -export type TrackedCollection = { +export interface TrackedCollection { /** * 📝 Globally disable tracking for this collection * @@ -1513,7 +1513,7 @@ export type TrackedCollection = { * @default undefined * */ - disabled?: boolean + disabled?: boolean; /** * 📝 Define payload cms hooks for each collection being tracked @@ -1539,9 +1539,9 @@ export type TrackedCollection = { * Read more: * @see {@link https://payloadcms.com/docs/hooks/collections} */ - hooks?: Partial + hooks?: Partial; /** Optional label or description for UI/doc */ - label?: string + label?: string; /** * 📝 The original name of your collection for tracking @@ -1563,19 +1563,19 @@ export type TrackedCollection = { * - Make sure the value entered exactly matches the value in your main collection configuration. * @see {@link https://payloadcms.com/docs/configuration/collections#config-options} */ - slug: string + slug: string; } -// eslint-disable-next-line @typescript-eslint/no-unused-vars -const allowedSlugs = ['activities', 'auditor', 'logger'] as const +// eslint-disable-next-line unused-imports/no-unused-vars +const allowedSlugs = ['activities', 'auditor', 'logger'] as const; -export type BufferDebugFields = { - flushStrategy: boolean - interval: boolean - size: boolean +export interface BufferDebugFields { + flushStrategy: boolean; + interval: boolean; + size: boolean; } -export type BufferModesConfig = { +export interface BufferModesConfig { /** * 📝 Debug mode for better inspection of logging performance * @@ -1605,7 +1605,7 @@ export type BufferModesConfig = { * @default "table" * */ - displayType?: 'manual' | 'table' + displayType?: 'manual' | 'table'; /** * 📝 Enable or disable debug mode * @@ -1616,7 +1616,7 @@ export type BufferModesConfig = { * @default false * */ - enabled?: boolean + enabled?: boolean; /** * 📝 Select the required fields * @@ -1636,11 +1636,11 @@ export type BufferModesConfig = { * } * ``` */ - fields?: Partial - } + fields?: Partial; + }; } -export type BufferConfig = { +export interface BufferConfig { /** * 📝 The basics of injecting logs into the database * @@ -1659,11 +1659,11 @@ export type BufferConfig = { * - If you use the size method, your logs will be stored in RAM before being injected into the database. * */ - flushStrategy?: 'realtime' | 'size' | 'time' + flushStrategy?: 'realtime' | 'size' | 'time'; /** * 📝 Auxiliary side modes */ - modes?: BufferModesConfig + modes?: BufferModesConfig; /** * 📝 Maximum number of logs before injection * @@ -1692,7 +1692,7 @@ export type BufferConfig = { * - If you set a high number and on the other hand the logs produced are low, the logs will be recorded later. * */ - size?: number + size?: number; /** * 📝 Maximum time to inject logs into the buffer relative to the last injection @@ -1719,15 +1719,15 @@ export type BufferConfig = { * - If you set the time too low, the CPU will be severely affected. * - If you allow too much time, the logs will be recorded later. If the server crashes, the logs will be lost. */ - time?: Duration + time?: Duration; } -export type Localization = { +export interface Localization { collection?: { - fields?: Partial> - } + fields?: Partial>; + }; } -export type PluginCollectionConfig = { +export interface PluginCollectionConfig { /** * 📝 auditor Collection Accessibility Settings * @@ -1765,8 +1765,8 @@ export type PluginCollectionConfig = { * */ customAccess?: { - read?: Access - } + read?: Access; + }; /** * 📝 Define which roles are allowed for each operation. * @@ -1790,9 +1790,9 @@ export type PluginCollectionConfig = { * */ roles?: { - read: string[] - } - } + read: string[]; + }; + }; /** * 📝 Buffer management for injecting data into the database * @@ -1815,7 +1815,7 @@ export type PluginCollectionConfig = { * - These settings are very important, to change these settings, consider all aspects including RAM and server power. * */ - buffer?: BufferConfig + buffer?: BufferConfig; /** * 📝 Collection main configuration * @@ -1865,7 +1865,7 @@ export type PluginCollectionConfig = { * }, * ``` */ - configureRootCollection?: (defaults: CollectionConfig) => Partial + configureRootCollection?: (defaults: CollectionConfig) => Partial; /** * 📝 Internationalization for the plugin * @@ -1873,7 +1873,7 @@ export type PluginCollectionConfig = { * * @default undefined */ - locale?: Localization + locale?: Localization; /** * 📝 Uses internal payload CMS configuration for slug * @@ -1885,7 +1885,7 @@ export type PluginCollectionConfig = { * - If you define a slug name in the `configureRootCollection` property, this value is ignored. * */ - slug?: (typeof allowedSlugs)[number] | ({} & string) + slug?: (typeof allowedSlugs)[number] | ({} & string); /** * 📝 Collection tracking management * @@ -1917,7 +1917,7 @@ export type PluginCollectionConfig = { * - To temporarily disable tracking for any collection, you can use the disabled key. * */ - trackCollections: TrackedCollection[] + trackCollections: TrackedCollection[]; } // export type CountStrategy = { @@ -1931,24 +1931,24 @@ export type PluginCollectionConfig = { // olderThan: Duration // } -export type ManualStrategy = { - amount?: number - name?: 'manual' - olderThan?: Duration +export interface ManualStrategy { + amount?: number; + name?: 'manual'; + olderThan?: Duration; } -export type AutomationConfig = { +export interface AutomationConfig { logCleanup: { // disabled?: boolean // schedule?: CronConfig - strategy?: ManualStrategy + strategy?: ManualStrategy; // CountStrategy // | TimeStrategy // taskConfig?: TaskConfig // withJobs?: boolean - } + }; } -export type PluginOptions = { +export interface PluginOptions { // /** // * 📝 Defines the interval for automatic deletion of logs or data. // * @@ -2013,7 +2013,7 @@ export type PluginOptions = { * *``` */ - automation?: AutomationConfig + automation?: AutomationConfig; /** * 📝 Settings related to collections and the collection used by the plugin @@ -2037,7 +2037,7 @@ export type PluginOptions = { * - If defined, you must also enter the value of trackCollections. * */ - collection?: PluginCollectionConfig + collection?: PluginCollectionConfig; /** * 📝 Custom log creation at a global level * @@ -2062,7 +2062,7 @@ export type PluginOptions = { customLogger?: ( args: Parameters[0], fields: Omit, - ) => Omit | Promise> + ) => Omit | Promise>; /** * 📝 Enable or disable the plugin @@ -2071,5 +2071,5 @@ export type PluginOptions = { * * @default "true" */ - enabled?: boolean + enabled?: boolean; } diff --git a/src/types/types.d.ts b/src/types/types.d.ts index 20dd61b..2d5a2bd 100644 --- a/src/types/types.d.ts +++ b/src/types/types.d.ts @@ -1,12 +1,12 @@ -import type { RequestContext as OriginalRequestContext } from 'payload' +import type { RequestContext as OriginalRequestContext } from 'payload'; -import type { PluginOptions, TrackedCollection } from './../types/pluginOptions.ts' +import type { PluginOptions, TrackedCollection } from './../types/pluginOptions.ts'; declare module 'payload' { // Create a new interface that merges your additional fields with the original one export interface RequestContext extends OriginalRequestContext { - pluginOptions: PluginOptions - userHookConfig?: TrackedCollection + pluginOptions: PluginOptions; + userHookConfig?: TrackedCollection; // ... } } diff --git a/src/utils/prettyDebugLog.ts b/src/utils/prettyDebugLog.ts index 55c6775..d75ba08 100644 --- a/src/utils/prettyDebugLog.ts +++ b/src/utils/prettyDebugLog.ts @@ -1,5 +1,5 @@ -import type { hookTypes } from './../pluginUtils/configHelpers.js' -import type { AuditHookOperationType } from './../types/pluginOptions.js' +import type { hookTypes } from './../pluginUtils/configHelpers.js'; +import type { AuditHookOperationType } from './../types/pluginOptions.js'; /* eslint-disable no-console */ export const prettyDebugLog = ( @@ -9,23 +9,25 @@ export const prettyDebugLog = ( type: 'manual' | 'table' = 'table', ) => { if (!data || Object.keys(data).length === 0) { - console.log('%cNo data to display', 'color: #888; font-style: italic;') - } else { + console.log('%cNo data to display', 'color: #888; font-style: italic;'); + } + else { if (type === 'table') { console.groupCollapsed( `| %c🔍 Debug Log - ${title} [${subtitle}]`, 'color: #007acc; font-weight: bold; font-size: 14px;', - ) - console.table(data) - console.groupEnd() - } else if (type === 'manual') { - console.log('-----------------------------------------') - console.log(`| %c🔍 Debug Log - ${title} ${subtitle && `[${subtitle}]`} |`) - console.log('-----------------------------------------') + ); + console.table(data); + console.groupEnd(); + } + else if (type === 'manual') { + console.log('-----------------------------------------'); + console.log(`| %c🔍 Debug Log - ${title} ${subtitle && `[${subtitle}]`} |`); + console.log('-----------------------------------------'); for (const [key, value] of Object.entries(data)) { - console.log(`|- %c${key}:`, 'color: #666; font-weight: 600;', value) + console.log(`|- %c${key}:`, 'color: #666; font-weight: 600;', value); } - console.log('-------------------------------------------') + console.log('-------------------------------------------'); } } -} +}; diff --git a/src/utils/toMS.ts b/src/utils/toMS.ts index f2c2733..9ea8fc3 100644 --- a/src/utils/toMS.ts +++ b/src/utils/toMS.ts @@ -1,34 +1,34 @@ -import { cleanupStrategiesDefaultValues } from './../Constant/automation.js' +import { cleanupStrategiesDefaultValues } from './../Constant/automation.js'; -export type Duration = `${number}${'d' | 'h' | 'm' | 'mo' | 's' | 'w' | 'y'}` +export type Duration = `${number}${'d' | 'h' | 'm' | 'mo' | 's' | 'w' | 'y'}`; const ms = (duration: Duration = cleanupStrategiesDefaultValues.manual.olderThan): number => { - const match = /^(\d+)([smhdwy]|mo)$/.exec(duration) + const match = /^(\d+)([smhdwy]|mo)$/.exec(duration); if (!match) { - throw new Error("Invalid duration format (e.g., '5m', '2h', '1d', '1mo', '1y')") + throw new Error('Invalid duration format (e.g., \'5m\', \'2h\', \'1d\', \'1mo\', \'1y\')'); } - const value = parseInt(match[1], 10) - const unit = match[2] + const value = Number.parseInt(match[1], 10); + const unit = match[2]; switch (unit) { case 'd': - return value * 1000 * 60 * 60 * 24 + return value * 1000 * 60 * 60 * 24; case 'h': - return value * 1000 * 60 * 60 + return value * 1000 * 60 * 60; case 'm': - return value * 1000 * 60 + return value * 1000 * 60; case 'mo': - return value * 1000 * 60 * 60 * 24 * 30 + return value * 1000 * 60 * 60 * 24 * 30; case 's': - return value * 1000 + return value * 1000; case 'w': - return value * 1000 * 60 * 60 * 24 * 7 + return value * 1000 * 60 * 60 * 24 * 7; case 'y': - return value * 1000 * 60 * 60 * 24 * 365 + return value * 1000 * 60 * 60 * 24 * 365; default: - return value * 1000 * 60 * 60 * 24 * 30 + return value * 1000 * 60 * 60 * 24 * 30; } -} +}; -export default ms +export default ms; diff --git a/tsconfig.json b/tsconfig.json index 73ec28c..0df6563 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,22 +1,22 @@ { "compilerOptions": { - "baseUrl": ".", + "incremental": true, + "composite": true, + "target": "ES2022", + "jsx": "preserve", "lib": ["DOM", "DOM.Iterable", "ES2022"], + "baseUrl": ".", "rootDir": "./", - "allowJs": true, - "skipLibCheck": true, - "strict": true, - "esModuleInterop": true, "module": "NodeNext", "moduleResolution": "nodenext", "resolveJsonModule": true, - "isolatedModules": true, - "jsx": "preserve", - "incremental": true, - "emitDeclarationOnly": true, - "target": "ES2022", - "composite": true, "typeRoots": ["./src/types/types.d.ts"], + "allowJs": true, + "strict": true, + "emitDeclarationOnly": true, + "esModuleInterop": true, + "isolatedModules": true, + "skipLibCheck": true, "plugins": [ { "name": "next" diff --git a/vitest.config.ts b/vitest.config.ts index 7f20cd3..f404c0d 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -1,10 +1,8 @@ -import path from 'node:path' -import { fileURLToPath } from 'node:url' -import tsconfigPaths from 'vite-tsconfig-paths' -import { defineConfig } from 'vitest/config' +import { defineConfig } from 'vitest/config'; +import tsconfigPaths from 'vite-tsconfig-paths'; -const dirname = - typeof __dirname !== 'undefined' ? __dirname : path.dirname(fileURLToPath(import.meta.url)) +// const dirname +// = typeof __dirname !== 'undefined' ? __dirname : path.dirname(fileURLToPath(import.meta.url)); // More info at: https://storybook.js.org/docs/writing-tests/test-addon export default defineConfig({ @@ -17,4 +15,4 @@ export default defineConfig({ globals: true, include: ['src/**/*.test.{js,jsx,ts,tsx}'], }, -}) +}); From 41c8364ce02549719f040ae09b1a2b12d8fad61a Mon Sep 17 00:00:00 2001 From: shaadcode Date: Wed, 29 Oct 2025 14:53:02 +0330 Subject: [PATCH 2/4] perf: relocate package test environment execution scripts --- dev/next-env.d.ts | 1 + dev/package.json | 7 ++ dev/payload-types.ts | 146 ++++++++++++++++++++++++++++-------------- dev/payload.config.ts | 15 +++-- package.json | 4 -- 5 files changed, 113 insertions(+), 60 deletions(-) diff --git a/dev/next-env.d.ts b/dev/next-env.d.ts index 1b3be08..830fb59 100644 --- a/dev/next-env.d.ts +++ b/dev/next-env.d.ts @@ -1,5 +1,6 @@ /// /// +/// // NOTE: This file should not be edited // see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/dev/package.json b/dev/package.json index e7907af..706e3b9 100644 --- a/dev/package.json +++ b/dev/package.json @@ -1,4 +1,11 @@ { "type": "module", + "scripts": { + "dev": "cross-env NODE_OPTIONS=--no-deprecation next dev", + "generate:importmap": "cross-env NODE_OPTIONS=--no-deprecation payload generate:importmap", + "generate:types": "cross-env NODE_OPTIONS=--no-deprecation payload generate:types", + "payload": "cross-env NODE_OPTIONS=--no-deprecation payload", + "start": "cross-env NODE_OPTIONS=--no-deprecation next start" + }, "dependencies": {} } diff --git a/dev/payload-types.ts b/dev/payload-types.ts index 620ba8e..08f9550 100644 --- a/dev/payload-types.ts +++ b/dev/payload-types.ts @@ -6,25 +6,79 @@ * and re-run `payload generate:types` to regenerate this file. */ +/** + * Supported timezones in IANA format. + * + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "supportedTimezones". + */ +export type SupportedTimezones = + | 'Pacific/Midway' + | 'Pacific/Niue' + | 'Pacific/Honolulu' + | 'Pacific/Rarotonga' + | 'America/Anchorage' + | 'Pacific/Gambier' + | 'America/Los_Angeles' + | 'America/Tijuana' + | 'America/Denver' + | 'America/Phoenix' + | 'America/Chicago' + | 'America/Guatemala' + | 'America/New_York' + | 'America/Bogota' + | 'America/Caracas' + | 'America/Santiago' + | 'America/Buenos_Aires' + | 'America/Sao_Paulo' + | 'Atlantic/South_Georgia' + | 'Atlantic/Azores' + | 'Atlantic/Cape_Verde' + | 'Europe/London' + | 'Europe/Berlin' + | 'Africa/Lagos' + | 'Europe/Athens' + | 'Africa/Cairo' + | 'Europe/Moscow' + | 'Asia/Riyadh' + | 'Asia/Dubai' + | 'Asia/Baku' + | 'Asia/Karachi' + | 'Asia/Tashkent' + | 'Asia/Calcutta' + | 'Asia/Dhaka' + | 'Asia/Almaty' + | 'Asia/Jakarta' + | 'Asia/Bangkok' + | 'Asia/Shanghai' + | 'Asia/Singapore' + | 'Asia/Tokyo' + | 'Asia/Seoul' + | 'Australia/Brisbane' + | 'Australia/Sydney' + | 'Pacific/Guam' + | 'Pacific/Noumea' + | 'Pacific/Auckland' + | 'Pacific/Fiji'; + export interface Config { auth: { users: UserAuthOperations; }; + blocks: {}; collections: { - posts: Post; media: Media; - 'plugin-collection': PluginCollection; users: User; + 'Audit-log': AuditLog; 'payload-locked-documents': PayloadLockedDocument; 'payload-preferences': PayloadPreference; 'payload-migrations': PayloadMigration; }; collectionsJoins: {}; collectionsSelect: { - posts: PostsSelect | PostsSelect; media: MediaSelect | MediaSelect; - 'plugin-collection': PluginCollectionSelect | PluginCollectionSelect; users: UsersSelect | UsersSelect; + 'Audit-log': AuditLogSelect | AuditLogSelect; 'payload-locked-documents': PayloadLockedDocumentsSelect | PayloadLockedDocumentsSelect; 'payload-preferences': PayloadPreferencesSelect | PayloadPreferencesSelect; 'payload-migrations': PayloadMigrationsSelect | PayloadMigrationsSelect; @@ -61,22 +115,14 @@ export interface UserAuthOperations { password: string; }; } -/** - * This interface was referenced by `Config`'s JSON-Schema - * via the `definition` "posts". - */ -export interface Post { - id: string; - addedByPlugin?: string | null; - updatedAt: string; - createdAt: string; -} /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "media". */ export interface Media { id: string; + altText?: string | null; + caption?: string | null; updatedAt: string; createdAt: string; url?: string | null; @@ -89,21 +135,13 @@ export interface Media { focalX?: number | null; focalY?: number | null; } -/** - * This interface was referenced by `Config`'s JSON-Schema - * via the `definition` "plugin-collection". - */ -export interface PluginCollection { - id: string; - updatedAt: string; - createdAt: string; -} /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "users". */ export interface User { id: string; + role: 'admin' | 'user' | 'test' | 'orbital'; updatedAt: string; createdAt: string; email: string; @@ -115,6 +153,21 @@ export interface User { lockUntil?: string | null; password?: string | null; } +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "Audit-log". + */ +export interface AuditLog { + id: string; + operation: string; + collection: string; + documentId?: string | null; + user: string | User; + userAgent?: string | null; + hook?: string | null; + type: 'info' | 'debug' | 'warning' | 'error' | 'audit' | 'security' | 'unknown'; + createdAt: string; +} /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "payload-locked-documents". @@ -122,21 +175,17 @@ export interface User { export interface PayloadLockedDocument { id: string; document?: - | ({ - relationTo: 'posts'; - value: string | Post; - } | null) | ({ relationTo: 'media'; value: string | Media; } | null) - | ({ - relationTo: 'plugin-collection'; - value: string | PluginCollection; - } | null) | ({ relationTo: 'users'; value: string | User; + } | null) + | ({ + relationTo: 'Audit-log'; + value: string | AuditLog; } | null); globalSlug?: string | null; user: { @@ -180,20 +229,13 @@ export interface PayloadMigration { updatedAt: string; createdAt: string; } -/** - * This interface was referenced by `Config`'s JSON-Schema - * via the `definition` "posts_select". - */ -export interface PostsSelect { - addedByPlugin?: T; - updatedAt?: T; - createdAt?: T; -} /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "media_select". */ export interface MediaSelect { + altText?: T; + caption?: T; updatedAt?: T; createdAt?: T; url?: T; @@ -206,20 +248,12 @@ export interface MediaSelect { focalX?: T; focalY?: T; } -/** - * This interface was referenced by `Config`'s JSON-Schema - * via the `definition` "plugin-collection_select". - */ -export interface PluginCollectionSelect { - id?: T; - updatedAt?: T; - createdAt?: T; -} /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "users_select". */ export interface UsersSelect { + role?: T; updatedAt?: T; createdAt?: T; email?: T; @@ -230,6 +264,20 @@ export interface UsersSelect { loginAttempts?: T; lockUntil?: T; } +/** + * This interface was referenced by `Config`'s JSON-Schema + * via the `definition` "Audit-log_select". + */ +export interface AuditLogSelect { + operation?: T; + collection?: T; + documentId?: T; + user?: T; + userAgent?: T; + hook?: T; + type?: T; + createdAt?: T; +} /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "payload-locked-documents_select". diff --git a/dev/payload.config.ts b/dev/payload.config.ts index 9b2848f..8df6054 100644 --- a/dev/payload.config.ts +++ b/dev/payload.config.ts @@ -8,9 +8,9 @@ import { users } from 'collections/Users.js'; import { mongooseAdapter } from '@payloadcms/db-mongodb'; import { lexicalEditor } from '@payloadcms/richtext-lexical'; -import { seed } from './seed.js'; -// import { auditorPlugin } from 'payload-auditor/index.js' -import { auditorPlugin } from '../src/index.js'; +// import { auditorPlugin } from '../src/index.js'; +// eslint-disable-next-line antfu/no-import-dist +import { auditorPlugin } from './../dist/index.js'; import { testEmailAdapter } from './helpers/testEmailAdapter.js'; const filename = fileURLToPath(import.meta.url); @@ -33,16 +33,14 @@ export default buildConfig({ }), editor: lexicalEditor(), email: testEmailAdapter, - onInit: async (payload) => { - await seed(payload); - }, + // plugins plugins: [ auditorPlugin({ collection: { buffer: { flushStrategy: 'time', - time: '1m', + // time: '1m', }, trackCollections: [ { @@ -55,6 +53,9 @@ export default buildConfig({ update: { enabled: true, }, + delete: { + enabled: true, + }, }, }, }, diff --git a/package.json b/package.json index b432acf..fea0455 100644 --- a/package.json +++ b/package.json @@ -60,10 +60,6 @@ "build:only": "npm run copyfiles && npm run build:types && npm run build:swc", "clean": "rimraf {dist,*.tsbuildinfo}", "copyfiles": "copyfiles -u 1 \"src/**/*.{html,css,scss,ttf,woff,woff2,eot,svg,jpg,png,json}\" dist/", - "dev": "payload run ./dev/server.mts", - "dev:generate-importmap": "npm run dev:payload generate:importmap", - "dev:generate-types": "npm run dev:payload generate:types", - "dev:payload": "cross-env PAYLOAD_CONFIG_PATH=./dev/payload.config.ts payload", "eslint": "eslint .", "lint": "npm run eslint:base", "lint:commit": "npm run lint-staged", From 1317d95eecefd3c5b677d2019d5922fffca329a8 Mon Sep 17 00:00:00 2001 From: shaadcode Date: Wed, 29 Oct 2025 14:56:52 +0330 Subject: [PATCH 3/4] chore: delete unused files --- dev/helpers/NextRESTClient.ts | 244 ---------------------------------- dev/seed.ts | 21 --- dev/server.mts | 31 ----- 3 files changed, 296 deletions(-) delete mode 100644 dev/helpers/NextRESTClient.ts delete mode 100644 dev/seed.ts delete mode 100644 dev/server.mts diff --git a/dev/helpers/NextRESTClient.ts b/dev/helpers/NextRESTClient.ts deleted file mode 100644 index 72135ac..0000000 --- a/dev/helpers/NextRESTClient.ts +++ /dev/null @@ -1,244 +0,0 @@ -import * as qs from 'qs-esm'; -import type { ParsedQs } from 'qs-esm'; -import type { JoinQuery, PopulateType, SanitizedConfig, SelectType, Where } from 'payload'; -import { - REST_DELETE as createDELETE, - REST_GET as createGET, - GRAPHQL_POST as createGraphqlPOST, - REST_PATCH as createPATCH, - REST_POST as createPOST, - REST_PUT as createPUT, -} from '@payloadcms/next/routes'; - -import { devUser } from './credentials.js'; - -type ValidPath = `/${string}`; -interface RequestOptions { - auth?: boolean; - query?: { - depth?: number; - fallbackLocale?: string; - joins?: JoinQuery; - limit?: number; - locale?: string; - page?: number; - populate?: PopulateType; - select?: SelectType; - sort?: string; - where?: Where; - }; -} - -interface FileArg { - file?: Omit; -} - -function generateQueryString(query: RequestOptions['query'], params?: ParsedQs): string { - return qs.stringify( - { - ...(params || {}), - ...(query || {}), - }, - { - addQueryPrefix: true, - }, - ); -} - -export class NextRESTClient { - private _DELETE: ( - request: Request, - args: { params: Promise<{ slug: string[] }> }, - ) => Promise; - - private _GET: ( - request: Request, - args: { params: Promise<{ slug: string[] }> }, - ) => Promise; - - private _GRAPHQL_POST: (request: Request) => Promise; - - private _PATCH: ( - request: Request, - args: { params: Promise<{ slug: string[] }> }, - ) => Promise; - - private _POST: ( - request: Request, - args: { params: Promise<{ slug: string[] }> }, - ) => Promise; - - private _PUT: ( - request: Request, - args: { params: Promise<{ slug: string[] }> }, - ) => Promise; - - private readonly config: SanitizedConfig; - - private token?: string; - - serverURL: string = 'http://localhost:3000'; - - constructor(config: SanitizedConfig) { - this.config = config; - if (config?.serverURL) { - this.serverURL = config.serverURL; - } - this._GET = createGET(config); - this._POST = createPOST(config); - this._DELETE = createDELETE(config); - this._PATCH = createPATCH(config); - this._PUT = createPUT(config); - this._GRAPHQL_POST = createGraphqlPOST(config); - } - - private buildHeaders(options: FileArg & RequestInit & RequestOptions): Headers { - const defaultHeaders = { - 'Content-Type': 'application/json', - }; - const headers = new Headers({ - ...(options?.file - ? { - 'Content-Length': options.file.size.toString(), - } - : defaultHeaders), - ...(options?.headers || {}), - }); - - if (options.auth !== false && this.token) { - headers.set('Authorization', `JWT ${this.token}`); - } - if (options.auth === false) { - headers.set('DisableAutologin', 'true'); - } - - return headers; - } - - private generateRequestParts(path: ValidPath): { - params?: ParsedQs; - slug: string[]; - url: string; - } { - const [slugs, params] = path.slice(1).split('?'); - const url = `${this.serverURL}${this.config.routes.api}/${slugs}`; - - return { - slug: slugs.split('/'), - params: params ? qs.parse(params) : undefined, - url, - }; - } - - async DELETE(path: ValidPath, options: RequestInit & RequestOptions = {}): Promise { - const { slug, params, url } = this.generateRequestParts(path); - const { query, ...rest } = options || {}; - const queryParams = generateQueryString(query, params); - - const request = new Request(`${url}${queryParams}`, { - ...rest, - headers: this.buildHeaders(options), - method: 'DELETE', - }); - return this._DELETE(request, { params: Promise.resolve({ slug }) }); - } - - async GET( - path: ValidPath, - options: Omit & RequestOptions = {}, - ): Promise { - const { slug, params, url } = this.generateRequestParts(path); - const { query, ...rest } = options || {}; - const queryParams = generateQueryString(query, params); - - const request = new Request(`${url}${queryParams}`, { - ...rest, - headers: this.buildHeaders(options), - method: 'GET', - }); - return this._GET(request, { params: Promise.resolve({ slug }) }); - } - - async GRAPHQL_POST(options: RequestInit & RequestOptions): Promise { - const { query, ...rest } = options; - const queryParams = generateQueryString(query, {}); - const request = new Request( - `${this.serverURL}${this.config.routes.api}${this.config.routes.graphQL}${queryParams}`, - { - ...rest, - headers: this.buildHeaders(options), - method: 'POST', - }, - ); - return this._GRAPHQL_POST(request); - } - - async login({ - slug, - credentials, - }: { - credentials?: { - email: string; - password: string; - }; - slug: string; - }): Promise<{ [key: string]: unknown }> { - const response = await this.POST(`/${slug}/login`, { - body: JSON.stringify( - credentials ? { ...credentials } : { email: devUser.email, password: devUser.password }, - ), - }); - const result = await response.json(); - - this.token = result.token; - - if (!result.token) { - // If the token is not in the response body, then we can extract it from the cookies - const setCookie = response.headers.get('Set-Cookie'); - const tokenMatchResult = setCookie?.match(/payload-token=(?.+?);/); - this.token = tokenMatchResult?.groups?.token; - } - - return result; - } - - async PATCH(path: ValidPath, options: FileArg & RequestInit & RequestOptions): Promise { - const { slug, params, url } = this.generateRequestParts(path); - const { query, ...rest } = options; - const queryParams = generateQueryString(query, params); - - const request = new Request(`${url}${queryParams}`, { - ...rest, - headers: this.buildHeaders(options), - method: 'PATCH', - }); - return this._PATCH(request, { params: Promise.resolve({ slug }) }); - } - - async POST( - path: ValidPath, - options: FileArg & RequestInit & RequestOptions = {}, - ): Promise { - const { slug, params, url } = this.generateRequestParts(path); - const queryParams = generateQueryString({}, params); - const request = new Request(`${url}${queryParams}`, { - ...options, - headers: this.buildHeaders(options), - method: 'POST', - }); - return this._POST(request, { params: Promise.resolve({ slug }) }); - } - - async PUT(path: ValidPath, options: FileArg & RequestInit & RequestOptions): Promise { - const { slug, params, url } = this.generateRequestParts(path); - const { query, ...rest } = options; - const queryParams = generateQueryString(query, params); - - const request = new Request(`${url}${queryParams}`, { - ...rest, - headers: this.buildHeaders(options), - method: 'PUT', - }); - return this._PUT(request, { params: Promise.resolve({ slug }) }); - } -} diff --git a/dev/seed.ts b/dev/seed.ts deleted file mode 100644 index fcd230b..0000000 --- a/dev/seed.ts +++ /dev/null @@ -1,21 +0,0 @@ -import type { Payload } from 'payload'; - -import { devUser } from './helpers/credentials.js'; - -export const seed = async (payload: Payload) => { - const { totalDocs } = await payload.count({ - collection: 'users', - where: { - email: { - equals: devUser.email, - }, - }, - }); - - if (!totalDocs) { - await payload.create({ - collection: 'users', - data: devUser, - }); - } -}; diff --git a/dev/server.mts b/dev/server.mts deleted file mode 100644 index 81e18fe..0000000 --- a/dev/server.mts +++ /dev/null @@ -1,31 +0,0 @@ -import open from 'open'; -import next from 'next'; -import path from 'node:path'; -import { createServer } from 'node:http'; -// eslint-disable-next-line node/no-deprecated-api -import { fileURLToPath, parse } from 'node:url'; -import type { NextServerOptions } from 'next/dist/server/next.js'; - -const dirname = path.dirname(fileURLToPath(import.meta.url)); - -const opts: NextServerOptions = { - dev: true, - dir: dirname, -}; -// @ts-ignore -const app = next(opts); -const handle = app.getRequestHandler(); - -async function start() { - await app.prepare(); - await open(`http://localhost:3000/admin`); - - const server = createServer((req, res) => { - const parsedUrl = parse(req?.url ?? '', true); - void handle(req, res, parsedUrl); - }); - - server.listen(3000); -} - -void start(); From d11ddbef7f7e745f40a530fabe24a836d0a65366 Mon Sep 17 00:00:00 2001 From: shaadcode Date: Wed, 29 Oct 2025 14:58:17 +0330 Subject: [PATCH 4/4] perf(config): changing the eslint script inside lint-staged --- lint-staged.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lint-staged.config.js b/lint-staged.config.js index db3f369..850bcaf 100644 --- a/lint-staged.config.js +++ b/lint-staged.config.js @@ -1,4 +1,4 @@ export default { - '**/*.{ts,tsx,js,jsx}': ['eslint --fix --no-warn-ignored'], + '**/*.{ts,tsx,js,jsx}': ['npm run lint'], '**/*.ts?(x)': () => 'npm run check-types', };