diff --git a/.github/workflows/deploy-integrations-staging.yml b/.github/workflows/deploy-integrations-staging.yml index 840409ab29e..2ac13f8316f 100644 --- a/.github/workflows/deploy-integrations-staging.yml +++ b/.github/workflows/deploy-integrations-staging.yml @@ -39,7 +39,6 @@ jobs: uses: ./.github/actions/deploy-integrations with: environment: 'staging' - extra_filter: "-F '!calendly'" force: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.force == 'true' }} dry_run: ${{ github.event_name == 'pull_request' }} sentry_auth_token: ${{ secrets.SENTRY_AUTH_TOKEN }} diff --git a/.oxlintrc.json b/.oxlintrc.json index 2ee6eb67a9c..55a1160b31e 100644 --- a/.oxlintrc.json +++ b/.oxlintrc.json @@ -1,6 +1,6 @@ { "$schema": "./node_modules/oxlint/configuration_schema.json", - "plugins": ["unicorn", "typescript", "oxc", "import", "promise", "n", "vitest"], + "plugins": ["unicorn", "typescript", "oxc", "import", "promise", "vitest"], "env": { "browser": true, "es2024": true, @@ -138,9 +138,8 @@ // ], // "eslint/no-trailing-spaces": "error", // "eslint/object-shorthand": "error", - "eslint/no-unused-vars": "off", "typescript/no-unused-vars": "off", - "unused-imports/no-unused-vars": [ + "eslint/no-unused-vars": [ "error", { "vars": "all", diff --git a/.prettierignore b/.prettierignore index d7570592aa1..5a72f7385e9 100644 --- a/.prettierignore +++ b/.prettierignore @@ -13,6 +13,7 @@ !*.yaml !*.yml !*.md +!*.mjs # exclusions # **/*.d.ts @@ -26,4 +27,4 @@ bp_modules .genenv/ .genenv.* .turbo -*.md.ts \ No newline at end of file +*.md.ts diff --git a/eslint.config.mjs b/eslint.config.mjs index a680bf2a2e7..ce1fec5b5b3 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,124 +1,146 @@ -import importPlugin from 'eslint-plugin-import'; -import jsdoc from "eslint-plugin-jsdoc"; -import prettier from "eslint-plugin-prettier"; -import globals from "globals"; -import tsParser from "@typescript-eslint/parser"; -import tseslint from 'typescript-eslint'; +import importPlugin from 'eslint-plugin-import' +import jsdoc from 'eslint-plugin-jsdoc' +import prettier from 'eslint-plugin-prettier' +import globals from 'globals' +import tsParser from '@typescript-eslint/parser' +import tseslint from 'typescript-eslint' import stylistic from '@stylistic/eslint-plugin' -import oxlint from 'eslint-plugin-oxlint'; -import path from "path" +import oxlint from 'eslint-plugin-oxlint' +import path from 'path' -const oxlintFile = path.join(import.meta.dirname, '.oxlintrc.json'); +const oxlintFile = path.join(import.meta.dirname, '.oxlintrc.json') const ignores = [ - ".git/", - "**/*.{d.ts,test.ts,js,cjs,mjs,jsx}", - "**/cdk.out/", - "**/dist/", - "node_modules/", - "**/node_modules/", - "**/bp_modules/", - "**/.botpress/", - "**/gen/", - "**/.turbo/", - "**/.genenv/", - "**/.ignore.me.*", - "**/*.md.ts", - "packages/llmz/examples/" -]; - -export default [{ + '.git/', + '**/*.{d.ts,test.ts,js,cjs,mjs,jsx}', + '**/cdk.out/', + '**/dist/', + 'node_modules/', + '**/node_modules/', + '**/bp_modules/', + '**/.botpress/', + '**/gen/', + '**/.turbo/', + '**/.genenv/', + '**/.ignore.me.*', + '**/*.md.ts', + 'packages/llmz/examples/', +] + +const oxlintRules = oxlint + .buildFromOxlintConfigFile(oxlintFile) + .map((config) => config.rules) + .reduce((acc, rules) => ({ ...acc, ...rules }), {}) + +export default [ + { ignores, // ^ DO NOT REMOVE THIS LINE - this is necessary for the ignores // pattern to be treated as a "global ignores" -}, { + }, + { ignores, - files: ["**/*.{ts,tsx}"], + files: ['**/*.{ts,tsx}'], plugins: { - jsdoc, - '@stylistic': stylistic, - "@typescript-eslint": tseslint.plugin, - prettier, - import: importPlugin + jsdoc, + '@stylistic': stylistic, + '@typescript-eslint': tseslint.plugin, + prettier, + import: importPlugin, }, languageOptions: { - globals: { - ...globals.browser, - ...globals.node, + globals: { + ...globals.browser, + ...globals.node, + }, + + parser: tsParser, + ecmaVersion: 5, + sourceType: 'commonjs', + + parserOptions: { + project: ['./tsconfig.json'], + tsconfigRootDir: import.meta.dirname, + }, + }, + + rules: { + ...prettier.configs.recommended.rules, + + complexity: ['off'], + 'prefer-const': 'warn', + + '@stylistic/member-delimiter-style': [ + 'error', + { + multiline: { + delimiter: 'none', + requireLast: true, + }, + + singleline: { + delimiter: 'semi', + requireLast: false, + }, }, + ], - parser: tsParser, - ecmaVersion: 5, - sourceType: "commonjs", + '@stylistic/quotes': [ + 'error', + 'single', + { + avoidEscape: true, + }, + ], - parserOptions: { - project: ["./tsconfig.json"], - tsconfigRootDir: import.meta.dirname, + '@typescript-eslint/no-floating-promises': [ + 'error', + { + checkThenables: true, }, - }, + ], + '@typescript-eslint/no-misused-promises': 'error', + '@stylistic/semi': ['error', 'never'], + '@stylistic/type-annotation-spacing': 'error', + '@stylistic/brace-style': 'off', + '@stylistic/eol-last': 'error', + '@typescript-eslint/no-shadow': 'off', + + 'import/order': [ + 'warn', + { + groups: [['builtin', 'external'], 'parent', 'index', 'sibling'], + // TODO: Eventually enable this in the future for consistency + // 'newlines-between': 'always', + alphabetize: { + order: 'asc', + caseInsensitive: true, + }, + + pathGroupsExcludedImportTypes: ['builtin'], + }, + ], + + 'jsdoc/check-alignment': 'error', + '@stylistic/linebreak-style': ['error', 'unix'], + '@stylistic/no-trailing-spaces': 'error', + 'object-shorthand': 'error', + + '@typescript-eslint/naming-convention': [ + 'warn', + { + selector: 'memberLike', + modifiers: ['private'], + format: ['camelCase'], + leadingUnderscore: 'require', + }, + ], - rules: { - ...prettier.configs.recommended.rules, - - complexity: ["off"], - "prefer-const": "warn", - - "@stylistic/member-delimiter-style": ["error", { - multiline: { - delimiter: "none", - requireLast: true, - }, - - singleline: { - delimiter: "semi", - requireLast: false, - }, - }], - - "@stylistic/quotes": ["error", "single", { - avoidEscape: true, - }], - - "@typescript-eslint/no-floating-promises": ["error", { - checkThenables: true - }], - "@typescript-eslint/no-misused-promises": "error", - "@stylistic/semi": ["error", "never"], - "@stylistic/type-annotation-spacing": "error", - "@stylistic/brace-style": "off", - "@stylistic/eol-last": "error", - "@typescript-eslint/no-shadow": "off", - - "import/order": ["warn", { - groups: [["builtin", "external"], "parent", "index", "sibling"], - // TODO: Eventually enable this in the future for consistency - // 'newlines-between': 'always', - alphabetize: { - order: "asc", - caseInsensitive: true, - }, - - pathGroupsExcludedImportTypes: ["builtin"], - }], - - "jsdoc/check-alignment": "error", - "@stylistic/linebreak-style": ["error", "unix"], - "@stylistic/no-trailing-spaces": "error", - "object-shorthand": "error", - - "@typescript-eslint/naming-convention": ["warn", { - selector: "memberLike", - modifiers: ["private"], - format: ["camelCase"], - leadingUnderscore: "require", - }], - - "@typescript-eslint/explicit-member-accessibility": "warn", - - // Disable every rule already covered by oxlint: - ...oxlint.buildFromOxlintConfigFile(oxlintFile) - .map(config => config.rules) - .reduce((acc, rules) => ({ ...acc, ...rules }), {}), + '@typescript-eslint/explicit-member-accessibility': 'warn', + + // Disable every rule already covered by oxlint: + ...oxlintRules, }, -}]; + }, +] diff --git a/integrations/calcom/src/actions/bookEvent.ts b/integrations/calcom/src/actions/bookEvent.ts index cb718169735..e6b34c7d358 100644 --- a/integrations/calcom/src/actions/bookEvent.ts +++ b/integrations/calcom/src/actions/bookEvent.ts @@ -4,7 +4,7 @@ import { TIntegration } from '.botpress' import { Input } from '.botpress/implementation/typings/actions/bookEvent/input' export async function bookEvent(props: ActionHandlerProps) { - const { input, logger, ctx, client } = props + const { input, logger, ctx } = props const calcom = new CalcomApi(ctx.configuration.calcomApiKey, logger.forBot()) diff --git a/integrations/calcom/src/actions/getEventTypes.ts b/integrations/calcom/src/actions/getEventTypes.ts index 46e05bcbcd7..12f592ba665 100644 --- a/integrations/calcom/src/actions/getEventTypes.ts +++ b/integrations/calcom/src/actions/getEventTypes.ts @@ -1,5 +1,5 @@ import { ActionHandlerProps } from '@botpress/sdk/dist/integration' -import { CalcomApi, CalcomEventType } from 'src/calcom.api' +import { CalcomApi } from 'src/calcom.api' import { TIntegration } from '.botpress' import { Input } from '.botpress/implementation/typings/actions/getEventTypes/input' diff --git a/integrations/calendly/src/calendly-api/index.ts b/integrations/calendly/src/calendly-api/index.ts index 42173c8f1d8..4ec275b4962 100644 --- a/integrations/calendly/src/calendly-api/index.ts +++ b/integrations/calendly/src/calendly-api/index.ts @@ -42,49 +42,78 @@ export class CalendlyClient { public async getCurrentUser(): Promise { const resp = await this._axiosClient.get('/users/me') - try { - return getCurrentUserRespSchema.parse(resp.data) - } catch { + + const result = getCurrentUserRespSchema.safeParse(resp.data) + if (!result.success) { throw new RuntimeError('Failed to get current user due to unexpected api response') } + return result.data } public async getEventTypesList(userUri: CalendlyUri): Promise { const searchParams = new URLSearchParams({ user: userUri }) const resp = await this._axiosClient.get(`/event_types?${searchParams}`) - try { - return getEventTypesListRespSchema.parse(resp.data) - } catch { + + const result = getEventTypesListRespSchema.safeParse(resp.data) + if (!result.success) { throw new RuntimeError('Failed to get event types list due to unexpected api response') } + return result.data } public async getWebhooksList(params: WebhooksListParams): Promise { const searchParams = new URLSearchParams({ ...params, count: '100' }) const resp = await this._axiosClient.get(`/webhook_subscriptions?${searchParams}`) - try { - return getWebhooksListRespSchema.parse(resp.data) - } catch { + const result = getWebhooksListRespSchema.safeParse(resp.data) + if (!result.success) { throw new RuntimeError('Failed to get webhooks list due to unexpected api response') } + return result.data } public async createWebhook(params: RegisterWebhookParams): Promise { const { webhookUrl, events, organization, scope, user, signingKey } = params - const resp = await this._axiosClient.post('/webhook_subscriptions', { - url: webhookUrl, - events, - organization, - user, - scope, - signing_key: signingKey, - }) try { - return createWebhookRespSchema.parse(resp.data) - } catch { - throw new RuntimeError('Failed to create webhook due to unexpected api response') + const resp = await this._axiosClient.post('/webhook_subscriptions', { + url: webhookUrl, + events, + organization, + user, + scope, + signing_key: signingKey, + }) + + const result = createWebhookRespSchema.safeParse(resp.data) + if (!result.success) { + throw new RuntimeError('Failed to create webhook due to unexpected api response', result.error) + } + return result.data + } catch (thrown: unknown) { + if (axios.isAxiosError(thrown)) { + if (thrown.status === 403) { + let errorMsg: string + const respData = thrown.response?.data + if (typeof respData === 'object' && 'message' in respData) { + errorMsg = respData.message + } else { + errorMsg = + "Either the user's account plan is insufficient (requires standard or above) or the user's account does not have the permission to register webhooks" + } + + throw new RuntimeError(errorMsg, thrown) + } + + throw new RuntimeError(thrown.message, thrown) + } + + if (thrown instanceof RuntimeError) { + throw thrown + } + + const error = thrown instanceof Error ? new RuntimeError(thrown.message) : new RuntimeError(String(thrown)) + throw error } } @@ -101,11 +130,11 @@ export class CalendlyClient { owner_type: 'EventType', }) - try { - return createSchedulingLinkRespSchema.parse(resp.data) - } catch { + const result = createSchedulingLinkRespSchema.safeParse(resp.data) + if (!result.success) { throw new RuntimeError('Failed to create scheduling link due to unexpected api response') } + return result.data } private static async _createFromManualConfig(ctx: ContextOfType<'manual'>) { diff --git a/integrations/linear/src/index.ts b/integrations/linear/src/index.ts index 155324395aa..f1d755cc503 100644 --- a/integrations/linear/src/index.ts +++ b/integrations/linear/src/index.ts @@ -25,7 +25,7 @@ const integration = new bp.Integration({ }, }) return { - items: res.issues.map(({ linearIds, ...item }) => item), + items: res.issues.map(({ linearIds: _, ...item }) => item), meta: { nextToken: res.nextCursor }, } }, diff --git a/integrations/openai/src/index.ts b/integrations/openai/src/index.ts index b453a4e8db3..e054ef9212b 100644 --- a/integrations/openai/src/index.ts +++ b/integrations/openai/src/index.ts @@ -317,6 +317,7 @@ const SECONDS_IN_A_DAY = 24 * 60 * 60 const provider = 'OpenAI' +// oxlint-disable-next-line no-unused-vars const SupportedReasoningEfforts = ['minimal', 'low', 'medium', 'high'] as ChatCompletionReasoningEffort[] export default new bp.Integration({ diff --git a/integrations/webflow/definitions/actions.ts b/integrations/webflow/definitions/actions.ts new file mode 100644 index 00000000000..68751a883ba --- /dev/null +++ b/integrations/webflow/definitions/actions.ts @@ -0,0 +1,230 @@ +import { IntegrationDefinitionProps, z } from '@botpress/sdk' + +const fieldTypeSchema = z.enum([ + 'Color', + 'DateTime', + 'Email', + 'ExtFileRef', + 'File', + 'Image', + 'Link', + 'Multimage', + 'MultiReference', + 'Number', + 'Option', + 'Phone', + 'PlainText', + 'Reference', + 'RichText', + 'Switch', + 'VideoLink', +]) + +const collectionSchema = z.object({ + id: z.string().optional(), + displayName: z.string(), + singularName: z.string(), + slug: z.string().optional(), + createdOn: z.string().optional(), + lastUpdated: z.string().optional(), +}) + +const collectionDetailsSchema = collectionSchema.extend({ + fields: z.array( + z.object({ + id: z.string(), + isRequired: z.boolean(), + type: fieldTypeSchema, + displayName: z.string(), + isEditable: z.boolean().nullable(), + slug: z.string().nullable(), + helpText: z.string().nullable(), + validation: z.any(), + }) + ), +}) + +const itemSchemaInput = z.object({ + id: z.string().optional().describe('Unique identifier for the Item'), + fieldData: z + .object({ + name: z.string().min(1, 'Field name is required').describe('Name of the Item'), + slug: z + .string() + .describe( + 'URL structure of the Item in your site. Note: Updates to an item slug will break all links referencing the old slug.' + ), + }) + .describe('The field data of your Webflow item'), + cmsLocaleId: z.string().optional().describe('Identifier for the locale of the CMS item'), + isArchived: z.boolean().optional().describe('Boolean determining if the Item is set to archived'), + isDraft: z.boolean().optional().describe('Boolean determining if the Item is set to draft'), +}) + +const itemSchemaOutput = itemSchemaInput.extend({ + lastPublished: z.string().nullable().describe('The date the item was last published'), + lastUpdated: z.string().optional().describe('The date the item was last updated'), + createdOn: z.string().optional().describe('The date the item was created'), +}) + +const paginationSchema = z.object({ + limit: z.number().default(100).optional().describe('The number of items to return'), + offset: z.number().default(0).optional().describe('The number of items to skip'), +}) + +export const actions = { + listCollections: { + title: 'List Collections', + input: { + schema: z.object({}), + }, + output: { + schema: z.object({ + collections: z.array(collectionSchema).describe('Array of collections'), + }), + }, + }, + getCollectionDetails: { + title: 'Get Collection Details', + input: { + schema: z.object({ + collectionID: z.string().min(1, 'Collection ID is required').describe('The ID of your Webflow collection'), + }), + }, + output: { + schema: z.object({ + collectionDetails: collectionDetailsSchema.describe('Details of the collection'), + }), + }, + }, + createCollection: { + title: 'Create Collection', + input: { + schema: z.object({ + collectionInfo: collectionSchema.describe('Informations of the collection to create.'), + }), + }, + output: { + schema: z.object({ + collectionDetails: collectionDetailsSchema.describe('Details of the new collection'), + }), + }, + }, + deleteCollection: { + title: 'Delete Collection', + input: { + schema: z.object({ + collectionID: z.string().min(1, 'Collection ID is required').describe('The ID of your Webflow collection'), + }), + }, + output: { + schema: z.object({}), + }, + }, + listItems: { + title: 'List Collection Items', + input: { + schema: z.object({ + collectionID: z.string().min(1, 'Collection ID is required').describe('The ID of your Webflow collection'), + pagination: paginationSchema.optional().describe('Pagination parameters'), + isLiveItems: z.boolean().default(false).describe('checkbox to decide if the list is for live items or not'), + }), + }, + output: { + schema: z.object({ + items: z.array(itemSchemaOutput).describe('Array of items'), + pagination: paginationSchema.extend({ + total: z.number().min(0).optional().describe('Total number of items in the collection'), + }), + }), + }, + }, + getItem: { + title: 'Get Collection Item', + input: { + schema: z.object({ + collectionID: z.string().min(1, 'Collection ID is required').describe('The ID of your Webflow collection'), + isLiveItems: z.boolean().default(false).describe('checkbox to decide if the list is for live items or not'), + itemID: z.string().min(1, 'Item ID is required').describe('The ID of your Webflow item'), + }), + }, + output: { + schema: z.object({ + itemDetails: itemSchemaOutput.describe('Details of the item'), + }), + }, + }, + createItems: { + title: 'Create Collection item(s)', + input: { + schema: z.object({ + collectionID: z.string().min(1, 'Collection ID is required').describe('The ID of your Webflow collection'), + isLiveItems: z.boolean().default(false).describe('checkbox to decide if the list is for live items or not'), + items: z.array(itemSchemaInput).describe('Items to add to the collection'), + }), + }, + output: { + schema: z.object({ + items: z.array(itemSchemaOutput).describe('Details of the items created'), + }), + }, + }, + updateItems: { + title: 'Update Item(s)', + input: { + schema: z.object({ + collectionID: z.string().min(1, 'Collection ID is required').describe('The ID of your Webflow collection'), + items: z.array(itemSchemaInput).describe('Array of items to update'), + isLiveItems: z.boolean().default(false).describe('checkbox to decide if the list is for live items or not'), + }), + }, + output: { + schema: z.object({ + items: z.array(itemSchemaOutput).describe('Array of updated collection items'), + }), + }, + }, + deleteItems: { + title: 'Delete Item(s)', + input: { + schema: z.object({ + collectionID: z.string().min(1, 'Collection ID is required').describe('The ID of your Webflow collection'), + itemIDs: z.object({ + items: z.array( + z.object({ id: z.string().min(1, 'Item ID is required').describe('Unique identifier for the Item') }) + ), + }), + }), + }, + output: { + schema: z.object({}), + }, + }, + publishItems: { + title: 'Publish Item(s)', + input: { + schema: z.object({ + collectionID: z.string().min(1, 'Collection ID is required').describe('The ID of your Webflow collection'), + itemIds: z.array(z.string().min(1, 'Item ID is required').describe('Unique identifier for the Item')), + }), + }, + output: { + schema: z.object({ + publishedItemIds: z.array(z.string()), + errors: z.array(z.string()), + }), + }, + }, + unpublishLiveItems: { + title: 'Unpublish Live Item(s)', + input: { + schema: z.object({ + collectionID: z.string().min(1, 'Collection ID is required').describe('The ID of your Webflow collection'), + itemIds: z.array(z.string().min(1, 'Item ID is required').describe('Unique identifier for the Item')), + }), + }, + output: { + schema: z.object({}), + }, + }, +} satisfies IntegrationDefinitionProps['actions'] diff --git a/integrations/webflow/hub.md b/integrations/webflow/hub.md new file mode 100644 index 00000000000..32c5348ff2c --- /dev/null +++ b/integrations/webflow/hub.md @@ -0,0 +1,12 @@ +# Webflow integration + +## Description + +This integration allows Botpress bots to directly interact with Webflow’s CMS collections through full CRUD (Create, Read, Update, Delete) operations. By connecting your bot to Webflow, you can dynamically manage and display content—such as blog posts, products, or user submissions—without leaving the conversation. Whether it’s retrieving live data, adding new entries, or updating existing ones, this integration turns your chatbot into a real-time content manager for Webflow-powered sites. + +## Getting started + +### Configuration + +You can create a token for you site using this [documentation](https://developers.webflow.com/data/reference/authentication/site-token) +your siteId can be found in the settings of the site you are working on diff --git a/integrations/webflow/icon.svg b/integrations/webflow/icon.svg new file mode 100644 index 00000000000..2648b27aa6e --- /dev/null +++ b/integrations/webflow/icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/integrations/webflow/integration.definition.ts b/integrations/webflow/integration.definition.ts new file mode 100644 index 00000000000..48c923d99d4 --- /dev/null +++ b/integrations/webflow/integration.definition.ts @@ -0,0 +1,31 @@ +import { z, IntegrationDefinition } from '@botpress/sdk' +import { actions } from './definitions/actions' + +export default new IntegrationDefinition({ + name: 'webflow', + version: '0.1.0', + title: 'Webflow CMS', + description: 'CRUD operations for Webflow CMS', + readme: 'hub.md', + icon: 'icon.svg', + configuration: { + schema: z.object({ + apiToken: z.string().min(1, 'API Token is required').describe('Your Webflow API Token'), + siteID: z.string().min(1, 'Site ID is required').describe('The ID of your Webflow site'), + }), + }, + actions: { + listCollections: actions.listCollections, + getCollectionDetails: actions.getCollectionDetails, + createCollection: actions.createCollection, + deleteCollection: actions.deleteCollection, + + listItems: actions.listItems, + getItem: actions.getItem, + createItems: actions.createItems, + updateItems: actions.updateItems, + deleteItems: actions.deleteItems, + publishItems: actions.publishItems, + unpublishLiveItems: actions.unpublishLiveItems, + }, +}) diff --git a/integrations/webflow/package.json b/integrations/webflow/package.json new file mode 100644 index 00000000000..7b66a393cb5 --- /dev/null +++ b/integrations/webflow/package.json @@ -0,0 +1,13 @@ +{ + "name": "@botpresshub/webflow", + "scripts": { + "check:type": "tsc --noEmit", + "build": "bp add -y && bp build" + }, + "private": true, + "dependencies": { + "@botpress/client": "workspace:*", + "@botpress/sdk": "workspace:*", + "axios": "^1.11.0" + } +} diff --git a/integrations/webflow/src/client.ts b/integrations/webflow/src/client.ts new file mode 100644 index 00000000000..22736524886 --- /dev/null +++ b/integrations/webflow/src/client.ts @@ -0,0 +1,110 @@ +import axios, { AxiosInstance } from 'axios' +import * as bp from '.botpress' + +export class WebflowClient { + private _axiosClient: AxiosInstance + + public constructor(token: string) { + this._axiosClient = axios.create({ + baseURL: 'https://api.webflow.com/v2', + headers: { + Authorization: `Bearer ${token}`, + 'Content-Type': 'application/json', + }, + }) + } + + public listItems = async ( + collectionID: string, + offset: number, + limit: number, + isLiveItems?: boolean + ): Promise => { + const path = `/collections/${collectionID}/items${isLiveItems ? '/live' : ''}?offset=${offset}&limit=${limit}` + const resp = await this._axiosClient.get(path) + return resp.data + } + + public getItem = async ( + collectionID: string, + itemID: string, + isLiveItems?: boolean + ): Promise => { + const path = `/collections/${collectionID}/items/${itemID}${isLiveItems ? '/live' : ''}` + const resp = await this._axiosClient.get(path) + return { itemDetails: resp.data } + } + + public createItems = async ( + collectionID: string, + items: object, + isLiveItems?: boolean + ): Promise => { + const path = `/collections/${collectionID}/items${isLiveItems ? '/live' : ''}?skipInvalidFiles=true` + const resp = await this._axiosClient.post(path, { items }) + return resp.data + } + + public updateItem = async ( + collectionID: string, + items: object, + isLiveItems?: boolean + ): Promise => { + const path = `/collections/${collectionID}/items${isLiveItems ? '/live' : ''}?skipInvalidFiles=true` + const resp = await this._axiosClient.patch(path, { items }) + return resp.data + } + + public deleteItem = async (collectionID: string, itemIds: object): Promise => { + const path = `/collections/${collectionID}/items` + await this._axiosClient.delete(path, { data: itemIds }) + return {} + } + + public publishItems = async ( + collectionID: string, + itemIds: object + ): Promise => { + const path = `/collections/${collectionID}/items/publish` + const resp = await this._axiosClient.post(path, { itemIds }) + return resp.data + } + + public unpublishLiveItems = async ( + collectionID: string, + itemIds: object + ): Promise => { + const path = `https://api.webflow.com/v2/collections/${collectionID}/items/publish` + await this._axiosClient.post(path, { items: itemIds }) + return {} + } + + public listCollections = async (siteID: string): Promise => { + const path = `/sites/${siteID}/collections` + const resp = await this._axiosClient.get(path) + return resp.data + } + + public getCollectionDetails = async ( + collectionID: string + ): Promise => { + const path = `/collections/${collectionID}` + const resp = await this._axiosClient.get(path) + return { collectionDetails: resp.data } + } + + public createCollection = async ( + siteID: string, + collectionInfo: object + ): Promise => { + const path = `/sites/${siteID}/collections` + const resp = await this._axiosClient.post(path, collectionInfo) + return { collectionDetails: resp.data } + } + + public deleteCollection = async (collectionID: string): Promise => { + const path = `/collections/${collectionID}` + await this._axiosClient.delete(path) + return {} + } +} diff --git a/integrations/webflow/src/index.ts b/integrations/webflow/src/index.ts new file mode 100644 index 00000000000..6fbf9ddf934 --- /dev/null +++ b/integrations/webflow/src/index.ts @@ -0,0 +1,103 @@ +import * as sdk from '@botpress/sdk' +import axios from 'axios' +import * as bp from '../.botpress' +import { WebflowClient } from './client' + +export default new bp.Integration({ + register: async (props) => { + const client = new WebflowClient(props.ctx.configuration.apiToken) + await client.listCollections(props.ctx.configuration.siteID).catch(_handleError('Failed to register integration')) + }, + unregister: async () => {}, + actions: { + async listCollections(props) { + const client = new WebflowClient(props.ctx.configuration.apiToken) + return await client + .listCollections(props.ctx.configuration.siteID) + .catch(_handleError('Failed to list collections')) + }, + + async getCollectionDetails(props) { + const client = new WebflowClient(props.ctx.configuration.apiToken) + return await client + .getCollectionDetails(props.input.collectionID) + .catch(_handleError('Failed to get collection details')) + }, + + async createCollection(props) { + const client = new WebflowClient(props.ctx.configuration.apiToken) + return await client + .createCollection(props.ctx.configuration.siteID, props.input.collectionInfo) + .catch(_handleError('Failed to create collection')) + }, + + async deleteCollection(props) { + const client = new WebflowClient(props.ctx.configuration.apiToken) + return await client.deleteCollection(props.input.collectionID).catch(_handleError('Failed to delete collection')) + }, + + async listItems(props) { + const client = new WebflowClient(props.ctx.configuration.apiToken) + return await client + .listItems(props.input.collectionID, props.input.pagination?.offset ?? 0, props.input.pagination?.limit ?? 100) + .catch(_handleError('Failed to list items')) + }, + + async getItem(props) { + const client = new WebflowClient(props.ctx.configuration.apiToken) + return await client + .getItem(props.input.collectionID, props.input.itemID, props.input.isLiveItems) + .catch(_handleError('Failed to get item')) + }, + + async createItems(props) { + const client = new WebflowClient(props.ctx.configuration.apiToken) + return await client + .createItems(props.input.collectionID, props.input.items, props.input.isLiveItems) + .catch(_handleError('Failed to create items')) + }, + + async updateItems(props) { + const client = new WebflowClient(props.ctx.configuration.apiToken) + return await client + .updateItem(props.input.collectionID, props.input.items, props.input.isLiveItems) + .catch(_handleError('Failed to update items')) + }, + + async deleteItems(props) { + const client = new WebflowClient(props.ctx.configuration.apiToken) + return await client + .deleteItem(props.input.collectionID, props.input.itemIDs) + .catch(_handleError('Failed to delete items')) + }, + + async publishItems(props) { + const client = new WebflowClient(props.ctx.configuration.apiToken) + return await client + .publishItems(props.input.collectionID, props.input.itemIds) + .catch(_handleError('Failed to publish items')) + }, + + async unpublishLiveItems(props) { + const client = new WebflowClient(props.ctx.configuration.apiToken) + return await client + .unpublishLiveItems(props.input.collectionID, props.input.itemIds) + .catch(_handleError('Failed to unpublish live items')) + }, + }, + channels: {}, + handler: async () => {}, +}) + +const _handleError = (outterMessage: string) => (thrown: unknown) => { + let innerMessage: string | undefined = undefined + if (axios.isAxiosError(thrown)) { + innerMessage = thrown.response?.data?.message || thrown.message + } else { + const err = thrown instanceof Error ? thrown : new Error(String(thrown)) + innerMessage = err.message + } + + const fullMessage = innerMessage ? `${outterMessage}: ${innerMessage}` : outterMessage + throw new sdk.RuntimeError(fullMessage) +} diff --git a/integrations/webflow/tsconfig.json b/integrations/webflow/tsconfig.json new file mode 100644 index 00000000000..6662da754d1 --- /dev/null +++ b/integrations/webflow/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "baseUrl": ".", + "outDir": "dist" + }, + "include": [".botpress/**/*", "definitions/**/*", "src/**/*", "integration.definition.ts"] +} diff --git a/package.json b/package.json index 3b65595f9ee..bd79f2ff2e2 100644 --- a/package.json +++ b/package.json @@ -39,28 +39,28 @@ "@bpinternal/depsynky": "0.2.0", "@bpinternal/readiness": "^0.0.16", "@bpinternal/retry-cli": "^0.1.1", - "@stylistic/eslint-plugin": "^2.12.1", + "@stylistic/eslint-plugin": "^5.3.1", "@types/node": "^22.16.4", - "@typescript-eslint/eslint-plugin": "^8.19.1", - "@typescript-eslint/parser": "^8.19.1", + "@typescript-eslint/eslint-plugin": "^8.42.0", + "@typescript-eslint/parser": "^8.42.0", "axios": "1.9.0", - "eslint": "^9.17.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.31.0", - "eslint-plugin-jsdoc": "^50.6.1", - "eslint-plugin-oxlint": "^0.15.5", - "eslint-plugin-prettier": "^5.2.1", - "globals": "^15.14.0", + "eslint": "^9.34.0", + "eslint-config-prettier": "^10.1.8", + "eslint-plugin-import": "^2.32.0", + "eslint-plugin-jsdoc": "^54.3.1", + "eslint-plugin-oxlint": "^1.14.0", + "eslint-plugin-prettier": "^5.5.4", + "globals": "^16.3.0", "husky": "^9.1.7", "lint-staged": "^15.4.3", - "oxlint": "^1.6.0", + "oxlint": "^1.14.0", "prettier": "^3.4.2", "semver": "^7.3.8", "sherif": "1.0.1", "ts-node": "^10.9.2", "turbo": "^2.3.3", "typescript": "^5.6.3", - "typescript-eslint": "^8.19.1", + "typescript-eslint": "^8.42.0", "vitest": "^2.1.4" }, "packageManager": "pnpm@10.12.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 30218344bf7..eed6d767790 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -38,41 +38,41 @@ importers: specifier: ^0.1.1 version: 0.1.1 '@stylistic/eslint-plugin': - specifier: ^2.12.1 - version: 2.12.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3) + specifier: ^5.3.1 + version: 5.3.1(eslint@9.34.0(jiti@2.4.2)) '@types/node': specifier: ^22.16.4 version: 22.16.4 '@typescript-eslint/eslint-plugin': - specifier: ^8.19.1 - version: 8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3) + specifier: ^8.42.0 + version: 8.42.0(@typescript-eslint/parser@8.42.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.34.0(jiti@2.4.2))(typescript@5.6.3) '@typescript-eslint/parser': - specifier: ^8.19.1 - version: 8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3) + specifier: ^8.42.0 + version: 8.42.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.6.3) axios: specifier: 1.9.0 version: 1.9.0 eslint: - specifier: ^9.17.0 - version: 9.17.0(jiti@2.4.2) + specifier: ^9.34.0 + version: 9.34.0(jiti@2.4.2) eslint-config-prettier: - specifier: ^8.5.0 - version: 8.8.0(eslint@9.17.0(jiti@2.4.2)) + specifier: ^10.1.8 + version: 10.1.8(eslint@9.34.0(jiti@2.4.2)) eslint-plugin-import: - specifier: ^2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.17.0(jiti@2.4.2)) + specifier: ^2.32.0 + version: 2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.34.0(jiti@2.4.2)) eslint-plugin-jsdoc: - specifier: ^50.6.1 - version: 50.6.1(eslint@9.17.0(jiti@2.4.2)) + specifier: ^54.3.1 + version: 54.3.1(eslint@9.34.0(jiti@2.4.2)) eslint-plugin-oxlint: - specifier: ^0.15.5 - version: 0.15.5 + specifier: ^1.14.0 + version: 1.14.0 eslint-plugin-prettier: - specifier: ^5.2.1 - version: 5.2.1(eslint-config-prettier@8.8.0(eslint@9.17.0(jiti@2.4.2)))(eslint@9.17.0(jiti@2.4.2))(prettier@3.4.2) + specifier: ^5.5.4 + version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.4.2)))(eslint@9.34.0(jiti@2.4.2))(prettier@3.4.2) globals: - specifier: ^15.14.0 - version: 15.14.0 + specifier: ^16.3.0 + version: 16.3.0 husky: specifier: ^9.1.7 version: 9.1.7 @@ -80,8 +80,8 @@ importers: specifier: ^15.4.3 version: 15.4.3 oxlint: - specifier: ^1.6.0 - version: 1.6.0 + specifier: ^1.14.0 + version: 1.14.0 prettier: specifier: ^3.4.2 version: 3.4.2 @@ -101,8 +101,8 @@ importers: specifier: ^5.6.3 version: 5.6.3 typescript-eslint: - specifier: ^8.19.1 - version: 8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3) + specifier: ^8.42.0 + version: 8.42.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.6.3) vitest: specifier: ^2.1.4 version: 2.1.4(@types/node@22.16.4) @@ -1659,6 +1659,18 @@ importers: specifier: ^2.39.1 version: 2.39.1 + integrations/webflow: + dependencies: + '@botpress/client': + specifier: workspace:* + version: link:../../packages/client + '@botpress/sdk': + specifier: workspace:* + version: link:../../packages/sdk + axios: + specifier: ^1.11.0 + version: 1.11.0 + integrations/webhook: dependencies: '@botpress/cli': @@ -3572,9 +3584,9 @@ packages: peerDependencies: type-fest: ^4.12.0 - '@es-joy/jsdoccomment@0.49.0': - resolution: {integrity: sha512-xjZTSFgECpb9Ohuk5yMX5RhUEbfeQcuOp8IF60e+wyzWEF0M5xeSgqsfLtvPEX8BIyOX9saZqzuGPmZ8oWc+5Q==} - engines: {node: '>=16'} + '@es-joy/jsdoccomment@0.53.0': + resolution: {integrity: sha512-Wyed8Wfn3vMNVwrZrgLMxmqwmlcCE1/RfUAOHFzMJb3QLH03mi9Yv1iOCZjif0yx5EZUeJ+17VD1MHPka9IQjQ==} + engines: {node: '>=20.11.0'} '@esbuild/aix-ppc64@0.19.12': resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} @@ -4134,32 +4146,42 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@eslint-community/eslint-utils@4.8.0': + resolution: {integrity: sha512-MJQFqrZgcW0UNYLGOuQpey/oTN59vyWwplvCGZztn1cKz9agZPPYpJB7h2OMmuu7VLqkvEjN8feFZJmxNF9D+Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@eslint-community/regexpp@4.12.1': resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.19.1': - resolution: {integrity: sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==} + '@eslint/config-array@0.21.0': + resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.9.1': - resolution: {integrity: sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==} + '@eslint/config-helpers@0.3.1': + resolution: {integrity: sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/eslintrc@3.2.0': - resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} + '@eslint/core@0.15.2': + resolution: {integrity: sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.17.0': - resolution: {integrity: sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==} + '@eslint/eslintrc@3.3.1': + resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/object-schema@2.1.5': - resolution: {integrity: sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==} + '@eslint/js@9.34.0': + resolution: {integrity: sha512-EoyvqQnBNsV1CWaEJ559rxXL4c8V92gxirbawSmVUOWXlsRxxQXl6LmCpdUblgxgSkDIqKnhzba2SjRTI/A5Rw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.2.4': - resolution: {integrity: sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==} + '@eslint/object-schema@2.1.6': + resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.3.5': + resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@fastify/busboy@2.1.1': @@ -4204,8 +4226,8 @@ packages: resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} engines: {node: '>=18.18'} - '@humanwhocodes/retry@0.4.1': - resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} '@ioredis/commands@1.2.0': @@ -4521,43 +4543,43 @@ packages: '@one-ini/wasm@0.1.1': resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} - '@oxlint/darwin-arm64@1.6.0': - resolution: {integrity: sha512-m3wyqBh1TOHjpr/dXeIZY7OoX+MQazb+bMHQdDtwUvefrafUx+5YHRvulYh1sZSQ449nQ3nk3qj5qj535vZRjg==} + '@oxlint/darwin-arm64@1.14.0': + resolution: {integrity: sha512-rcTw0QWeOc6IeVp+Up7WtcwdS9l4j7TOq4tihF0Ud/fl+VUVdvDCPuZ9QTnLXJhwMXiyQRWdxRyI6XBwf80ncQ==} cpu: [arm64] os: [darwin] - '@oxlint/darwin-x64@1.6.0': - resolution: {integrity: sha512-75fJfF/9xNypr7cnOYoZBhfmG1yP7ex3pUOeYGakmtZRffO9z1i1quLYhjZsmaDXsAIZ3drMhenYHMmFKS3SRg==} + '@oxlint/darwin-x64@1.14.0': + resolution: {integrity: sha512-TWFSEmyl2/DN4HoXNwQl0y/y3EXFJDctfv5MiDtVOV1GJKX80cGSIxMxXb08Q3CCWqteqEijmfSMo5TG8X1H/A==} cpu: [x64] os: [darwin] - '@oxlint/linux-arm64-gnu@1.6.0': - resolution: {integrity: sha512-YhXGf0FXa72bEt4F7eTVKx5X3zWpbAOPnaA/dZ6/g8tGhw1m9IFjrabVHFjzcx3dQny4MgA59EhyElkDvpUe8A==} + '@oxlint/linux-arm64-gnu@1.14.0': + resolution: {integrity: sha512-N1FqdKfwhVWPpMElv8qlGqdEefTbDYaRVhdGWOjs/2f7FESa5vX0cvA7ToqzkoXyXZI5DqByWiPML33njK30Kg==} cpu: [arm64] os: [linux] - '@oxlint/linux-arm64-musl@1.6.0': - resolution: {integrity: sha512-T3JDhx8mjGjvh5INsPZJrlKHmZsecgDYvtvussKRdkc1Nnn7WC+jH9sh5qlmYvwzvmetlPVNezAoNvmGO9vtMg==} + '@oxlint/linux-arm64-musl@1.14.0': + resolution: {integrity: sha512-v/BPuiateLBb7Gz1STb69EWjkgKdlPQ1NM56z+QQur21ly2hiMkBX2n0zEhqfu9PQVRUizu6AlsYuzcPY/zsIQ==} cpu: [arm64] os: [linux] - '@oxlint/linux-x64-gnu@1.6.0': - resolution: {integrity: sha512-Dx7ghtAl8aXBdqofJpi338At6lkeCtTfoinTYQXd9/TEJx+f+zCGNlQO6nJz3ydJBX48FDuOFKkNC+lUlWrd8w==} + '@oxlint/linux-x64-gnu@1.14.0': + resolution: {integrity: sha512-gUTp8KIrSYt97dn+tRRC3LKnH4xlHKCwrPwiDcGmLbCxojuN9/H5mnIhPKEfwNuZNdoKGS/ABuq3neVyvRCRtQ==} cpu: [x64] os: [linux] - '@oxlint/linux-x64-musl@1.6.0': - resolution: {integrity: sha512-7KvMGdWmAZtAtg6IjoEJHKxTXdAcrHnUnqfgs0JpXst7trquV2mxBeRZusQXwxpu4HCSomKMvJfsp1qKaqSFDg==} + '@oxlint/linux-x64-musl@1.14.0': + resolution: {integrity: sha512-DpN6cW2HPjYXeENG0JBbmubO8LtfKt6qJqEMBw9gUevbyBaX+k+Jn7sYgh6S23wGOkzmTNphBsf/7ulj4nIVYA==} cpu: [x64] os: [linux] - '@oxlint/win32-arm64@1.6.0': - resolution: {integrity: sha512-iSGC9RwX+dl7o5KFr5aH7Gq3nFbkq/3Gda6mxNPMvNkWrgXdIyiINxpyD8hJu566M+QSv1wEAu934BZotFDyoQ==} + '@oxlint/win32-arm64@1.14.0': + resolution: {integrity: sha512-oXxJksnUTUMgJ0NvjKS1mrCXAy1ttPgIVacRSlxQ+1XHy+aJDMM7I8fsCtoKoEcTIpPaD98eqUqlLYs0H2MGjA==} cpu: [arm64] os: [win32] - '@oxlint/win32-x64@1.6.0': - resolution: {integrity: sha512-jOj3L/gfLc0IwgOTkZMiZ5c673i/hbAmidlaylT0gE6H18hln9HxPgp5GCf4E4y6mwEJlW8QC5hQi221+9otdA==} + '@oxlint/win32-x64@1.14.0': + resolution: {integrity: sha512-iRYy2rhTQKFztyx0jtNMRBnFpzsRwFdjWQ7sKKzJpmbijA3Tw3DCqlGT7QRgoVRF0+X/ccNGvvsrgMohPVfLeQ==} cpu: [x64] os: [win32] @@ -4569,8 +4591,8 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@pkgr/core@0.1.1': - resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} + '@pkgr/core@0.2.9': + resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} '@react-email/body@0.0.10': @@ -5384,11 +5406,11 @@ packages: resolution: {integrity: sha512-JZlVFE6/dYpP9tQmV0/ADfn32L9uFarHWxfcRhReKUnljz1ZiUM5zpX+PH8h5CJs6lao3TuFqnPm9IJJCEkE2w==} engines: {node: '>=10.8'} - '@stylistic/eslint-plugin@2.12.1': - resolution: {integrity: sha512-fubZKIHSPuo07FgRTn6S4Nl0uXPRPYVNpyZzIDGfp7Fny6JjNus6kReLD7NI380JXi4HtUTSOZ34LBuNPO1XLQ==} + '@stylistic/eslint-plugin@5.3.1': + resolution: {integrity: sha512-Ykums1VYonM0TgkD0VteVq9mrlO2FhF48MDJnPyv3MktIB2ydtuhlO0AfWm7xnW1kyf5bjOqA6xc7JjviuVTxg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: '>=8.40.0' + eslint: '>=9.0.0' '@szmarczak/http-timer@1.1.2': resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} @@ -5467,6 +5489,9 @@ packages: '@types/estree@1.0.6': resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/event-source-polyfill@1.0.2': resolution: {integrity: sha512-qE5zrFd73BRs5oSjVys6g/5GboqOMbzLRTUFPAhfULvvvbRAOXw9m4Wk+p1BtoZm4JgW7TljGGfVabBqvi3eig==} @@ -5665,51 +5690,63 @@ packages: '@types/yargs@17.0.33': resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} - '@typescript-eslint/eslint-plugin@8.19.1': - resolution: {integrity: sha512-tJzcVyvvb9h/PB96g30MpxACd9IrunT7GF9wfA9/0TJ1LxGOJx1TdPzSbBBnNED7K9Ka8ybJsnEpiXPktolTLg==} + '@typescript-eslint/eslint-plugin@8.42.0': + resolution: {integrity: sha512-Aq2dPqsQkxHOLfb2OPv43RnIvfj05nw8v/6n3B2NABIPpHnjQnaLo9QGMTvml+tv4korl/Cjfrb/BYhoL8UUTQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + '@typescript-eslint/parser': ^8.42.0 eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.19.1': - resolution: {integrity: sha512-67gbfv8rAwawjYx3fYArwldTQKoYfezNUT4D5ioWetr/xCrxXxvleo3uuiFuKfejipvq+og7mjz3b0G2bVyUCw==} + '@typescript-eslint/parser@8.42.0': + resolution: {integrity: sha512-r1XG74QgShUgXph1BYseJ+KZd17bKQib/yF3SR+demvytiRXrwd12Blnz5eYGm8tXaeRdd4x88MlfwldHoudGg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.19.1': - resolution: {integrity: sha512-60L9KIuN/xgmsINzonOcMDSB8p82h95hoBfSBtXuO4jlR1R9L1xSkmVZKgCPVfavDlXihh4ARNjXhh1gGnLC7Q==} + '@typescript-eslint/project-service@8.42.0': + resolution: {integrity: sha512-vfVpLHAhbPjilrabtOSNcUDmBboQNrJUiNAGoImkZKnMjs2TIcWG33s4Ds0wY3/50aZmTMqJa6PiwkwezaAklg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/scope-manager@8.42.0': + resolution: {integrity: sha512-51+x9o78NBAVgQzOPd17DkNTnIzJ8T/O2dmMBLoK9qbY0Gm52XJcdJcCl18ExBMiHo6jPMErUQWUv5RLE51zJw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.19.1': - resolution: {integrity: sha512-Rp7k9lhDKBMRJB/nM9Ksp1zs4796wVNyihG9/TU9R6KCJDNkQbc2EOKjrBtLYh3396ZdpXLtr/MkaSEmNMtykw==} + '@typescript-eslint/tsconfig-utils@8.42.0': + resolution: {integrity: sha512-kHeFUOdwAJfUmYKjR3CLgZSglGHjbNTi1H8sTYRYV2xX6eNz4RyJ2LIgsDLKf8Yi0/GL1WZAC/DgZBeBft8QAQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/type-utils@8.42.0': + resolution: {integrity: sha512-9KChw92sbPTYVFw3JLRH1ockhyR3zqqn9lQXol3/YbI6jVxzWoGcT3AsAW0mu1MY0gYtsXnUGV/AKpkAj5tVlQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.19.1': - resolution: {integrity: sha512-JBVHMLj7B1K1v1051ZaMMgLW4Q/jre5qGK0Ew6UgXz1Rqh+/xPzV1aW581OM00X6iOfyr1be+QyW8LOUf19BbA==} + '@typescript-eslint/types@8.42.0': + resolution: {integrity: sha512-LdtAWMiFmbRLNP7JNeY0SqEtJvGMYSzfiWBSmx+VSZ1CH+1zyl8Mmw1TT39OrtsRvIYShjJWzTDMPWZJCpwBlw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.19.1': - resolution: {integrity: sha512-jk/TZwSMJlxlNnqhy0Eod1PNEvCkpY6MXOXE/WLlblZ6ibb32i2We4uByoKPv1d0OD2xebDv4hbs3fm11SMw8Q==} + '@typescript-eslint/typescript-estree@8.42.0': + resolution: {integrity: sha512-ku/uYtT4QXY8sl9EDJETD27o3Ewdi72hcXg1ah/kkUgBvAYHLwj2ofswFFNXS+FL5G+AGkxBtvGt8pFBHKlHsQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <5.8.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.19.1': - resolution: {integrity: sha512-IxG5gLO0Ne+KaUc8iW1A+XuKLd63o4wlbI1Zp692n1xojCl/THvgIKXJXBZixTh5dd5+yTJ/VXH7GJaaw21qXA==} + '@typescript-eslint/utils@8.42.0': + resolution: {integrity: sha512-JnIzu7H3RH5BrKC4NoZqRfmjqCIS1u3hGZltDYJgkVdqAezl4L9d1ZLw+36huCujtSBSAirGINF/S4UxOcR+/g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.19.1': - resolution: {integrity: sha512-fzmjU8CHK853V/avYZAvuVut3ZTfwN5YtMaoi+X9Y9MA9keaWNHC3zEQ9zvyX/7Hj+5JkNyK1l7TOR2hevHB6Q==} + '@typescript-eslint/visitor-keys@8.42.0': + resolution: {integrity: sha512-3WbiuzoEowaEn8RSnhJBrxSwX8ULYE9CXaPepS2C2W3NSA5NNIvBaslpBSBElPq0UGr0xVJlXFWOAKIkyylydQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typespec/ts-http-runtime@0.3.0': @@ -5809,13 +5846,8 @@ packages: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} - acorn@8.10.0: - resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} - engines: {node: '>=0.4.0'} - hasBin: true - - acorn@8.14.0: - resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} hasBin: true @@ -5939,10 +5971,6 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - array-buffer-byte-length@1.0.1: - resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} - engines: {node: '>= 0.4'} - array-buffer-byte-length@1.0.2: resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} engines: {node: '>= 0.4'} @@ -5950,16 +5978,16 @@ packages: array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - array-includes@3.1.8: - resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + array-includes@3.1.9: + resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} engines: {node: '>= 0.4'} array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - array.prototype.findlastindex@1.2.5: - resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} + array.prototype.findlastindex@1.2.6: + resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==} engines: {node: '>= 0.4'} array.prototype.flat@1.3.3: @@ -5970,10 +5998,6 @@ packages: resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} engines: {node: '>= 0.4'} - arraybuffer.prototype.slice@1.0.3: - resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} - engines: {node: '>= 0.4'} - arraybuffer.prototype.slice@1.0.4: resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} engines: {node: '>= 0.4'} @@ -6298,6 +6322,10 @@ packages: resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} engines: {node: '>= 0.4'} + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + call-bind@1.0.7: resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} engines: {node: '>= 0.4'} @@ -6310,6 +6338,10 @@ packages: resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} engines: {node: '>= 0.4'} + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + call-me-maybe@1.0.2: resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} @@ -6565,26 +6597,14 @@ packages: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} - data-view-buffer@1.0.1: - resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} - engines: {node: '>= 0.4'} - data-view-buffer@1.0.2: resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} engines: {node: '>= 0.4'} - data-view-byte-length@1.0.1: - resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} - engines: {node: '>= 0.4'} - data-view-byte-length@1.0.2: resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} engines: {node: '>= 0.4'} - data-view-byte-offset@1.0.0: - resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} - engines: {node: '>= 0.4'} - data-view-byte-offset@1.0.1: resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} engines: {node: '>= 0.4'} @@ -6902,14 +6922,14 @@ packages: error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - es-abstract@1.23.3: - resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} - engines: {node: '>= 0.4'} - es-abstract@1.23.9: resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} engines: {node: '>= 0.4'} + es-abstract@1.24.0: + resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} + engines: {node: '>= 0.4'} + es-aggregate-error@1.0.13: resolution: {integrity: sha512-KkzhUUuD2CUMqEc8JEqsXEMDHzDPE8RCjZeUBitsnB1eNcAJWQPiciKsMXe3Yytj4Flw1XLl46Qcf9OxvZha7A==} engines: {node: '>= 0.4'} @@ -6929,6 +6949,10 @@ packages: resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} engines: {node: '>= 0.4'} + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + es-set-tostringtag@2.1.0: resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} engines: {node: '>= 0.4'} @@ -6936,8 +6960,8 @@ packages: es-shim-unscopables@1.0.2: resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} - es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + es-shim-unscopables@1.1.0: + resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} engines: {node: '>= 0.4'} es-to-primitive@1.3.0: @@ -7008,8 +7032,8 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - eslint-config-prettier@8.8.0: - resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} + eslint-config-prettier@10.1.8: + resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==} hasBin: true peerDependencies: eslint: '>=7.0.0' @@ -7017,8 +7041,8 @@ packages: eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - eslint-module-utils@2.12.0: - resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} + eslint-module-utils@2.12.1: + resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -7038,8 +7062,8 @@ packages: eslint-import-resolver-webpack: optional: true - eslint-plugin-import@2.31.0: - resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} + eslint-plugin-import@2.32.0: + resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -7048,22 +7072,22 @@ packages: '@typescript-eslint/parser': optional: true - eslint-plugin-jsdoc@50.6.1: - resolution: {integrity: sha512-UWyaYi6iURdSfdVVqvfOs2vdCVz0J40O/z/HTsv2sFjdjmdlUI/qlKLOTmwbPQ2tAfQnE5F9vqx+B+poF71DBQ==} - engines: {node: '>=18'} + eslint-plugin-jsdoc@54.3.1: + resolution: {integrity: sha512-6KlEwRCaQfSi1Wsis4cxsqDfOuQDPG56ozSPCkG+N9aISTQpahbo2n0YZs6c7CIVXQzVdYSxuvQ6w31rfeiMhw==} + engines: {node: '>=20.11.0'} peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 - eslint-plugin-oxlint@0.15.5: - resolution: {integrity: sha512-oPkAGZ2ZJfHmHPiVa+aMN7Sotw1Hh/ZKJnxWnrlhVTQzgOBox9lXG0rHvYeyeewSLjuL/hyT67+IZ64nw8k55g==} + eslint-plugin-oxlint@1.14.0: + resolution: {integrity: sha512-0sRuw9X/2W9FsWis6RC46fpCOSu+yPFD9foEmJ0ypCE6XfFWO6qXJIYvNctE7QzkO8W8c2RcWP7G28Rl84dDpQ==} - eslint-plugin-prettier@5.2.1: - resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==} + eslint-plugin-prettier@5.5.4: + resolution: {integrity: sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: '@types/eslint': '>=8.0.0' eslint: '>=8.0.0' - eslint-config-prettier: '*' + eslint-config-prettier: '>= 7.0.0 <10.0.0 || >=10.1.0' prettier: '>=3.0.0' peerDependenciesMeta: '@types/eslint': @@ -7071,20 +7095,20 @@ packages: eslint-config-prettier: optional: true - eslint-scope@8.2.0: - resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} + eslint-scope@8.4.0: + resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-visitor-keys@4.2.0: - resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + eslint-visitor-keys@4.2.1: + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.17.0: - resolution: {integrity: sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==} + eslint@9.34.0: + resolution: {integrity: sha512-RNCHRX5EwdrESy3Jc9o8ie8Bog+PeYvvSR8sDGoZxNFTvZ4dlxUB3WzQ3bQMztFrSRODGrLLj8g6OFuGY/aiQg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -7093,8 +7117,8 @@ packages: jiti: optional: true - espree@10.3.0: - resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + espree@10.4.0: + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} esprima@4.0.1: @@ -7102,10 +7126,6 @@ packages: engines: {node: '>=4'} hasBin: true - esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} - esquery@1.6.0: resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} engines: {node: '>=0.10'} @@ -7355,6 +7375,10 @@ packages: for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + foreground-child@3.1.1: resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} engines: {node: '>=14'} @@ -7430,10 +7454,6 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - function.prototype.name@1.1.6: - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} - engines: {node: '>= 0.4'} - function.prototype.name@1.1.8: resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} engines: {node: '>= 0.4'} @@ -7477,14 +7497,14 @@ packages: resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} engines: {node: '>=18'} - get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} - engines: {node: '>= 0.4'} - get-intrinsic@1.2.7: resolution: {integrity: sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==} engines: {node: '>= 0.4'} + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + get-package-type@0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} @@ -7517,10 +7537,6 @@ packages: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} - get-symbol-description@1.0.2: - resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} - engines: {node: '>= 0.4'} - get-symbol-description@1.1.0: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} @@ -7569,14 +7585,10 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} - globals@15.14.0: - resolution: {integrity: sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==} + globals@16.3.0: + resolution: {integrity: sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ==} engines: {node: '>=18'} - globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} - engines: {node: '>= 0.4'} - globalthis@1.0.4: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} @@ -7682,10 +7694,6 @@ packages: has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - has-proto@1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} - engines: {node: '>= 0.4'} - has-proto@1.2.0: resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} engines: {node: '>= 0.4'} @@ -7781,14 +7789,14 @@ packages: ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - ignore@5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} - engines: {node: '>= 4'} - ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} + imap@0.8.17: resolution: {integrity: sha512-6jPudBfTHLOdA/+IqCyCfxrozq75HxwVzqn0UDaweiD0t5qN0UUrU4JpGSd6NR233L5MRZ0Ioq/bZjZIJjDQtw==} engines: {node: '>=0.8.0'} @@ -7834,10 +7842,6 @@ packages: resolution: {integrity: sha512-xtAsO0wnyd46JNRP98/JK0BXIfWNTO/tUk+1op4rnZ+N/DSdhAaBw8ZaJD8bL8ePNhyAMl/Vd6h7kYI/h9riaw==} engines: {node: '>= v8.0.0'} - internal-slot@1.0.7: - resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} - engines: {node: '>= 0.4'} - internal-slot@1.1.0: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} @@ -7854,10 +7858,6 @@ packages: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} - is-array-buffer@3.0.4: - resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} - engines: {node: '>= 0.4'} - is-array-buffer@3.0.5: resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} engines: {node: '>= 0.4'} @@ -7872,9 +7872,6 @@ packages: resolution: {integrity: sha512-GExz9MtyhlZyXYLxzlJRj5WUCE661zhDa1Yna52CN57AJsymh+DvXXjyveSioqSRdxvUrdKdvqB1b5cVKsNpWQ==} engines: {node: '>= 0.4'} - is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} - is-bigint@1.1.0: resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} engines: {node: '>= 0.4'} @@ -7883,10 +7880,6 @@ packages: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} - is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} - is-boolean-object@1.2.1: resolution: {integrity: sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==} engines: {node: '>= 0.4'} @@ -7899,8 +7892,8 @@ packages: resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} engines: {node: '>= 0.4'} - is-data-view@1.0.1: - resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} is-data-view@1.0.2: @@ -7976,10 +7969,6 @@ packages: resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} - is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} - is-number-object@1.1.1: resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} engines: {node: '>= 0.4'} @@ -7999,10 +7988,6 @@ packages: is-promise@2.2.2: resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} - is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} - is-regex@1.2.1: resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} @@ -8015,10 +8000,6 @@ packages: resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} engines: {node: '>= 0.4'} - is-shared-array-buffer@1.0.3: - resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} - engines: {node: '>= 0.4'} - is-shared-array-buffer@1.0.4: resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} engines: {node: '>= 0.4'} @@ -8035,10 +8016,6 @@ packages: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} - is-string@1.1.1: resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} engines: {node: '>= 0.4'} @@ -8051,10 +8028,6 @@ packages: resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} engines: {node: '>= 0.4'} - is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} - engines: {node: '>= 0.4'} - is-typed-array@1.1.15: resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} @@ -8066,13 +8039,14 @@ packages: resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} engines: {node: '>= 0.4'} - is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - is-weakref@1.1.0: resolution: {integrity: sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==} engines: {node: '>= 0.4'} + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} + is-weakset@2.0.4: resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} engines: {node: '>= 0.4'} @@ -8308,8 +8282,8 @@ packages: jsbn@0.1.1: resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} - jsdoc-type-pratt-parser@4.1.0: - resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==} + jsdoc-type-pratt-parser@4.8.0: + resolution: {integrity: sha512-iZ8Bdb84lWRuGHamRXFyML07r21pcwBrLkHEuHgEY5UbCouBwv7ECknDRKzsQIXMiqpPymqtIf8TC/shYKB5rw==} engines: {node: '>=12.0.0'} jsep@1.3.9: @@ -9040,12 +9014,12 @@ packages: resolution: {integrity: sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==} engines: {node: '>= 0.4'} - object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} engines: {node: '>= 0.4'} - object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} object.assign@4.1.7: @@ -9131,10 +9105,15 @@ packages: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} - oxlint@1.6.0: - resolution: {integrity: sha512-jtaD65PqzIa1udvSxxscTKBxYKuZoFXyKGLiU1Qjo1ulq3uv/fQDtoV1yey1FrQZrQjACGPi1Widsy1TucC7Jg==} + oxlint@1.14.0: + resolution: {integrity: sha512-oo0nq3zF9hmgATGc9esoMahLuEESOodUxEDeHDA2K7tbYcSfcmReE9G2QNppnq9rOSQHLTwlMtzGAjjttYaufQ==} engines: {node: '>=8.*'} hasBin: true + peerDependencies: + oxlint-tsgolint: '>=0.1.5' + peerDependenciesMeta: + oxlint-tsgolint: + optional: true p-cancelable@1.1.0: resolution: {integrity: sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==} @@ -9188,9 +9167,8 @@ packages: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} - parse-imports@2.2.1: - resolution: {integrity: sha512-OL/zLggRp8mFhKL0rNORUTR4yBYujK/uU+xZL+/0Rgm2QE4nLO9v8PzEweSJEbMGKmDRjJE4R3IMJlL2di4JeQ==} - engines: {node: '>= 18'} + parse-imports-exports@0.2.4: + resolution: {integrity: sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==} parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} @@ -9199,6 +9177,9 @@ packages: parse-srcset@1.0.2: resolution: {integrity: sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==} + parse-statements@1.0.11: + resolution: {integrity: sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==} + parseley@0.12.1: resolution: {integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==} @@ -9303,6 +9284,10 @@ packages: resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} engines: {node: '>=12'} + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + pidtree@0.6.0: resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} engines: {node: '>=0.10'} @@ -9576,10 +9561,6 @@ packages: regex-parser@2.3.0: resolution: {integrity: sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==} - regexp.prototype.flags@1.5.2: - resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} - engines: {node: '>= 0.4'} - regexp.prototype.flags@1.5.4: resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} engines: {node: '>= 0.4'} @@ -9694,10 +9675,6 @@ packages: runtypes@6.7.0: resolution: {integrity: sha512-3TLdfFX8YHNFOhwHrSJza6uxVBmBrEjnNQlNXvXCdItS0Pdskfg5vVXUTWIN+Y23QR09jWpSl99UHkA83m4uWA==} - safe-array-concat@1.1.2: - resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} - engines: {node: '>=0.4'} - safe-array-concat@1.1.3: resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} engines: {node: '>=0.4'} @@ -9715,10 +9692,6 @@ packages: resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} engines: {node: '>= 0.4'} - safe-regex-test@1.0.3: - resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} - engines: {node: '>= 0.4'} - safe-regex-test@1.1.0: resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} @@ -9779,6 +9752,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + engines: {node: '>=10'} + hasBin: true + send@0.19.0: resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} @@ -9902,9 +9880,6 @@ packages: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - slashes@3.0.12: - resolution: {integrity: sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==} - slice-ansi@5.0.0: resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} @@ -9986,6 +9961,10 @@ packages: std-env@3.8.0: resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} + stop-iteration-iterator@1.1.0: + resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} + engines: {node: '>= 0.4'} + stoppable@1.1.0: resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} engines: {node: '>=4', npm: '>=6'} @@ -10018,13 +9997,6 @@ packages: resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} engines: {node: '>= 0.4'} - string.prototype.trim@1.2.9: - resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} - engines: {node: '>= 0.4'} - - string.prototype.trimend@1.0.8: - resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} - string.prototype.trimend@1.0.9: resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} engines: {node: '>= 0.4'} @@ -10136,8 +10108,8 @@ packages: svix@1.69.0: resolution: {integrity: sha512-CxU2/GyZXzzRxFlimtpTkEcrmCXj0SN6ZaqAO5v/fEFWVdPuukw5bWskw2CG7XQ26N+LWEmCUxT3YlE+YJFpgQ==} - synckit@0.9.2: - resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} + synckit@0.11.11: + resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==} engines: {node: ^14.18.0 || >=16.0.0} tar-fs@2.1.2: @@ -10257,8 +10229,8 @@ packages: trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - ts-api-utils@2.0.0: - resolution: {integrity: sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==} + ts-api-utils@2.1.0: + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' @@ -10438,44 +10410,28 @@ packages: type@2.7.2: resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} - typed-array-buffer@1.0.2: - resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} - engines: {node: '>= 0.4'} - typed-array-buffer@1.0.3: resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} - typed-array-byte-length@1.0.1: - resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} - engines: {node: '>= 0.4'} - typed-array-byte-length@1.0.3: resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} engines: {node: '>= 0.4'} - typed-array-byte-offset@1.0.2: - resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} - engines: {node: '>= 0.4'} - typed-array-byte-offset@1.0.4: resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} engines: {node: '>= 0.4'} - typed-array-length@1.0.6: - resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} - engines: {node: '>= 0.4'} - typed-array-length@1.0.7: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} - typescript-eslint@8.19.1: - resolution: {integrity: sha512-LKPUQpdEMVOeKluHi8md7rwLcoXHhwvWp3x+sJkMuq3gGm9yaYJtPo8sRZSblMFJ5pcOGCAak/scKf1mvZDlQw==} + typescript-eslint@8.42.0: + resolution: {integrity: sha512-ozR/rQn+aQXQxh1YgbCzQWDFrsi9mcg+1PM3l/z5o1+20P7suOIaNg515bpr/OYt6FObz/NHcBstydDLHWeEKg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' + typescript: '>=4.8.4 <6.0.0' typescript@5.6.3: resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} @@ -10504,9 +10460,6 @@ packages: resolution: {integrity: sha512-keqHubrlpvT6G2wH0OEfSW4mquYRcbe/J8NMmveoQOjUqmo+hXtO+ORCpWhdbZ7k72UtY61BL7haGxW6enBnjw==} hasBin: true - unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} - unbox-primitive@1.1.0: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} @@ -10776,9 +10729,6 @@ packages: whatwg-url@7.1.0: resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} - which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - which-boxed-primitive@1.1.1: resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} engines: {node: '>= 0.4'} @@ -10791,14 +10741,14 @@ packages: resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} engines: {node: '>= 0.4'} - which-typed-array@1.1.15: - resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} - engines: {node: '>= 0.4'} - which-typed-array@1.1.18: resolution: {integrity: sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==} engines: {node: '>= 0.4'} + which-typed-array@1.1.19: + resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} + engines: {node: '>= 0.4'} + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -12021,7 +11971,7 @@ snapshots: '@babel/parser': 7.27.2 '@babel/types': 7.27.1 '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/trace-mapping': 0.3.29 jsesc: 3.1.0 '@babel/generator@7.28.0': @@ -12549,11 +12499,13 @@ snapshots: transitivePeerDependencies: - debug - '@es-joy/jsdoccomment@0.49.0': + '@es-joy/jsdoccomment@0.53.0': dependencies: + '@types/estree': 1.0.8 + '@typescript-eslint/types': 8.42.0 comment-parser: 1.4.1 esquery: 1.6.0 - jsdoc-type-pratt-parser: 4.1.0 + jsdoc-type-pratt-parser: 4.8.0 '@esbuild/aix-ppc64@0.19.12': optional: true @@ -12831,32 +12783,39 @@ snapshots: '@esbuild/win32-x64@0.23.1': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@9.17.0(jiti@2.4.2))': + '@eslint-community/eslint-utils@4.4.0(eslint@9.34.0(jiti@2.4.2))': + dependencies: + eslint: 9.34.0(jiti@2.4.2) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/eslint-utils@4.8.0(eslint@9.34.0(jiti@2.4.2))': dependencies: - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.34.0(jiti@2.4.2) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint/config-array@0.19.1': + '@eslint/config-array@0.21.0': dependencies: - '@eslint/object-schema': 2.1.5 - debug: 4.4.0 + '@eslint/object-schema': 2.1.6 + debug: 4.4.1 minimatch: 3.1.2 transitivePeerDependencies: - supports-color - '@eslint/core@0.9.1': + '@eslint/config-helpers@0.3.1': {} + + '@eslint/core@0.15.2': dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@3.2.0': + '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.12.6 - debug: 4.4.0 - espree: 10.3.0 + debug: 4.4.1 + espree: 10.4.0 globals: 14.0.0 - ignore: 5.2.4 + ignore: 5.3.2 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -12864,12 +12823,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.17.0': {} + '@eslint/js@9.34.0': {} - '@eslint/object-schema@2.1.5': {} + '@eslint/object-schema@2.1.6': {} - '@eslint/plugin-kit@0.2.4': + '@eslint/plugin-kit@0.3.5': dependencies: + '@eslint/core': 0.15.2 levn: 0.4.1 '@fastify/busboy@2.1.1': {} @@ -12915,7 +12875,7 @@ snapshots: '@humanwhocodes/retry@0.3.1': {} - '@humanwhocodes/retry@0.4.1': {} + '@humanwhocodes/retry@0.4.3': {} '@ioredis/commands@1.2.0': {} @@ -13024,7 +12984,7 @@ snapshots: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/trace-mapping': 0.3.29 '@types/node': 22.16.4 chalk: 4.1.2 collect-v8-coverage: 1.0.1 @@ -13052,7 +13012,7 @@ snapshots: '@jest/source-map@29.4.3': dependencies: - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/trace-mapping': 0.3.29 callsites: 3.1.0 graceful-fs: 4.2.11 @@ -13074,7 +13034,7 @@ snapshots: dependencies: '@babel/core': 7.26.9 '@jest/types': 29.5.0 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/trace-mapping': 0.3.29 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 2.0.0 @@ -13131,7 +13091,7 @@ snapshots: '@jridgewell/trace-mapping@0.3.9': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.4 '@jsdevtools/ono@7.1.3': {} @@ -13426,28 +13386,28 @@ snapshots: '@one-ini/wasm@0.1.1': {} - '@oxlint/darwin-arm64@1.6.0': + '@oxlint/darwin-arm64@1.14.0': optional: true - '@oxlint/darwin-x64@1.6.0': + '@oxlint/darwin-x64@1.14.0': optional: true - '@oxlint/linux-arm64-gnu@1.6.0': + '@oxlint/linux-arm64-gnu@1.14.0': optional: true - '@oxlint/linux-arm64-musl@1.6.0': + '@oxlint/linux-arm64-musl@1.14.0': optional: true - '@oxlint/linux-x64-gnu@1.6.0': + '@oxlint/linux-x64-gnu@1.14.0': optional: true - '@oxlint/linux-x64-musl@1.6.0': + '@oxlint/linux-x64-musl@1.14.0': optional: true - '@oxlint/win32-arm64@1.6.0': + '@oxlint/win32-arm64@1.14.0': optional: true - '@oxlint/win32-x64@1.6.0': + '@oxlint/win32-x64@1.14.0': optional: true '@parcel/watcher@2.1.0': @@ -13460,7 +13420,7 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@pkgr/core@0.1.1': {} + '@pkgr/core@0.2.9': {} '@react-email/body@0.0.10(react@18.3.1)': dependencies: @@ -14553,17 +14513,15 @@ snapshots: '@stoplight/yaml-ast-parser': 0.0.50 tslib: 2.6.2 - '@stylistic/eslint-plugin@2.12.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3)': + '@stylistic/eslint-plugin@5.3.1(eslint@9.34.0(jiti@2.4.2))': dependencies: - '@typescript-eslint/utils': 8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3) - eslint: 9.17.0(jiti@2.4.2) - eslint-visitor-keys: 4.2.0 - espree: 10.3.0 + '@eslint-community/eslint-utils': 4.8.0(eslint@9.34.0(jiti@2.4.2)) + '@typescript-eslint/types': 8.42.0 + eslint: 9.34.0(jiti@2.4.2) + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 estraverse: 5.3.0 - picomatch: 4.0.2 - transitivePeerDependencies: - - supports-color - - typescript + picomatch: 4.0.3 '@szmarczak/http-timer@1.1.2': dependencies: @@ -14655,6 +14613,8 @@ snapshots: '@types/estree@1.0.6': {} + '@types/estree@1.0.8': {} + '@types/event-source-polyfill@1.0.2': {} '@types/eventsource@1.1.12': {} @@ -14859,82 +14819,98 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.0 - '@typescript-eslint/eslint-plugin@8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3)': + '@typescript-eslint/eslint-plugin@8.42.0(@typescript-eslint/parser@8.42.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.34.0(jiti@2.4.2))(typescript@5.6.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3) - '@typescript-eslint/scope-manager': 8.19.1 - '@typescript-eslint/type-utils': 8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3) - '@typescript-eslint/utils': 8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.19.1 - eslint: 9.17.0(jiti@2.4.2) + '@typescript-eslint/parser': 8.42.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.42.0 + '@typescript-eslint/type-utils': 8.42.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.6.3) + '@typescript-eslint/utils': 8.42.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.42.0 + eslint: 9.34.0(jiti@2.4.2) graphemer: 1.4.0 - ignore: 5.3.2 + ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.0.0(typescript@5.6.3) + ts-api-utils: 2.1.0(typescript@5.6.3) typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3)': + '@typescript-eslint/parser@8.42.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.6.3)': dependencies: - '@typescript-eslint/scope-manager': 8.19.1 - '@typescript-eslint/types': 8.19.1 - '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.19.1 - debug: 4.4.0 - eslint: 9.17.0(jiti@2.4.2) + '@typescript-eslint/scope-manager': 8.42.0 + '@typescript-eslint/types': 8.42.0 + '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.42.0 + debug: 4.4.1 + eslint: 9.34.0(jiti@2.4.2) + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.42.0(typescript@5.6.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.42.0(typescript@5.6.3) + '@typescript-eslint/types': 8.42.0 + debug: 4.4.1 typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.19.1': + '@typescript-eslint/scope-manager@8.42.0': dependencies: - '@typescript-eslint/types': 8.19.1 - '@typescript-eslint/visitor-keys': 8.19.1 + '@typescript-eslint/types': 8.42.0 + '@typescript-eslint/visitor-keys': 8.42.0 - '@typescript-eslint/type-utils@8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3)': + '@typescript-eslint/tsconfig-utils@8.42.0(typescript@5.6.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.6.3) - '@typescript-eslint/utils': 8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3) - debug: 4.4.0 - eslint: 9.17.0(jiti@2.4.2) - ts-api-utils: 2.0.0(typescript@5.6.3) + typescript: 5.6.3 + + '@typescript-eslint/type-utils@8.42.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.6.3)': + dependencies: + '@typescript-eslint/types': 8.42.0 + '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.6.3) + '@typescript-eslint/utils': 8.42.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.6.3) + debug: 4.4.1 + eslint: 9.34.0(jiti@2.4.2) + ts-api-utils: 2.1.0(typescript@5.6.3) typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.19.1': {} + '@typescript-eslint/types@8.42.0': {} - '@typescript-eslint/typescript-estree@8.19.1(typescript@5.6.3)': + '@typescript-eslint/typescript-estree@8.42.0(typescript@5.6.3)': dependencies: - '@typescript-eslint/types': 8.19.1 - '@typescript-eslint/visitor-keys': 8.19.1 - debug: 4.4.0 + '@typescript-eslint/project-service': 8.42.0(typescript@5.6.3) + '@typescript-eslint/tsconfig-utils': 8.42.0(typescript@5.6.3) + '@typescript-eslint/types': 8.42.0 + '@typescript-eslint/visitor-keys': 8.42.0 + debug: 4.4.1 fast-glob: 3.3.2 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 2.0.0(typescript@5.6.3) + ts-api-utils: 2.1.0(typescript@5.6.3) typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3)': + '@typescript-eslint/utils@8.42.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.6.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.17.0(jiti@2.4.2)) - '@typescript-eslint/scope-manager': 8.19.1 - '@typescript-eslint/types': 8.19.1 - '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.6.3) - eslint: 9.17.0(jiti@2.4.2) + '@eslint-community/eslint-utils': 4.8.0(eslint@9.34.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.42.0 + '@typescript-eslint/types': 8.42.0 + '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.6.3) + eslint: 9.34.0(jiti@2.4.2) typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.19.1': + '@typescript-eslint/visitor-keys@8.42.0': dependencies: - '@typescript-eslint/types': 8.19.1 - eslint-visitor-keys: 4.2.0 + '@typescript-eslint/types': 8.42.0 + eslint-visitor-keys: 4.2.1 '@typespec/ts-http-runtime@0.3.0': dependencies: @@ -15045,15 +15021,13 @@ snapshots: mime-types: 2.1.35 negotiator: 0.6.3 - acorn-jsx@5.3.2(acorn@8.14.0): + acorn-jsx@5.3.2(acorn@8.15.0): dependencies: - acorn: 8.14.0 + acorn: 8.15.0 acorn-walk@8.2.0: {} - acorn@8.10.0: {} - - acorn@8.14.0: {} + acorn@8.15.0: {} adal-node@0.2.3: dependencies: @@ -15186,11 +15160,6 @@ snapshots: argparse@2.0.1: {} - array-buffer-byte-length@1.0.1: - dependencies: - call-bind: 1.0.8 - is-array-buffer: 3.0.5 - array-buffer-byte-length@1.0.2: dependencies: call-bound: 1.0.3 @@ -15198,25 +15167,28 @@ snapshots: array-flatten@1.1.1: {} - array-includes@3.1.8: + array-includes@3.1.9: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - get-intrinsic: 1.2.4 - is-string: 1.0.7 + 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 array-union@2.1.0: {} - array.prototype.findlastindex@1.2.5: + array.prototype.findlastindex@1.2.6: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.9 es-errors: 1.3.0 - es-object-atoms: 1.0.0 - es-shim-unscopables: 1.0.2 + es-object-atoms: 1.1.1 + es-shim-unscopables: 1.1.0 array.prototype.flat@1.3.3: dependencies: @@ -15232,17 +15204,6 @@ snapshots: es-abstract: 1.23.9 es-shim-unscopables: 1.0.2 - arraybuffer.prototype.slice@1.0.3: - dependencies: - array-buffer-byte-length: 1.0.2 - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-errors: 1.3.0 - get-intrinsic: 1.2.7 - is-array-buffer: 3.0.5 - is-shared-array-buffer: 1.0.4 - arraybuffer.prototype.slice@1.0.4: dependencies: array-buffer-byte-length: 1.0.2 @@ -15771,6 +15732,11 @@ snapshots: es-errors: 1.3.0 function-bind: 1.1.2 + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + call-bind@1.0.7: dependencies: es-define-property: 1.0.1 @@ -15791,6 +15757,11 @@ snapshots: call-bind-apply-helpers: 1.0.1 get-intrinsic: 1.2.7 + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + call-me-maybe@1.0.2: {} callsites@3.1.0: {} @@ -16032,36 +16003,18 @@ snapshots: data-uri-to-buffer@4.0.1: {} - data-view-buffer@1.0.1: - dependencies: - call-bind: 1.0.8 - es-errors: 1.3.0 - is-data-view: 1.0.2 - data-view-buffer@1.0.2: dependencies: call-bound: 1.0.3 es-errors: 1.3.0 is-data-view: 1.0.2 - data-view-byte-length@1.0.1: - dependencies: - call-bind: 1.0.8 - es-errors: 1.3.0 - is-data-view: 1.0.2 - data-view-byte-length@1.0.2: dependencies: call-bound: 1.0.3 es-errors: 1.3.0 is-data-view: 1.0.2 - data-view-byte-offset@1.0.0: - dependencies: - call-bind: 1.0.8 - es-errors: 1.3.0 - is-data-view: 1.0.2 - data-view-byte-offset@1.0.1: dependencies: call-bound: 1.0.3 @@ -16334,72 +16287,77 @@ snapshots: dependencies: is-arrayish: 0.2.1 - es-abstract@1.23.3: + es-abstract@1.23.9: dependencies: - array-buffer-byte-length: 1.0.1 - arraybuffer.prototype.slice: 1.0.3 + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 available-typed-arrays: 1.0.7 call-bind: 1.0.8 - data-view-buffer: 1.0.1 - data-view-byte-length: 1.0.1 - data-view-byte-offset: 1.0.0 + call-bound: 1.0.3 + 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.0.0 es-set-tostringtag: 2.1.0 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.6 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 get-intrinsic: 1.2.7 - get-symbol-description: 1.0.2 - globalthis: 1.0.3 + 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.0.3 + has-proto: 1.2.0 has-symbols: 1.1.0 hasown: 2.0.2 - internal-slot: 1.0.7 - is-array-buffer: 3.0.4 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 is-callable: 1.2.7 - is-data-view: 1.0.1 - is-negative-zero: 2.0.3 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.3 - is-string: 1.0.7 - is-typed-array: 1.1.13 - is-weakref: 1.0.2 + is-data-view: 1.0.2 + is-regex: 1.2.1 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.0 + math-intrinsics: 1.1.0 object-inspect: 1.13.3 object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.2 - safe-array-concat: 1.1.2 - safe-regex-test: 1.0.3 - string.prototype.trim: 1.2.9 - string.prototype.trimend: 1.0.8 + 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 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 string.prototype.trimstart: 1.0.8 - typed-array-buffer: 1.0.2 - typed-array-byte-length: 1.0.1 - typed-array-byte-offset: 1.0.2 - typed-array-length: 1.0.6 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.15 + 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.18 - es-abstract@1.23.9: + es-abstract@1.24.0: 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.3 + 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.0.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.2.7 + get-intrinsic: 1.3.0 get-proto: 1.0.1 get-symbol-description: 1.1.0 globalthis: 1.0.4 @@ -16412,13 +16370,15 @@ snapshots: 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.0 + is-weakref: 1.1.1 math-intrinsics: 1.1.0 - object-inspect: 1.13.3 + object-inspect: 1.13.4 object-keys: 1.1.1 object.assign: 4.1.7 own-keys: 1.0.1 @@ -16427,6 +16387,7 @@ snapshots: 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 @@ -16435,7 +16396,7 @@ snapshots: typed-array-byte-offset: 1.0.4 typed-array-length: 1.0.7 unbox-primitive: 1.1.0 - which-typed-array: 1.1.18 + which-typed-array: 1.1.19 es-aggregate-error@1.0.13: dependencies: @@ -16458,6 +16419,10 @@ snapshots: dependencies: es-errors: 1.3.0 + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + es-set-tostringtag@2.1.0: dependencies: es-errors: 1.3.0 @@ -16469,11 +16434,9 @@ snapshots: dependencies: hasown: 2.0.2 - es-to-primitive@1.2.1: + es-shim-unscopables@1.1.0: dependencies: - is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.0.4 + hasown: 2.0.2 es-to-primitive@1.3.0: dependencies: @@ -16629,125 +16592,125 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-config-prettier@8.8.0(eslint@9.17.0(jiti@2.4.2)): + eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.4.2)): dependencies: - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.34.0(jiti@2.4.2) eslint-import-resolver-node@0.3.9: dependencies: debug: 3.2.7 - is-core-module: 2.15.1 + is-core-module: 2.16.1 resolve: 1.22.8 transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint@9.17.0(jiti@2.4.2)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.42.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint@9.34.0(jiti@2.4.2)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3) - eslint: 9.17.0(jiti@2.4.2) + '@typescript-eslint/parser': 8.42.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.6.3) + eslint: 9.34.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.17.0(jiti@2.4.2)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.42.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.34.0(jiti@2.4.2)): dependencies: '@rtsao/scc': 1.1.0 - array-includes: 3.1.8 - array.prototype.findlastindex: 1.2.5 + 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: 9.17.0(jiti@2.4.2) + eslint: 9.34.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint@9.17.0(jiti@2.4.2)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.42.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint@9.34.0(jiti@2.4.2)) hasown: 2.0.2 - is-core-module: 2.15.1 + 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.8 + string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3) + '@typescript-eslint/parser': 8.42.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.6.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsdoc@50.6.1(eslint@9.17.0(jiti@2.4.2)): + eslint-plugin-jsdoc@54.3.1(eslint@9.34.0(jiti@2.4.2)): dependencies: - '@es-joy/jsdoccomment': 0.49.0 + '@es-joy/jsdoccomment': 0.53.0 are-docs-informative: 0.0.2 comment-parser: 1.4.1 - debug: 4.4.0 + debug: 4.4.1 escape-string-regexp: 4.0.0 - eslint: 9.17.0(jiti@2.4.2) - espree: 10.3.0 + eslint: 9.34.0(jiti@2.4.2) + espree: 10.4.0 esquery: 1.6.0 - parse-imports: 2.2.1 - semver: 7.6.3 + parse-imports-exports: 0.2.4 + semver: 7.7.2 spdx-expression-parse: 4.0.0 - synckit: 0.9.2 transitivePeerDependencies: - supports-color - eslint-plugin-oxlint@0.15.5: + eslint-plugin-oxlint@1.14.0: dependencies: jsonc-parser: 3.3.1 - eslint-plugin-prettier@5.2.1(eslint-config-prettier@8.8.0(eslint@9.17.0(jiti@2.4.2)))(eslint@9.17.0(jiti@2.4.2))(prettier@3.4.2): + eslint-plugin-prettier@5.5.4(eslint-config-prettier@10.1.8(eslint@9.34.0(jiti@2.4.2)))(eslint@9.34.0(jiti@2.4.2))(prettier@3.4.2): dependencies: - eslint: 9.17.0(jiti@2.4.2) + eslint: 9.34.0(jiti@2.4.2) prettier: 3.4.2 prettier-linter-helpers: 1.0.0 - synckit: 0.9.2 + synckit: 0.11.11 optionalDependencies: - eslint-config-prettier: 8.8.0(eslint@9.17.0(jiti@2.4.2)) + eslint-config-prettier: 10.1.8(eslint@9.34.0(jiti@2.4.2)) - eslint-scope@8.2.0: + eslint-scope@8.4.0: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 eslint-visitor-keys@3.4.3: {} - eslint-visitor-keys@4.2.0: {} + eslint-visitor-keys@4.2.1: {} - eslint@9.17.0(jiti@2.4.2): + eslint@9.34.0(jiti@2.4.2): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.17.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.34.0(jiti@2.4.2)) '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.19.1 - '@eslint/core': 0.9.1 - '@eslint/eslintrc': 3.2.0 - '@eslint/js': 9.17.0 - '@eslint/plugin-kit': 0.2.4 + '@eslint/config-array': 0.21.0 + '@eslint/config-helpers': 0.3.1 + '@eslint/core': 0.15.2 + '@eslint/eslintrc': 3.3.1 + '@eslint/js': 9.34.0 + '@eslint/plugin-kit': 0.3.5 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.1 + '@humanwhocodes/retry': 0.4.3 '@types/estree': 1.0.6 '@types/json-schema': 7.0.15 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.0 + debug: 4.4.1 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 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + esquery: 1.6.0 esutils: 2.0.3 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.4 + ignore: 5.3.2 imurmurhash: 0.1.4 is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 @@ -16760,18 +16723,14 @@ snapshots: transitivePeerDependencies: - supports-color - espree@10.3.0: + espree@10.4.0: dependencies: - acorn: 8.14.0 - acorn-jsx: 5.3.2(acorn@8.14.0) - eslint-visitor-keys: 4.2.0 + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + eslint-visitor-keys: 4.2.1 esprima@4.0.1: {} - esquery@1.5.0: - dependencies: - estraverse: 5.3.0 - esquery@1.6.0: dependencies: estraverse: 5.3.0 @@ -17029,6 +16988,10 @@ snapshots: dependencies: is-callable: 1.2.7 + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + foreground-child@3.1.1: dependencies: cross-spawn: 7.0.6 @@ -17111,13 +17074,6 @@ snapshots: function-bind@1.1.2: {} - function.prototype.name@1.1.6: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - functions-have-names: 1.2.3 - function.prototype.name@1.1.8: dependencies: call-bind: 1.0.8 @@ -17176,20 +17132,25 @@ snapshots: get-east-asian-width@1.3.0: {} - get-intrinsic@1.2.4: + get-intrinsic@1.2.7: dependencies: + call-bind-apply-helpers: 1.0.1 + es-define-property: 1.0.1 es-errors: 1.3.0 + es-object-atoms: 1.0.0 function-bind: 1.1.2 - has-proto: 1.0.3 + get-proto: 1.0.1 + gopd: 1.2.0 has-symbols: 1.1.0 hasown: 2.0.2 + math-intrinsics: 1.1.0 - get-intrinsic@1.2.7: + get-intrinsic@1.3.0: dependencies: - call-bind-apply-helpers: 1.0.1 + call-bind-apply-helpers: 1.0.2 es-define-property: 1.0.1 es-errors: 1.3.0 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 function-bind: 1.1.2 get-proto: 1.0.1 gopd: 1.2.0 @@ -17223,12 +17184,6 @@ snapshots: get-stream@8.0.1: {} - get-symbol-description@1.0.2: - dependencies: - call-bind: 1.0.8 - es-errors: 1.3.0 - get-intrinsic: 1.2.7 - get-symbol-description@1.1.0: dependencies: call-bound: 1.0.3 @@ -17286,11 +17241,7 @@ snapshots: globals@14.0.0: {} - globals@15.14.0: {} - - globalthis@1.0.3: - dependencies: - define-properties: 1.2.1 + globals@16.3.0: {} globalthis@1.0.4: dependencies: @@ -17467,8 +17418,6 @@ snapshots: dependencies: es-define-property: 1.0.1 - has-proto@1.0.3: {} - has-proto@1.2.0: dependencies: dunder-proto: 1.0.1 @@ -17587,10 +17536,10 @@ snapshots: ieee754@1.2.1: {} - ignore@5.2.4: {} - ignore@5.3.2: {} + ignore@7.0.5: {} + imap@0.8.17: dependencies: readable-stream: 1.1.14 @@ -17633,12 +17582,6 @@ snapshots: transitivePeerDependencies: - debug - internal-slot@1.0.7: - dependencies: - es-errors: 1.3.0 - hasown: 2.0.2 - side-channel: 1.1.0 - internal-slot@1.1.0: dependencies: es-errors: 1.3.0 @@ -17649,7 +17592,7 @@ snapshots: dependencies: '@ioredis/commands': 1.2.0 cluster-key-slot: 1.1.2 - debug: 4.4.0 + debug: 4.4.1 denque: 2.1.0 lodash.defaults: 4.2.0 lodash.isarguments: 3.1.0 @@ -17663,11 +17606,6 @@ snapshots: ipaddr.js@1.9.1: {} - is-array-buffer@3.0.4: - dependencies: - call-bind: 1.0.8 - get-intrinsic: 1.2.7 - is-array-buffer@3.0.5: dependencies: call-bind: 1.0.8 @@ -17685,10 +17623,6 @@ snapshots: has-tostringtag: 1.0.2 safe-regex-test: 1.1.0 - is-bigint@1.0.4: - dependencies: - has-bigints: 1.0.2 - is-bigint@1.1.0: dependencies: has-bigints: 1.0.2 @@ -17697,11 +17631,6 @@ snapshots: dependencies: binary-extensions: 2.2.0 - is-boolean-object@1.1.2: - dependencies: - call-bind: 1.0.8 - has-tostringtag: 1.0.2 - is-boolean-object@1.2.1: dependencies: call-bound: 1.0.3 @@ -17713,9 +17642,9 @@ snapshots: dependencies: hasown: 2.0.2 - is-data-view@1.0.1: + is-core-module@2.16.1: dependencies: - is-typed-array: 1.1.15 + hasown: 2.0.2 is-data-view@1.0.2: dependencies: @@ -17775,10 +17704,6 @@ snapshots: is-negative-zero@2.0.3: {} - is-number-object@1.0.7: - dependencies: - has-tostringtag: 1.0.2 - is-number-object@1.1.1: dependencies: call-bound: 1.0.3 @@ -17792,11 +17717,6 @@ snapshots: is-promise@2.2.2: {} - is-regex@1.1.4: - dependencies: - call-bind: 1.0.8 - has-tostringtag: 1.0.2 - is-regex@1.2.1: dependencies: call-bound: 1.0.3 @@ -17808,10 +17728,6 @@ snapshots: is-set@2.0.3: {} - is-shared-array-buffer@1.0.3: - dependencies: - call-bind: 1.0.8 - is-shared-array-buffer@1.0.4: dependencies: call-bound: 1.0.3 @@ -17822,10 +17738,6 @@ snapshots: is-stream@3.0.0: {} - is-string@1.0.7: - dependencies: - has-tostringtag: 1.0.2 - is-string@1.1.1: dependencies: call-bound: 1.0.3 @@ -17841,10 +17753,6 @@ snapshots: has-symbols: 1.1.0 safe-regex-test: 1.1.0 - is-typed-array@1.1.13: - dependencies: - which-typed-array: 1.1.18 - is-typed-array@1.1.15: dependencies: which-typed-array: 1.1.18 @@ -17853,14 +17761,14 @@ snapshots: is-weakmap@2.0.2: {} - is-weakref@1.0.2: - dependencies: - call-bind: 1.0.8 - is-weakref@1.1.0: dependencies: call-bound: 1.0.3 + is-weakref@1.1.1: + dependencies: + call-bound: 1.0.4 + is-weakset@2.0.4: dependencies: call-bound: 1.0.3 @@ -18279,7 +18187,7 @@ snapshots: jsbn@0.1.1: {} - jsdoc-type-pratt-parser@4.1.0: {} + jsdoc-type-pratt-parser@4.8.0: {} jsep@1.3.9: {} @@ -19195,14 +19103,9 @@ snapshots: object-inspect@1.13.3: {} - object-keys@1.1.1: {} + object-inspect@1.13.4: {} - object.assign@4.1.5: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - has-symbols: 1.1.0 - object-keys: 1.1.1 + object-keys@1.1.1: {} object.assign@4.1.7: dependencies: @@ -19320,16 +19223,16 @@ snapshots: object-keys: 1.1.1 safe-push-apply: 1.0.0 - oxlint@1.6.0: + oxlint@1.14.0: optionalDependencies: - '@oxlint/darwin-arm64': 1.6.0 - '@oxlint/darwin-x64': 1.6.0 - '@oxlint/linux-arm64-gnu': 1.6.0 - '@oxlint/linux-arm64-musl': 1.6.0 - '@oxlint/linux-x64-gnu': 1.6.0 - '@oxlint/linux-x64-musl': 1.6.0 - '@oxlint/win32-arm64': 1.6.0 - '@oxlint/win32-x64': 1.6.0 + '@oxlint/darwin-arm64': 1.14.0 + '@oxlint/darwin-x64': 1.14.0 + '@oxlint/linux-arm64-gnu': 1.14.0 + '@oxlint/linux-arm64-musl': 1.14.0 + '@oxlint/linux-x64-gnu': 1.14.0 + '@oxlint/linux-x64-musl': 1.14.0 + '@oxlint/win32-arm64': 1.14.0 + '@oxlint/win32-x64': 1.14.0 p-cancelable@1.1.0: {} @@ -19380,10 +19283,9 @@ snapshots: dependencies: callsites: 3.1.0 - parse-imports@2.2.1: + parse-imports-exports@0.2.4: dependencies: - es-module-lexer: 1.6.0 - slashes: 3.0.12 + parse-statements: 1.0.11 parse-json@5.2.0: dependencies: @@ -19394,6 +19296,8 @@ snapshots: parse-srcset@1.0.2: {} + parse-statements@1.0.11: {} + parseley@0.12.1: dependencies: leac: 0.6.0 @@ -19483,6 +19387,8 @@ snapshots: picomatch@4.0.2: {} + picomatch@4.0.3: {} + pidtree@0.6.0: {} pify@2.3.0: {} @@ -19735,13 +19641,6 @@ snapshots: regex-parser@2.3.0: {} - regexp.prototype.flags@1.5.2: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-errors: 1.3.0 - set-function-name: 2.0.2 - regexp.prototype.flags@1.5.4: dependencies: call-bind: 1.0.8 @@ -19908,13 +19807,6 @@ snapshots: runtypes@6.7.0: {} - safe-array-concat@1.1.2: - dependencies: - call-bind: 1.0.8 - get-intrinsic: 1.2.7 - has-symbols: 1.1.0 - isarray: 2.0.5 - safe-array-concat@1.1.3: dependencies: call-bind: 1.0.8 @@ -19936,12 +19828,6 @@ snapshots: es-errors: 1.3.0 isarray: 2.0.5 - safe-regex-test@1.0.3: - dependencies: - call-bind: 1.0.8 - es-errors: 1.3.0 - is-regex: 1.2.1 - safe-regex-test@1.1.0: dependencies: call-bound: 1.0.3 @@ -19995,6 +19881,8 @@ snapshots: semver@7.6.3: {} + semver@7.7.2: {} + send@0.19.0: dependencies: debug: 2.6.9 @@ -20151,8 +20039,6 @@ snapshots: slash@3.0.0: {} - slashes@3.0.12: {} - slice-ansi@5.0.0: dependencies: ansi-styles: 6.2.1 @@ -20231,6 +20117,11 @@ snapshots: std-env@3.8.0: {} + stop-iteration-iterator@1.1.0: + dependencies: + es-errors: 1.3.0 + internal-slot: 1.1.0 + stoppable@1.1.0: {} strict-uri-encode@2.0.0: {} @@ -20270,19 +20161,6 @@ snapshots: es-object-atoms: 1.0.0 has-property-descriptors: 1.0.2 - string.prototype.trim@1.2.9: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.23.9 - es-object-atoms: 1.0.0 - - string.prototype.trimend@1.0.8: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 - string.prototype.trimend@1.0.9: dependencies: call-bind: 1.0.8 @@ -20442,10 +20320,9 @@ snapshots: transitivePeerDependencies: - encoding - synckit@0.9.2: + synckit@0.11.11: dependencies: - '@pkgr/core': 0.1.1 - tslib: 2.6.2 + '@pkgr/core': 0.2.9 tar-fs@2.1.2: dependencies: @@ -20579,7 +20456,7 @@ snapshots: trough@2.2.0: {} - ts-api-utils@2.0.0(typescript@5.6.3): + ts-api-utils@2.1.0(typescript@5.6.3): dependencies: typescript: 5.6.3 @@ -20618,7 +20495,7 @@ snapshots: '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 '@types/node': 22.16.4 - acorn: 8.10.0 + acorn: 8.15.0 acorn-walk: 8.2.0 arg: 4.1.3 create-require: 1.1.1 @@ -20636,7 +20513,7 @@ snapshots: '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 '@types/node': 22.16.4 - acorn: 8.10.0 + acorn: 8.15.0 acorn-walk: 8.2.0 arg: 4.1.3 create-require: 1.1.1 @@ -20773,26 +20650,12 @@ snapshots: type@2.7.2: {} - typed-array-buffer@1.0.2: - dependencies: - call-bind: 1.0.8 - es-errors: 1.3.0 - is-typed-array: 1.1.15 - typed-array-buffer@1.0.3: dependencies: call-bound: 1.0.3 es-errors: 1.3.0 is-typed-array: 1.1.15 - typed-array-byte-length@1.0.1: - 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.15 - typed-array-byte-length@1.0.3: dependencies: call-bind: 1.0.8 @@ -20801,15 +20664,6 @@ snapshots: has-proto: 1.2.0 is-typed-array: 1.1.15 - typed-array-byte-offset@1.0.2: - 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 - typed-array-byte-offset@1.0.4: dependencies: available-typed-arrays: 1.0.7 @@ -20820,15 +20674,6 @@ snapshots: is-typed-array: 1.1.15 reflect.getprototypeof: 1.0.10 - typed-array-length@1.0.6: - 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.15 - possible-typed-array-names: 1.0.0 - typed-array-length@1.0.7: dependencies: call-bind: 1.0.8 @@ -20838,12 +20683,13 @@ snapshots: possible-typed-array-names: 1.0.0 reflect.getprototypeof: 1.0.10 - typescript-eslint@8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3): + typescript-eslint@8.42.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.6.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3) - '@typescript-eslint/parser': 8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3) - '@typescript-eslint/utils': 8.19.1(eslint@9.17.0(jiti@2.4.2))(typescript@5.6.3) - eslint: 9.17.0(jiti@2.4.2) + '@typescript-eslint/eslint-plugin': 8.42.0(@typescript-eslint/parser@8.42.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.34.0(jiti@2.4.2))(typescript@5.6.3) + '@typescript-eslint/parser': 8.42.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.6.3) + '@typescript-eslint/typescript-estree': 8.42.0(typescript@5.6.3) + '@typescript-eslint/utils': 8.42.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.6.3) + eslint: 9.34.0(jiti@2.4.2) typescript: 5.6.3 transitivePeerDependencies: - supports-color @@ -20861,13 +20707,6 @@ snapshots: ulid@2.3.0: {} - unbox-primitive@1.0.2: - dependencies: - call-bind: 1.0.8 - has-bigints: 1.0.2 - has-symbols: 1.1.0 - which-boxed-primitive: 1.0.2 - unbox-primitive@1.1.0: dependencies: call-bound: 1.0.3 @@ -20991,7 +20830,7 @@ snapshots: v8-to-istanbul@9.1.0: dependencies: - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/trace-mapping': 0.3.29 '@types/istanbul-lib-coverage': 2.0.4 convert-source-map: 1.9.0 @@ -21164,14 +21003,6 @@ snapshots: tr46: 1.0.1 webidl-conversions: 4.0.2 - which-boxed-primitive@1.0.2: - dependencies: - is-bigint: 1.0.4 - is-boolean-object: 1.1.2 - is-number-object: 1.0.7 - is-string: 1.1.1 - is-symbol: 1.0.4 - which-boxed-primitive@1.1.1: dependencies: is-bigint: 1.1.0 @@ -21203,20 +21034,22 @@ snapshots: is-weakmap: 2.0.2 is-weakset: 2.0.4 - which-typed-array@1.1.15: + which-typed-array@1.1.18: dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.8 + call-bound: 1.0.3 for-each: 0.3.3 gopd: 1.2.0 has-tostringtag: 1.0.2 - which-typed-array@1.1.18: + which-typed-array@1.1.19: dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.8 - call-bound: 1.0.3 - for-each: 0.3.3 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 gopd: 1.2.0 has-tostringtag: 1.0.2