diff --git a/.changeset/orange-pigs-cross.md b/.changeset/orange-pigs-cross.md new file mode 100644 index 000000000..002e9a186 --- /dev/null +++ b/.changeset/orange-pigs-cross.md @@ -0,0 +1,5 @@ +--- +'@openfn/cli': minor +--- + +Allow credential map, as json or yaml, to be passed via --credentials diff --git a/.changeset/public-dragons-study.md b/.changeset/public-dragons-study.md new file mode 100644 index 000000000..e6e4bd4f5 --- /dev/null +++ b/.changeset/public-dragons-study.md @@ -0,0 +1,5 @@ +--- +'@openfn/project': patch +--- + +Map project_credential_id to configuration diff --git a/integration-tests/cli/test/execute-workflow.test.ts b/integration-tests/cli/test/execute-workflow.test.ts index da069b938..6f7af1fb3 100644 --- a/integration-tests/cli/test/execute-workflow.test.ts +++ b/integration-tests/cli/test/execute-workflow.test.ts @@ -147,6 +147,18 @@ test.serial( } ); +test.serial( + `openfn ${jobsPath}/wf-creds.json --credentials ${jobsPath}/creds.json`, + async (t) => { + const { err, stdout, stderr } = await run(t.title); + console.log({ stdout, stderr }); + t.falsy(err); + + const out = getJSON(); + t.is(out.value, 'admin:admin'); + } +); + test.serial( `openfn ${jobsPath}/wf-errors.json -S "{ \\"data\\": { \\"number\\": 2 } }"`, async (t) => { diff --git a/integration-tests/cli/test/fixtures/creds.js b/integration-tests/cli/test/fixtures/creds.js new file mode 100644 index 000000000..a9b4dc048 --- /dev/null +++ b/integration-tests/cli/test/fixtures/creds.js @@ -0,0 +1,4 @@ +fn((s) => { + s.value = `${s.configuration.user}:${s.configuration.password}`; + return s; +}); diff --git a/integration-tests/cli/test/fixtures/creds.json b/integration-tests/cli/test/fixtures/creds.json new file mode 100644 index 000000000..a757301e8 --- /dev/null +++ b/integration-tests/cli/test/fixtures/creds.json @@ -0,0 +1,6 @@ +{ + "08089249-0890-4a73-8799-e2ec2b9e5d77": { + "user": "admin", + "password": "admin" + } +} diff --git a/integration-tests/cli/test/fixtures/wf-creds.json b/integration-tests/cli/test/fixtures/wf-creds.json new file mode 100644 index 000000000..afc9f339b --- /dev/null +++ b/integration-tests/cli/test/fixtures/wf-creds.json @@ -0,0 +1,11 @@ +{ + "workflow": { + "steps": [ + { + "adaptor": "common", + "configuration": "08089249-0890-4a73-8799-e2ec2b9e5d77", + "expression": "creds.js" + } + ] + } +} diff --git a/packages/cli/src/execute/apply-credential-map.ts b/packages/cli/src/execute/apply-credential-map.ts new file mode 100644 index 000000000..e0c75691d --- /dev/null +++ b/packages/cli/src/execute/apply-credential-map.ts @@ -0,0 +1,55 @@ +/** + * utility to take a workflow and a credential map + * and apply credentials to each step + */ + +import { ExecutionPlan } from '@openfn/lexicon'; +import { Logger } from '../util'; + +type JobId = string; + +export type CredentialMap = Record; + +const applyCredentialMap = ( + plan: ExecutionPlan, + map: CredentialMap = {}, + logger?: Logger +) => { + const stepsWithCredentialIds = plan.workflow.steps.filter( + (step: any) => + typeof step.configuration === 'string' && + !step.configuration.endsWith('.json') + ) as { configuration: string; name?: string; id: string }[]; + + const unmapped: Record = {}; + + for (const step of stepsWithCredentialIds) { + if (map[step.configuration]) { + logger?.debug( + `Applying credential ${step.configuration} to "${step.name ?? step.id}"` + ); + step.configuration = map[step.configuration]; + } else { + unmapped[step.configuration] = true; + // @ts-ignore + delete step.configuration; + } + } + + if (Object.keys(unmapped).length) { + logger?.warn( + `WARNING: credential IDs were found in the workflow, but values have not been provided:` + ); + logger?.warn(' ', Object.keys(unmapped).join(',')); + if (map) { + logger?.warn( + 'If the workflow fails, add these credentials to the credential map' + ); + } else { + // TODO if running from project file this might be bad advice + logger?.warn('Pass a credential map with --credentials'); + } + } +}; + +export default applyCredentialMap; diff --git a/packages/cli/src/execute/command.ts b/packages/cli/src/execute/command.ts index 33c9be47f..baa09401b 100644 --- a/packages/cli/src/execute/command.ts +++ b/packages/cli/src/execute/command.ts @@ -13,6 +13,7 @@ export type ExecuteOptions = Required< | 'cacheSteps' | 'command' | 'compile' + | 'credentials' | 'expandAdaptors' | 'end' | 'immutable' @@ -46,6 +47,7 @@ const options = [ o.autoinstall, o.cacheSteps, o.compile, + o.credentials, o.end, o.ignoreImports, o.immutable, diff --git a/packages/cli/src/execute/handler.ts b/packages/cli/src/execute/handler.ts index ed4b30eee..66f0d5fcc 100644 --- a/packages/cli/src/execute/handler.ts +++ b/packages/cli/src/execute/handler.ts @@ -1,9 +1,13 @@ import type { ExecutionPlan } from '@openfn/lexicon'; +import { yamlToJson } from '@openfn/project'; +import { readFile } from 'node:fs/promises'; +import path from 'node:path'; import type { ExecuteOptions } from './command'; import execute from './execute'; import serializeOutput from './serialize-output'; import getAutoinstallTargets from './get-autoinstall-targets'; +import applyCredentialMap from './apply-credential-map'; import { install } from '../repo/handler'; import compile from '../compile/compile'; @@ -44,6 +48,35 @@ const matchStep = ( return ''; }; +const loadAndApplyCredentialMap = async ( + plan: ExecutionPlan, + options: ExecuteOptions, + logger: Logger +) => { + let creds = {}; + if (options.credentials) { + try { + const credsRaw = await readFile( + path.resolve(options.credentials), + 'utf8' + ); + if (options.credentials.endsWith('.json')) { + creds = JSON.parse(credsRaw); + } else { + creds = yamlToJson(credsRaw); + } + } catch (e) { + logger.error('Error processing credential map:'); + logger.error(e); + // probably want to exist if the credential map is invalid + process.exitCode = 1; + return; + } + logger.info('Credential map loaded '); + } + return applyCredentialMap(plan, creds, logger); +}; + const executeHandler = async (options: ExecuteOptions, logger: Logger) => { const start = new Date().getTime(); assertPath(options.path); @@ -51,7 +84,7 @@ const executeHandler = async (options: ExecuteOptions, logger: Logger) => { let plan = await loadPlan(options, logger); validatePlan(plan, logger); - + await loadAndApplyCredentialMap(plan, options, logger); if (options.cacheSteps) { await clearCache(plan, options, logger); } diff --git a/packages/cli/src/options.ts b/packages/cli/src/options.ts index b6f11bad5..8df47a8c9 100644 --- a/packages/cli/src/options.ts +++ b/packages/cli/src/options.ts @@ -31,6 +31,7 @@ export type Opts = { compile?: boolean; configPath?: string; confirm?: boolean; + credentials?: string; describe?: string; end?: string; // workflow end node env?: string; @@ -245,6 +246,14 @@ export const configPath: CLIOption = { }, }; +export const credentials: CLIOption = { + name: 'credentials', + yargs: { + alias: ['creds'], + description: 'A path which points to a credential map', + }, +}; + export const describe: CLIOption = { name: 'describe', yargs: { diff --git a/packages/cli/test/execute/apply-credential-map.test.ts b/packages/cli/test/execute/apply-credential-map.test.ts new file mode 100644 index 000000000..e4eb72c10 --- /dev/null +++ b/packages/cli/test/execute/apply-credential-map.test.ts @@ -0,0 +1,95 @@ +import test from 'ava'; +import applyCredentialMap from '../../src/execute/apply-credential-map'; +import { createMockLogger } from '@openfn/logger/dist'; + +const fn = `const fn = (fn) => (s) => fn(s); +`; + +const createWorkflow = (steps?: any[]) => ({ + workflow: { + steps: steps ?? [ + { + id: 'a', + expression: `${fn}fn(() => ({ data: { count: 42 } }));`, + // project_credential_id must map here + // what about keychain_credential_id ? + // Should we map to credential, rather than configuration? I don't think so + configuration: 'A', + next: { b: true }, + }, + ], + }, +}); + +test('do nothing if map is undefined', (t) => { + const wf = createWorkflow(); + delete wf.workflow.steps[0].configuration; + + applyCredentialMap(wf); + + t.falsy(wf.workflow.steps[0].configuration); +}); + +test('do nothing if map is empty', (t) => { + const wf = createWorkflow(); + delete wf.workflow.steps[0].configuration; + + applyCredentialMap(wf, {}); + + t.falsy(wf.workflow.steps[0].configuration); +}); + +test('apply a credential to a single step', (t) => { + const wf = createWorkflow(); + const map = { + A: { user: 'Anne Arnold' }, + }; + + t.is(wf.workflow.steps[0].configuration, 'A'); + + applyCredentialMap(wf, map); + + t.deepEqual(wf.workflow.steps[0].configuration, map.A); +}); + +test('apply a credential to several steps', (t) => { + const wf = createWorkflow([ + { id: 'a', configuration: 'A' }, + { id: 'b', configuration: 'B' }, + ]); + const map = { + A: { user: 'Anne Arnold' }, + B: { user: 'Belle Bellvue' }, + }; + + t.is(wf.workflow.steps[0].configuration, 'A'); + t.is(wf.workflow.steps[1].configuration, 'B'); + + applyCredentialMap(wf, map); + + t.deepEqual(wf.workflow.steps[0].configuration, map.A); + t.deepEqual(wf.workflow.steps[1].configuration, map.B); +}); + +test('wipe string credential if unmapped', (t) => { + const wf = createWorkflow(); + + t.truthy(wf.workflow.steps[0].configuration); + + applyCredentialMap(wf, {}); + + t.falsy(wf.workflow.steps[0].configuration); +}); + +test('warn if credential unmapped', (t) => { + const wf = createWorkflow(); + + const logger = createMockLogger(); + t.truthy(wf.workflow.steps[0].configuration); + + applyCredentialMap(wf, {}, logger); + + t.truthy( + logger._find('warn', /WARNING: credential IDs were found in the workflow/i) + ); +}); diff --git a/packages/cli/test/execute/execute.test.ts b/packages/cli/test/execute/execute.test.ts index a1e801661..1e28d46d4 100644 --- a/packages/cli/test/execute/execute.test.ts +++ b/packages/cli/test/execute/execute.test.ts @@ -93,6 +93,80 @@ test.serial('run a workflow', async (t) => { t.is(result.data.count, 84); }); +test.serial('run a workflow with a JSON credential map', async (t) => { + const workflow = { + workflow: { + steps: [ + { + id: 'a', + // The two steps in this workflow will just write the credential to state + expression: `${fn}fn(s => { s.a = s.configuration.password; return s; })`, + configuration: 'A', + next: { b: true }, + }, + { + id: 'b', + expression: `${fn}fn(s => { s.b = s.configuration.password; return s; })`, + configuration: 'B', + }, + ], + }, + }; + mockFs({ + '/workflow.json': JSON.stringify(workflow), + '/creds.json': JSON.stringify({ + A: { password: 'a' }, + B: { password: 'b' }, + }), + }); + + const options = { + ...defaultOptions, + workflowPath: '/workflow.json', + credentials: '/creds.json', + }; + const result = await handler(options, logger); + t.is(result.a, 'a'); + t.is(result.b, 'b'); +}); + +test.serial.skip('run a workflow with a YAML credential map', async (t) => { + const workflow = { + workflow: { + steps: [ + { + id: 'a', + // The two steps in this workflow will just write the credential to state + expression: `${fn}fn(s => { s.a = s.configuration.password; return s; })`, + configuration: 'A', + next: { b: true }, + }, + { + id: 'b', + expression: `${fn}fn(s => { s.b = s.configuration.password; return s; })`, + configuration: 'B', + }, + ], + }, + }; + mockFs({ + '/workflow.json': JSON.stringify(workflow), + '/creds.yaml': `A: + password: a +B: + password: b`, + }); + + const options = { + ...defaultOptions, + workflowPath: '/workflow.json', + credentials: '/creds.yaml', + }; + const result = await handler(options, logger); + t.is(result.a, 'a'); + t.is(result.b, 'b'); +}); + test.serial('run a workflow with state', async (t) => { const workflow = { workflow: { diff --git a/packages/engine-multi/test/worker/pool.test.ts b/packages/engine-multi/test/worker/pool.test.ts index 190dacbbe..fe162d249 100644 --- a/packages/engine-multi/test/worker/pool.test.ts +++ b/packages/engine-multi/test/worker/pool.test.ts @@ -201,7 +201,8 @@ test('destroy should handle un-initialised workers', async (t) => { t.is(pool._pool.length, 0); }); -test('destroy should close all child processes', async (t) => { +// Flaky - see https://github.com/OpenFn/kit/issues/1192 +test.skip('destroy should close all child processes', async (t) => { // warm up a pool const pool = createPool(workerPath, { capacity: 10 }, logger); diff --git a/packages/project/src/parse/from-app-state.ts b/packages/project/src/parse/from-app-state.ts index ff8b01c5d..b25c6afee 100644 --- a/packages/project/src/parse/from-app-state.ts +++ b/packages/project/src/parse/from-app-state.ts @@ -124,7 +124,13 @@ export const mapWorkflow = (workflow: Provisioner.Workflow) => { (e) => e.source_job_id === step.id || e.source_trigger_id === step.id ); - const { body: expression, name, adaptor, ...remoteProps } = step; + const { + body: expression, + name, + adaptor, + project_credential_id, + ...remoteProps + } = step; const s: any /*l.Job*/ = { id: slugify(name), @@ -133,6 +139,9 @@ export const mapWorkflow = (workflow: Provisioner.Workflow) => { adaptor, // TODO is this wrong? openfn: renameKeys(remoteProps, { id: 'uuid' }), }; + if (project_credential_id) { + s.configuration = project_credential_id; + } if (outboundEdges.length) { s.next = outboundEdges.reduce((next, edge) => { diff --git a/packages/project/src/serialize/to-app-state.ts b/packages/project/src/serialize/to-app-state.ts index d4f5cfdea..6886ff424 100644 --- a/packages/project/src/serialize/to-app-state.ts +++ b/packages/project/src/serialize/to-app-state.ts @@ -10,6 +10,8 @@ import Workflow from '../Workflow'; type Options = { format?: 'json' | 'yaml' }; const defaultJobProps = { + // TODO why does the provisioner throw if these keys are not set? + // Ok, 90% of jobs will have a credenial, but it's still optional right? keychain_credential_id: null, project_credential_id: null, }; @@ -102,6 +104,17 @@ const mapWorkflow = (workflow: Workflow) => { if (s.expression) { node.body = s.expression; } + if ( + typeof s.configuration === 'string' && + !s.configuration.endsWith('.json') + ) { + // TODO do I need to ensure that this gets added to project_credntials? + // not really - if the credential hasn't been added yet, users have to go into + // the app and do it + // Maybe there's a feature-request to auto-add credentials if the user + // has access + otherOpenFnProps.project_credential_id = s.configuration; + } Object.assign(node, defaultJobProps, otherOpenFnProps); diff --git a/packages/project/test/fixtures/sample-v1-project.ts b/packages/project/test/fixtures/sample-v1-project.ts index 726c39bfc..26ca2e099 100644 --- a/packages/project/test/fixtures/sample-v1-project.ts +++ b/packages/project/test/fixtures/sample-v1-project.ts @@ -28,7 +28,7 @@ const state: Provisioner.Project = { { id: '66add020-e6eb-4eec-836b-20008afca816', name: 'Transform data', - body: '// Check out the Job Writing Guide for help getting started:\n// https://docs.openfn.org/documentation/jobs/job-writing-guide\n', + body: 'fn(s => s)', adaptor: '@openfn/language-common@latest', project_credential_id: null, keychain_credential_id: null, diff --git a/packages/project/test/parse/from-app-state.test.ts b/packages/project/test/parse/from-app-state.test.ts index 182b86624..fe696dec8 100644 --- a/packages/project/test/parse/from-app-state.test.ts +++ b/packages/project/test/parse/from-app-state.test.ts @@ -3,6 +3,7 @@ import fromAppState, { mapWorkflow } from '../../src/parse/from-app-state'; import { clone, cloneDeep } from 'lodash-es'; import state, { withCreds } from '../fixtures/sample-v1-project'; +import { Job } from '@openfn/lexicon'; // I don't think this file really represents anything // loosely maps to the old config file @@ -100,12 +101,10 @@ test('should create a Project from prov state with a workflow', (t) => { { id: 'transform-data', name: 'Transform data', - expression: - '// Check out the Job Writing Guide for help getting started:\n// https://docs.openfn.org/documentation/jobs/job-writing-guide\n', + expression: 'fn(s => s)', adaptor: '@openfn/language-common@latest', openfn: { uuid: '66add020-e6eb-4eec-836b-20008afca816', - project_credential_id: null, keychain_credential_id: null, }, }, @@ -167,32 +166,54 @@ test('mapWorkflow: map a simple job', (t) => { id: 'transform-data', name: 'Transform data', adaptor: '@openfn/language-common@latest', - expression: - '// Check out the Job Writing Guide for help getting started:\n// https://docs.openfn.org/documentation/jobs/job-writing-guide\n', + expression: 'fn(s => s)', openfn: { uuid: '66add020-e6eb-4eec-836b-20008afca816', - project_credential_id: null, keychain_credential_id: null, }, }); }); -// todo surprised this works -test('mapWorkflow: map a job with project and keychain credentials', (t) => { +test('mapWorkflow: map a job with keychain credentials onto .openfn', (t) => { const wf = withCreds.workflows[0]; - wf.jobs.map(console.log); const mapped = mapWorkflow(wf); const [_trigger, job] = mapped.steps; + + // this is the important bit + t.is((job as any).openfn.keychain_credential_id, 'k'); + + // But may as well do this too + t.deepEqual(job, { + id: 'transform-data', + name: 'Transform data', + adaptor: '@openfn/language-common@latest', + configuration: 'p', + expression: 'fn(s => s)', + openfn: { + uuid: '66add020-e6eb-4eec-836b-20008afca816', + keychain_credential_id: 'k', + }, + }); +}); + +test('mapWorkflow: map a job with projcet credentials onto job.configuration', (t) => { + const wf = withCreds.workflows[0]; + const mapped = mapWorkflow(wf); + + const [_trigger, job] = mapped.steps; + + // This is the important bit + t.is((job as Job).configuration, 'p'); + t.deepEqual(job, { id: 'transform-data', name: 'Transform data', adaptor: '@openfn/language-common@latest', - expression: - '// Check out the Job Writing Guide for help getting started:\n// https://docs.openfn.org/documentation/jobs/job-writing-guide\n', + expression: 'fn(s => s)', + configuration: 'p', openfn: { uuid: '66add020-e6eb-4eec-836b-20008afca816', - project_credential_id: 'p', keychain_credential_id: 'k', }, }); diff --git a/packages/project/test/parse/from-fs.test.ts b/packages/project/test/parse/from-fs.test.ts index 5dff39c5e..c35040b89 100644 --- a/packages/project/test/parse/from-fs.test.ts +++ b/packages/project/test/parse/from-fs.test.ts @@ -60,7 +60,7 @@ mock({ { id: '', name: 'a', - project_credential_id: 'p', + keychain_credential_id: 'k', }, { id: '', @@ -195,7 +195,7 @@ test('should track openfn props from state file on a step', async (t) => { const [wf] = project.workflows; t.truthy(wf.steps[0].openfn); - t.is(wf.steps[0].openfn.project_credential_id, 'p'); + t.is(wf.steps[0].openfn.keychain_credential_id, 'k'); }); test('should track the UUID of an edge', async (t) => { diff --git a/packages/project/test/project.test.ts b/packages/project/test/project.test.ts index aff15063b..baa170c72 100644 --- a/packages/project/test/project.test.ts +++ b/packages/project/test/project.test.ts @@ -34,7 +34,7 @@ const state: Provisioner.Project = { { id: '66add020-e6eb-4eec-836b-20008afca816', name: 'Transform data', - body: '// Check out the Job Writing Guide for help getting started:\n// https://docs.openfn.org/documentation/jobs/job-writing-guide\n', + body: 'fn(s => s)', adaptor: '@openfn/language-common@latest', project_credential_id: null, keychain_credential_id: null, diff --git a/packages/project/test/serialize/to-app-state.test.ts b/packages/project/test/serialize/to-app-state.test.ts index 6451f1644..e0c3e6613 100644 --- a/packages/project/test/serialize/to-app-state.test.ts +++ b/packages/project/test/serialize/to-app-state.test.ts @@ -31,11 +31,9 @@ const state: Provisioner.Project = { { id: '66add020-e6eb-4eec-836b-20008afca816', name: 'Transform data', - body: '// Check out the Job Writing Guide for help getting started:\n// https://docs.openfn.org/documentation/jobs/job-writing-guide\n', + body: 'fn(s => s)', adaptor: '@openfn/language-common@latest', - - // TODO make sure these get serialized back - project_credential_id: null, + project_credential_id: '', keychain_credential_id: null, }, ], @@ -51,7 +49,7 @@ const state: Provisioner.Project = { }, ], updated_at: '2025-04-23T11:15:59Z', - project_credentials: [], + project_credentials: [''], scheduled_deletion: null, allow_support_access: false, requires_mfa: false, @@ -242,9 +240,9 @@ test('should handle credentials', (t) => { { id: 'step', expression: '.', + configuration: 'p', openfn: { keychain_credential_id: 'k', - project_credential_id: 'p', }, }, ], @@ -341,7 +339,8 @@ test('should convert a project back to app state in json', (t) => { const data = { name: 'aaa', description: 'a project', - credentials: [], + // TODO I think we might need more automation of this? + credentials: [''], collections: [], openfn: { env: 'project', @@ -388,12 +387,11 @@ test('should convert a project back to app state in json', (t) => { { id: 'transform-data', name: 'Transform data', - expression: - '// Check out the Job Writing Guide for help getting started:\n// https://docs.openfn.org/documentation/jobs/job-writing-guide\n', + expression: 'fn(s => s)', adaptor: '@openfn/language-common@latest', + configuration: '', openfn: { uuid: '66add020-e6eb-4eec-836b-20008afca816', - project_credential_id: null, }, }, ], @@ -472,8 +470,7 @@ test.skip('should convert a project back to app state in yaml', (t) => { { id: 'transform-data', name: 'Transform data', - expression: - '// Check out the Job Writing Guide for help getting started:\n// https://docs.openfn.org/documentation/jobs/job-writing-guide\n', + expression: 'fn(s => s)', adaptor: '@openfn/language-common@latest', openfn: { uuid: '66add020-e6eb-4eec-836b-20008afca816', diff --git a/packages/project/test/util/version-workflow.test.ts b/packages/project/test/util/version-workflow.test.ts index 96e16fae1..fc9b23dae 100644 --- a/packages/project/test/util/version-workflow.test.ts +++ b/packages/project/test/util/version-workflow.test.ts @@ -11,13 +11,11 @@ test('generate an 12 character version hash for a basic workflow', (t) => { ` @name a @id some-id - webhook-transform_data(name="Transform data",expression="// Check out the Job Writing Guide for help getting started:\n// https://docs.openfn.org/documentation/jobs/job-writing-guide\n") + webhook-transform_data(name="Transform data",expression="fn(s => s)") ` ); - const hash = workflow.getVersionHash(); - t.log(hash); - t.is(hash, 'cli:7e5ca7843721'); + t.is(hash, 'cli:518f491717a7'); }); test('unique hash but different steps order', (t) => { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ddac7b8ab..25ba1df04 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -476,17 +476,7 @@ importers: specifier: ^5.9.2 version: 5.9.2 - packages/engine-multi/tmp/a/b/c: - dependencies: - ava: - specifier: ^6.4.1 - version: 6.4.1(encoding@0.1.13)(rollup@4.52.2) - - packages/engine-multi/tmp/repo: - dependencies: - ava: - specifier: ^6.4.1 - version: 6.4.1(encoding@0.1.13)(rollup@4.52.2) + packages/engine-multi/tmp/repo: {} packages/lexicon: dependencies: @@ -1459,10 +1449,6 @@ packages: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} - '@isaacs/fs-minipass@4.0.1': - resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} - engines: {node: '>=18.0.0'} - '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -1502,11 +1488,6 @@ packages: '@manypkg/get-packages@1.1.3': resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} - '@mapbox/node-pre-gyp@2.0.0': - resolution: {integrity: sha512-llMXd39jtP0HpQLVI37Bf1m2ADlEb35GYSh1SDSLsBhR+5iCxiNGlT31yqbNtVHygHAtMy6dWFERpU2JgufhPg==} - engines: {node: '>=18'} - hasBin: true - '@napi-rs/wasm-runtime@1.0.5': resolution: {integrity: sha512-TBr9Cf9onSAS2LQ2+QHx6XcC6h9+RIzJgbqG3++9TUZSH204AwEy5jg3BTQ0VATsyoGj4ee49tN/y6rvaOOtcg==} @@ -1850,136 +1831,6 @@ packages: peerDependencies: '@opentelemetry/api': ^1.8 - '@rollup/pluginutils@5.3.0': - resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/rollup-android-arm-eabi@4.52.2': - resolution: {integrity: sha512-o3pcKzJgSGt4d74lSZ+OCnHwkKBeAbFDmbEm5gg70eA8VkyCuC/zV9TwBnmw6VjDlRdF4Pshfb+WE9E6XY1PoQ==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.52.2': - resolution: {integrity: sha512-cqFSWO5tX2vhC9hJTK8WAiPIm4Q8q/cU8j2HQA0L3E1uXvBYbOZMhE2oFL8n2pKB5sOCHY6bBuHaRwG7TkfJyw==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.52.2': - resolution: {integrity: sha512-vngduywkkv8Fkh3wIZf5nFPXzWsNsVu1kvtLETWxTFf/5opZmflgVSeLgdHR56RQh71xhPhWoOkEBvbehwTlVA==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.52.2': - resolution: {integrity: sha512-h11KikYrUCYTrDj6h939hhMNlqU2fo/X4NB0OZcys3fya49o1hmFaczAiJWVAFgrM1NCP6RrO7lQKeVYSKBPSQ==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-freebsd-arm64@4.52.2': - resolution: {integrity: sha512-/eg4CI61ZUkLXxMHyVlmlGrSQZ34xqWlZNW43IAU4RmdzWEx0mQJ2mN/Cx4IHLVZFL6UBGAh+/GXhgvGb+nVxw==} - cpu: [arm64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.52.2': - resolution: {integrity: sha512-QOWgFH5X9+p+S1NAfOqc0z8qEpJIoUHf7OWjNUGOeW18Mx22lAUOiA9b6r2/vpzLdfxi/f+VWsYjUOMCcYh0Ng==} - cpu: [x64] - os: [freebsd] - - '@rollup/rollup-linux-arm-gnueabihf@4.52.2': - resolution: {integrity: sha512-kDWSPafToDd8LcBYd1t5jw7bD5Ojcu12S3uT372e5HKPzQt532vW+rGFFOaiR0opxePyUkHrwz8iWYEyH1IIQA==} - cpu: [arm] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-arm-musleabihf@4.52.2': - resolution: {integrity: sha512-gKm7Mk9wCv6/rkzwCiUC4KnevYhlf8ztBrDRT9g/u//1fZLapSRc+eDZj2Eu2wpJ+0RzUKgtNijnVIB4ZxyL+w==} - cpu: [arm] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-arm64-gnu@4.52.2': - resolution: {integrity: sha512-66lA8vnj5mB/rtDNwPgrrKUOtCLVQypkyDa2gMfOefXK6rcZAxKLO9Fy3GkW8VkPnENv9hBkNOFfGLf6rNKGUg==} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-arm64-musl@4.52.2': - resolution: {integrity: sha512-s+OPucLNdJHvuZHuIz2WwncJ+SfWHFEmlC5nKMUgAelUeBUnlB4wt7rXWiyG4Zn07uY2Dd+SGyVa9oyLkVGOjA==} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-loong64-gnu@4.52.2': - resolution: {integrity: sha512-8wTRM3+gVMDLLDdaT6tKmOE3lJyRy9NpJUS/ZRWmLCmOPIJhVyXwjBo+XbrrwtV33Em1/eCTd5TuGJm4+DmYjw==} - cpu: [loong64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-ppc64-gnu@4.52.2': - resolution: {integrity: sha512-6yqEfgJ1anIeuP2P/zhtfBlDpXUb80t8DpbYwXQ3bQd95JMvUaqiX+fKqYqUwZXqdJDd8xdilNtsHM2N0cFm6A==} - cpu: [ppc64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-riscv64-gnu@4.52.2': - resolution: {integrity: sha512-sshYUiYVSEI2B6dp4jMncwxbrUqRdNApF2c3bhtLAU0qA8Lrri0p0NauOsTWh3yCCCDyBOjESHMExonp7Nzc0w==} - cpu: [riscv64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-riscv64-musl@4.52.2': - resolution: {integrity: sha512-duBLgd+3pqC4MMwBrKkFxaZerUxZcYApQVC5SdbF5/e/589GwVvlRUnyqMFbM8iUSb1BaoX/3fRL7hB9m2Pj8Q==} - cpu: [riscv64] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-s390x-gnu@4.52.2': - resolution: {integrity: sha512-tzhYJJidDUVGMgVyE+PmxENPHlvvqm1KILjjZhB8/xHYqAGeizh3GBGf9u6WdJpZrz1aCpIIHG0LgJgH9rVjHQ==} - cpu: [s390x] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-x64-gnu@4.52.2': - resolution: {integrity: sha512-opH8GSUuVcCSSyHHcl5hELrmnk4waZoVpgn/4FDao9iyE4WpQhyWJ5ryl5M3ocp4qkRuHfyXnGqg8M9oKCEKRA==} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-x64-musl@4.52.2': - resolution: {integrity: sha512-LSeBHnGli1pPKVJ79ZVJgeZWWZXkEe/5o8kcn23M8eMKCUANejchJbF/JqzM4RRjOJfNRhKJk8FuqL1GKjF5oQ==} - cpu: [x64] - os: [linux] - libc: [musl] - - '@rollup/rollup-openharmony-arm64@4.52.2': - resolution: {integrity: sha512-uPj7MQ6/s+/GOpolavm6BPo+6CbhbKYyZHUDvZ/SmJM7pfDBgdGisFX3bY/CBDMg2ZO4utfhlApkSfZ92yXw7Q==} - cpu: [arm64] - os: [openharmony] - - '@rollup/rollup-win32-arm64-msvc@4.52.2': - resolution: {integrity: sha512-Z9MUCrSgIaUeeHAiNkm3cQyst2UhzjPraR3gYYfOjAuZI7tcFRTOD+4cHLPoS/3qinchth+V56vtqz1Tv+6KPA==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.52.2': - resolution: {integrity: sha512-+GnYBmpjldD3XQd+HMejo+0gJGwYIOfFeoBQv32xF/RUIvccUz20/V6Otdv+57NE70D5pa8W/jVGDoGq0oON4A==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-gnu@4.52.2': - resolution: {integrity: sha512-ApXFKluSB6kDQkAqZOKXBjiaqdF1BlKi+/eqnYe9Ee7U2K3pUDKsIyr8EYm/QDHTJIM+4X+lI0gJc3TTRhd+dA==} - cpu: [x64] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.52.2': - resolution: {integrity: sha512-ARz+Bs8kY6FtitYM96PqPEVvPXqEZmPZsSkXvyX19YzDqkCaIlhCieLLMI5hxO9SRZ2XtCtm8wxhy0iJ2jxNfw==} - cpu: [x64] - os: [win32] - '@sentry/core@9.46.0': resolution: {integrity: sha512-it7JMFqxVproAgEtbLgCVBYtQ9fIb+Bu0JD+cEplTN/Ukpe6GaolyYib5geZqslVxhp2sQgT+58aGvfd/k0N8Q==} engines: {node: '>=18'} @@ -2010,10 +1861,6 @@ packages: '@opentelemetry/sdk-trace-base': ^1.30.1 || ^2.0.0 '@opentelemetry/semantic-conventions': ^1.34.0 - '@sindresorhus/merge-streams@2.3.0': - resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} - engines: {node: '>=18'} - '@slack/logger@3.0.0': resolution: {integrity: sha512-DTuBFbqu4gGfajREEMrkq5jBhcnskinhr4+AnfJEk48zhVeEv3XnUKGIX98B74kxhYsIMfApGGySTn7V3b5yBA==} engines: {node: '>= 12.13.0', npm: '>= 6.12.0'} @@ -2156,9 +2003,6 @@ packages: '@types/cookies@0.9.1': resolution: {integrity: sha512-E/DPgzifH4sM1UMadJMWd6mO2jOd4g1Ejwzx8/uRCDpJis1IrlyQEcGAYEomtAqRYmD5ORbNXMeI9U0RiVGZbg==} - '@types/estree@1.0.8': - resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} - '@types/express-serve-static-core@5.0.7': resolution: {integrity: sha512-R+33OsgWw7rOhD1emjU7dzCDHucJrgJXMA5PYCzJxVil0dsyx5iBEPHqpPfiKNJQb7lZ1vxwoLR4Z87bBUpeGQ==} @@ -2323,15 +2167,6 @@ packages: peerDependencies: typescript: '*' - '@vercel/nft@0.29.4': - resolution: {integrity: sha512-6lLqMNX3TuycBPABycx7A9F1bHQR7kiQln6abjFbPrf5C/05qHM9M5E4PeTE59c7z8g6vHnx1Ioihb2AQl7BTA==} - engines: {node: '>=18'} - hasBin: true - - abbrev@3.0.1: - resolution: {integrity: sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==} - engines: {node: ^18.17.0 || >=20.5.0} - accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} @@ -2439,9 +2274,6 @@ packages: resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} engines: {node: '>=4'} - async-sema@3.1.1: - resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} - asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -2465,16 +2297,6 @@ packages: '@ava/typescript': optional: true - ava@6.4.1: - resolution: {integrity: sha512-vxmPbi1gZx9zhAjHBgw81w/iEDKcrokeRk/fqDTyA2DQygZ0o+dUGRHFOtX8RA5N0heGJTTsIk7+xYxitDb61Q==} - engines: {node: ^18.18 || ^20.8 || ^22 || ^23 || >=24} - hasBin: true - peerDependencies: - '@ava/typescript': '*' - peerDependenciesMeta: - '@ava/typescript': - optional: true - awilix@10.0.2: resolution: {integrity: sha512-hFatb7eZFdtiWjjmGRSm/K/uxZpmcBlM+YoeMB3VpOPXk3xa6+7zctg3LRbUzoimom5bwGrePF0jXReO6b4zNQ==} engines: {node: '>=14.0.0'} @@ -2507,9 +2329,6 @@ packages: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} - bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} @@ -2590,10 +2409,6 @@ packages: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} - cbor@10.0.11: - resolution: {integrity: sha512-vIwORDd/WyB8Nc23o2zNN5RrtFGlR6Fca61TtjkUXueI3Jf2DOZDl1zsshvBntZ3wZHBM9ztjnkXSmzQDaq3WA==} - engines: {node: '>=20'} - cbor@8.1.0: resolution: {integrity: sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==} engines: {node: '>=12.19'} @@ -2634,10 +2449,6 @@ packages: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} - chownr@3.0.0: - resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} - engines: {node: '>=18'} - chunkd@2.0.1: resolution: {integrity: sha512-7d58XsFmOq0j6el67Ug9mHf9ELUXsQXYJBkyxhH/k+6Ke0qXRnv0kbemx+Twc6fRJ07C49lcbdgm9FL1Ei/6SQ==} @@ -2645,10 +2456,6 @@ packages: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} - ci-info@4.3.0: - resolution: {integrity: sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==} - engines: {node: '>=8'} - ci-parallel-vars@1.0.1: resolution: {integrity: sha512-uvzpYrpmidaoxvIQHM+rKSrigjOe9feHYbw4uOI2gdfe1C3xIlxO+kVXq83WQWNniTf8bAxVpy+cQeFQsMERKg==} @@ -2679,10 +2486,6 @@ packages: resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - cli-truncate@4.0.0: - resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} - engines: {node: '>=18'} - cli-width@4.1.0: resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} engines: {node: '>= 12'} @@ -2745,10 +2548,6 @@ packages: resolution: {integrity: sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==} engines: {node: '>=10.18.0 <11 || >=12.14.0 <13 || >=14'} - consola@3.4.2: - resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} - engines: {node: ^14.18.0 || >=16.10.0} - content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} @@ -2897,10 +2696,6 @@ packages: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} - detect-libc@2.1.0: - resolution: {integrity: sha512-vEtk+OcP7VBRtQZ1EJ3bdgzSfBjgnEalLTp5zjJrS+2Z1w2KZly4SBdac/WDU3hhsNAZ9E8SC96ME4Ey8MZ7cg==} - engines: {node: '>=8'} - didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} @@ -2961,9 +2756,6 @@ packages: resolution: {integrity: sha512-KxdRyyFcS85pH3dnU8Y5yFUm2YJdaHwcBZWrfG8o89ZY9a13/f9itbN+YG3ELbBo9Pg5zvIozstmuV8bX13q6g==} engines: {node: '>=14.16'} - emoji-regex@10.5.0: - resolution: {integrity: sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==} - emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -3210,9 +3002,6 @@ packages: resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} engines: {node: '>=4.0'} - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -3281,13 +3070,6 @@ packages: resolution: {integrity: sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==} engines: {node: '>=14'} - figures@6.1.0: - resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} - engines: {node: '>=18'} - - file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -3300,10 +3082,6 @@ packages: resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} engines: {node: '>= 0.8'} - find-up-simple@1.0.1: - resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} - engines: {node: '>=18'} - find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} @@ -3375,10 +3153,6 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - get-east-asian-width@1.4.0: - resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==} - engines: {node: '>=18'} - get-intrinsic@1.3.0: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} @@ -3423,10 +3197,6 @@ packages: resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - globby@14.1.0: - resolution: {integrity: sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==} - engines: {node: '>=18'} - gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -3531,10 +3301,6 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - ignore@7.0.5: - resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} - engines: {node: '>= 4'} - import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} @@ -3675,10 +3441,6 @@ packages: resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} engines: {node: '>=12'} - is-unicode-supported@2.1.0: - resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} - engines: {node: '>=18'} - is-utf8@0.2.1: resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} @@ -3887,10 +3649,6 @@ packages: resolution: {integrity: sha512-F2t4YIv9XQUBHt6AOJ0y7lSmP1+cY7Fm1DRh9GClTGzKST7UWLMx6ly9WZdLH/G/ppM5RL4MlQfRT71ri9t19A==} engines: {node: '>=12.20'} - memoize@10.1.0: - resolution: {integrity: sha512-MMbFhJzh4Jlg/poq1si90XRlTZRDHVqdlz2mPyGJ6kqMpyHUyVpDd5gpFAvVehW64+RA1eKE9Yt8aSLY7w2Kgg==} - engines: {node: '>=18'} - merge-descriptors@1.0.3: resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} @@ -3930,10 +3688,6 @@ packages: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} - mimic-function@5.0.1: - resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} - engines: {node: '>=18'} - mini-svg-data-uri@1.4.4: resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} hasBin: true @@ -3985,10 +3739,6 @@ packages: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} - minizlib@3.1.0: - resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} - engines: {node: '>= 18'} - mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} @@ -4052,10 +3802,6 @@ packages: encoding: optional: true - node-gyp-build@4.8.4: - resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} - hasBin: true - nodemon@3.0.1: resolution: {integrity: sha512-g9AZ7HmkhQkqXkRc20w+ZfQ73cHLbE8hnPbtaFbFtCumZsjyMhKk9LajQ07U5Ux28lvFjZ5X7HvWR1xzU8jHVw==} engines: {node: '>=10'} @@ -4065,11 +3811,6 @@ packages: resolution: {integrity: sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==} engines: {node: '>=12.19'} - nopt@8.1.0: - resolution: {integrity: sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==} - engines: {node: ^18.17.0 || >=20.5.0} - hasBin: true - normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -4184,10 +3925,6 @@ packages: resolution: {integrity: sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==} engines: {node: '>=12'} - p-map@7.0.3: - resolution: {integrity: sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==} - engines: {node: '>=18'} - p-queue@6.6.2: resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} engines: {node: '>=8'} @@ -4208,10 +3945,6 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - package-config@5.0.0: - resolution: {integrity: sha512-GYTTew2slBcYdvRHqjhwaaydVMvn/qrGC323+nKclYioNSLTDUM/lGgtGTgyHVtYcozb+XkE8CNhwcraOmZ9Mg==} - engines: {node: '>=18'} - package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} @@ -4233,10 +3966,6 @@ packages: resolution: {integrity: sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw==} engines: {node: '>=12'} - parse-ms@4.0.0: - resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} - engines: {node: '>=18'} - parse5-htmlparser2-tree-adapter@7.1.0: resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==} @@ -4293,10 +4022,6 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - path-type@6.0.0: - resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==} - engines: {node: '>=18'} - peek-stream@1.1.3: resolution: {integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==} @@ -4324,10 +4049,6 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - picomatch@4.0.3: - resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} - engines: {node: '>=12'} - pify@2.3.0: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} @@ -4430,10 +4151,6 @@ packages: resolution: {integrity: sha512-ASJqOugUF1bbzI35STMBUpZqdfYKlJugy6JBziGi2EE+AL5JPJGSzvpeVXojxrr0ViUYoToUjb5kjSEGf7Y83Q==} engines: {node: '>=14.16'} - pretty-ms@9.3.0: - resolution: {integrity: sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==} - engines: {node: '>=18'} - proc-log@4.2.0: resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -4585,11 +4302,6 @@ packages: engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true - rollup@4.52.2: - resolution: {integrity: sha512-I25/2QgoROE1vYV+NQ1En9T9UFB9Cmfm2CJ83zZOlaDpvz29wGQSZXWKw7MiNXau7wYgB/T9fVIdIuEQ+KbiiA==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - run-async@3.0.0: resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==} engines: {node: '>=0.12.0'} @@ -4682,10 +4394,6 @@ packages: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} engines: {node: '>=12'} - slash@5.1.0: - resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} - engines: {node: '>=14.16'} - slice-ansi@5.0.0: resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} @@ -4771,10 +4479,6 @@ packages: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} - string-width@7.2.0: - resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} - engines: {node: '>=18'} - string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} @@ -4834,10 +4538,6 @@ packages: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} - tar@7.4.4: - resolution: {integrity: sha512-O1z7ajPkjTgEgmTGz0v9X4eqeEXTDREPTO77pVC1Nbs86feBU1Zhdg+edzavPmYW1olxkwsqA2v4uOw6E8LeDg==} - engines: {node: '>=18'} - temp-dir@3.0.0: resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} engines: {node: '>=14.16'} @@ -5019,10 +4719,6 @@ packages: resolution: {integrity: sha512-GrKEsc3ughskmGA9jevVlIOPMiiAHJ4OFUtaAH+NhfTUSiZ1wMPIQqQvAJUrJspFXJt3EBWgpAeoHEDVT1IBug==} engines: {node: '>=20.18.1'} - unicorn-magic@0.3.0: - resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} - engines: {node: '>=18'} - unique-filename@3.0.0: resolution: {integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -5111,10 +4807,6 @@ packages: resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - write-file-atomic@6.0.0: - resolution: {integrity: sha512-GmqrO8WJ1NuzJ2DrziEI2o57jKAVIQNf8a18W3nCYU3H7PNWqCCVTeH6/NQE93CIllIgQS98rrmVkYgTX9fFJQ==} - engines: {node: ^18.17.0 || >=20.5.0} - ws@8.18.3: resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} engines: {node: '>=10.0.0'} @@ -5138,10 +4830,6 @@ packages: yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - yallist@5.0.0: - resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} - engines: {node: '>=18'} - yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} @@ -5730,10 +5418,6 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 - '@isaacs/fs-minipass@4.0.1': - dependencies: - minipass: 7.1.2 - '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -5787,19 +5471,6 @@ snapshots: globby: 11.1.0 read-yaml-file: 1.1.0 - '@mapbox/node-pre-gyp@2.0.0(encoding@0.1.13)': - dependencies: - consola: 3.4.2 - detect-libc: 2.1.0 - https-proxy-agent: 7.0.6 - node-fetch: 2.7.0(encoding@0.1.13) - nopt: 8.1.0 - semver: 7.7.2 - tar: 7.4.4 - transitivePeerDependencies: - - encoding - - supports-color - '@napi-rs/wasm-runtime@1.0.5': dependencies: '@emnapi/core': 1.5.0 @@ -6182,80 +5853,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@rollup/pluginutils@5.3.0(rollup@4.52.2)': - dependencies: - '@types/estree': 1.0.8 - estree-walker: 2.0.2 - picomatch: 4.0.3 - optionalDependencies: - rollup: 4.52.2 - - '@rollup/rollup-android-arm-eabi@4.52.2': - optional: true - - '@rollup/rollup-android-arm64@4.52.2': - optional: true - - '@rollup/rollup-darwin-arm64@4.52.2': - optional: true - - '@rollup/rollup-darwin-x64@4.52.2': - optional: true - - '@rollup/rollup-freebsd-arm64@4.52.2': - optional: true - - '@rollup/rollup-freebsd-x64@4.52.2': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.52.2': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.52.2': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.52.2': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.52.2': - optional: true - - '@rollup/rollup-linux-loong64-gnu@4.52.2': - optional: true - - '@rollup/rollup-linux-ppc64-gnu@4.52.2': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.52.2': - optional: true - - '@rollup/rollup-linux-riscv64-musl@4.52.2': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.52.2': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.52.2': - optional: true - - '@rollup/rollup-linux-x64-musl@4.52.2': - optional: true - - '@rollup/rollup-openharmony-arm64@4.52.2': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.52.2': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.52.2': - optional: true - - '@rollup/rollup-win32-x64-gnu@4.52.2': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.52.2': - optional: true - '@sentry/core@9.46.0': {} '@sentry/node-core@9.46.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.57.2(@opentelemetry/api@1.9.0))(@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.37.0)': @@ -6320,8 +5917,6 @@ snapshots: '@opentelemetry/semantic-conventions': 1.37.0 '@sentry/core': 9.46.0 - '@sindresorhus/merge-streams@2.3.0': {} - '@slack/logger@3.0.0': dependencies: '@types/node': 24.5.2 @@ -6461,8 +6056,6 @@ snapshots: '@types/keygrip': 1.0.6 '@types/node': 18.19.127 - '@types/estree@1.0.8': {} - '@types/express-serve-static-core@5.0.7': dependencies: '@types/node': 18.19.127 @@ -6662,27 +6255,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@vercel/nft@0.29.4(encoding@0.1.13)(rollup@4.52.2)': - dependencies: - '@mapbox/node-pre-gyp': 2.0.0(encoding@0.1.13) - '@rollup/pluginutils': 5.3.0(rollup@4.52.2) - acorn: 8.15.0 - acorn-import-attributes: 1.9.5(acorn@8.15.0) - async-sema: 3.1.1 - bindings: 1.5.0 - estree-walker: 2.0.2 - glob: 10.4.5 - graceful-fs: 4.2.11 - node-gyp-build: 4.8.4 - picomatch: 4.0.3 - resolve-from: 5.0.0 - transitivePeerDependencies: - - encoding - - rollup - - supports-color - - abbrev@3.0.1: {} - accepts@1.3.8: dependencies: mime-types: 2.1.35 @@ -6772,8 +6344,6 @@ snapshots: dependencies: tslib: 2.8.1 - async-sema@3.1.1: {} - asynckit@0.4.0: {} ava@5.1.0: @@ -6874,53 +6444,6 @@ snapshots: transitivePeerDependencies: - supports-color - ava@6.4.1(encoding@0.1.13)(rollup@4.52.2): - dependencies: - '@vercel/nft': 0.29.4(encoding@0.1.13)(rollup@4.52.2) - acorn: 8.15.0 - acorn-walk: 8.3.4 - ansi-styles: 6.2.3 - arrgv: 1.0.2 - arrify: 3.0.0 - callsites: 4.2.0 - cbor: 10.0.11 - chalk: 5.6.2 - chunkd: 2.0.1 - ci-info: 4.3.0 - ci-parallel-vars: 1.0.1 - cli-truncate: 4.0.0 - code-excerpt: 4.0.0 - common-path-prefix: 3.0.0 - concordance: 5.0.4 - currently-unhandled: 0.4.1 - debug: 4.4.3 - emittery: 1.2.0 - figures: 6.1.0 - globby: 14.1.0 - ignore-by-default: 2.1.0 - indent-string: 5.0.0 - is-plain-object: 5.0.0 - is-promise: 4.0.0 - matcher: 5.0.0 - memoize: 10.1.0 - ms: 2.1.3 - p-map: 7.0.3 - package-config: 5.0.0 - picomatch: 4.0.3 - plur: 5.1.0 - pretty-ms: 9.3.0 - resolve-cwd: 3.0.0 - stack-utils: 2.0.6 - strip-ansi: 7.1.2 - supertap: 3.0.1 - temp-dir: 3.0.0 - write-file-atomic: 6.0.0 - yargs: 17.7.2 - transitivePeerDependencies: - - encoding - - rollup - - supports-color - awilix@10.0.2: dependencies: camel-case: 4.1.2 @@ -6948,10 +6471,6 @@ snapshots: binary-extensions@2.3.0: {} - bindings@1.5.0: - dependencies: - file-uri-to-path: 1.0.0 - bl@4.1.0: dependencies: buffer: 5.7.1 @@ -7060,10 +6579,6 @@ snapshots: camelcase-css@2.0.1: {} - cbor@10.0.11: - dependencies: - nofilter: 3.1.0 - cbor@8.1.0: dependencies: nofilter: 3.1.0 @@ -7120,14 +6635,10 @@ snapshots: chownr@2.0.0: {} - chownr@3.0.0: {} - chunkd@2.0.1: {} ci-info@3.9.0: {} - ci-info@4.3.0: {} - ci-parallel-vars@1.0.1: {} cjs-module-lexer@1.4.3: {} @@ -7151,11 +6662,6 @@ snapshots: slice-ansi: 5.0.0 string-width: 5.1.2 - cli-truncate@4.0.0: - dependencies: - slice-ansi: 5.0.0 - string-width: 7.2.0 - cli-width@4.1.0: {} cliui@8.0.1: @@ -7217,8 +6723,6 @@ snapshots: semver: 7.7.2 well-known-symbols: 2.0.0 - consola@3.4.2: {} - content-disposition@0.5.4: dependencies: safe-buffer: 5.2.1 @@ -7344,8 +6848,6 @@ snapshots: detect-indent@6.1.0: {} - detect-libc@2.1.0: {} - didyoumean@1.2.2: {} diff@4.0.2: {} @@ -7405,8 +6907,6 @@ snapshots: emittery@1.2.0: {} - emoji-regex@10.5.0: {} - emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} @@ -7656,8 +7156,6 @@ snapshots: estraverse@4.3.0: {} - estree-walker@2.0.2: {} - esutils@2.0.3: {} etag@1.8.1: {} @@ -7761,12 +7259,6 @@ snapshots: escape-string-regexp: 5.0.0 is-unicode-supported: 1.3.0 - figures@6.1.0: - dependencies: - is-unicode-supported: 2.1.0 - - file-uri-to-path@1.0.0: {} - fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -7785,8 +7277,6 @@ snapshots: transitivePeerDependencies: - supports-color - find-up-simple@1.0.1: {} - find-up@4.1.0: dependencies: locate-path: 5.0.0 @@ -7856,8 +7346,6 @@ snapshots: get-caller-file@2.0.5: {} - get-east-asian-width@1.4.0: {} - get-intrinsic@1.3.0: dependencies: call-bind-apply-helpers: 1.0.2 @@ -7934,15 +7422,6 @@ snapshots: merge2: 1.4.1 slash: 4.0.0 - globby@14.1.0: - dependencies: - '@sindresorhus/merge-streams': 2.3.0 - fast-glob: 3.3.3 - ignore: 7.0.5 - path-type: 6.0.0 - slash: 5.1.0 - unicorn-magic: 0.3.0 - gopd@1.2.0: {} graceful-fs@4.2.11: {} @@ -8049,8 +7528,6 @@ snapshots: ignore@5.3.2: {} - ignore@7.0.5: {} - import-fresh@3.3.1: dependencies: parent-module: 1.0.1 @@ -8154,8 +7631,6 @@ snapshots: is-unicode-supported@1.3.0: {} - is-unicode-supported@2.1.0: {} - is-utf8@0.2.1: {} is-windows@1.0.2: {} @@ -8388,10 +7863,6 @@ snapshots: map-age-cleaner: 0.1.3 mimic-fn: 4.0.0 - memoize@10.1.0: - dependencies: - mimic-function: 5.0.1 - merge-descriptors@1.0.3: {} merge-stream@2.0.0: {} @@ -8417,8 +7888,6 @@ snapshots: mimic-fn@4.0.0: {} - mimic-function@5.0.1: {} - mini-svg-data-uri@1.4.4: {} minimatch@10.0.3: @@ -8470,10 +7939,6 @@ snapshots: minipass: 3.3.6 yallist: 4.0.0 - minizlib@3.1.0: - dependencies: - minipass: 7.1.2 - mkdirp@1.0.4: {} mock-fs@5.5.0: {} @@ -8515,8 +7980,6 @@ snapshots: optionalDependencies: encoding: 0.1.13 - node-gyp-build@4.8.4: {} - nodemon@3.0.1: dependencies: chokidar: 3.6.0 @@ -8532,10 +7995,6 @@ snapshots: nofilter@3.1.0: {} - nopt@8.1.0: - dependencies: - abbrev: 3.0.1 - normalize-path@3.0.0: {} npm-package-arg@11.0.3: @@ -8677,8 +8136,6 @@ snapshots: dependencies: aggregate-error: 4.0.1 - p-map@7.0.3: {} - p-queue@6.6.2: dependencies: eventemitter3: 4.0.7 @@ -8697,11 +8154,6 @@ snapshots: p-try@2.2.0: {} - package-config@5.0.0: - dependencies: - find-up-simple: 1.0.1 - load-json-file: 7.0.1 - package-json-from-dist@1.0.1: {} package-manager-detector@0.2.11: @@ -8723,8 +8175,6 @@ snapshots: parse-ms@3.0.0: {} - parse-ms@4.0.0: {} - parse5-htmlparser2-tree-adapter@7.1.0: dependencies: domhandler: 5.0.3 @@ -8773,8 +8223,6 @@ snapshots: path-type@4.0.0: {} - path-type@6.0.0: {} - peek-stream@1.1.3: dependencies: buffer-from: 1.1.2 @@ -8801,8 +8249,6 @@ snapshots: picomatch@2.3.1: {} - picomatch@4.0.3: {} - pify@2.3.0: {} pify@4.0.1: {} @@ -8898,10 +8344,6 @@ snapshots: dependencies: parse-ms: 3.0.0 - pretty-ms@9.3.0: - dependencies: - parse-ms: 4.0.0 - proc-log@4.2.0: {} process-nextick-args@2.0.1: {} @@ -9060,35 +8502,6 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - rollup@4.52.2: - dependencies: - '@types/estree': 1.0.8 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.52.2 - '@rollup/rollup-android-arm64': 4.52.2 - '@rollup/rollup-darwin-arm64': 4.52.2 - '@rollup/rollup-darwin-x64': 4.52.2 - '@rollup/rollup-freebsd-arm64': 4.52.2 - '@rollup/rollup-freebsd-x64': 4.52.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.52.2 - '@rollup/rollup-linux-arm-musleabihf': 4.52.2 - '@rollup/rollup-linux-arm64-gnu': 4.52.2 - '@rollup/rollup-linux-arm64-musl': 4.52.2 - '@rollup/rollup-linux-loong64-gnu': 4.52.2 - '@rollup/rollup-linux-ppc64-gnu': 4.52.2 - '@rollup/rollup-linux-riscv64-gnu': 4.52.2 - '@rollup/rollup-linux-riscv64-musl': 4.52.2 - '@rollup/rollup-linux-s390x-gnu': 4.52.2 - '@rollup/rollup-linux-x64-gnu': 4.52.2 - '@rollup/rollup-linux-x64-musl': 4.52.2 - '@rollup/rollup-openharmony-arm64': 4.52.2 - '@rollup/rollup-win32-arm64-msvc': 4.52.2 - '@rollup/rollup-win32-ia32-msvc': 4.52.2 - '@rollup/rollup-win32-x64-gnu': 4.52.2 - '@rollup/rollup-win32-x64-msvc': 4.52.2 - fsevents: 2.3.3 - optional: true - run-async@3.0.0: {} run-parallel@1.2.0: @@ -9201,8 +8614,6 @@ snapshots: slash@4.0.0: {} - slash@5.1.0: {} - slice-ansi@5.0.0: dependencies: ansi-styles: 6.2.3 @@ -9291,12 +8702,6 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.1.2 - string-width@7.2.0: - dependencies: - emoji-regex: 10.5.0 - get-east-asian-width: 1.4.0 - strip-ansi: 7.1.2 - string_decoder@1.1.1: dependencies: safe-buffer: 5.1.2 @@ -9392,14 +8797,6 @@ snapshots: mkdirp: 1.0.4 yallist: 4.0.0 - tar@7.4.4: - dependencies: - '@isaacs/fs-minipass': 4.0.1 - chownr: 3.0.0 - minipass: 7.1.2 - minizlib: 3.1.0 - yallist: 5.0.0 - temp-dir@3.0.0: {} term-size@2.2.1: {} @@ -9662,8 +9059,6 @@ snapshots: undici@7.12.0: {} - unicorn-magic@0.3.0: {} - unique-filename@3.0.0: dependencies: unique-slug: 4.0.0 @@ -9742,11 +9137,6 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 4.1.0 - write-file-atomic@6.0.0: - dependencies: - imurmurhash: 0.1.4 - signal-exit: 4.1.0 - ws@8.18.3: {} xtend@4.0.2: {} @@ -9755,8 +9145,6 @@ snapshots: yallist@4.0.0: {} - yallist@5.0.0: {} - yaml@1.10.2: {} yaml@2.8.1: {}