diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 75d25392c..1c96eab99 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,7 +20,7 @@ jobs: strategy: fail-fast: false matrix: - node-version: [^20.19, ^22.20, ^24.12, ^25] + node-version: [^22.20, ^24.12, ^25] os: [ubuntu-latest, windows-latest, macos-latest] steps: - uses: actions/checkout@v6 @@ -48,7 +48,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - ts-version: [~5.9] + ts-version: [~5.9, ~6.0] steps: - uses: actions/checkout@v6 - uses: actions/setup-node@v6 diff --git a/lib/api-event-iterator.js b/lib/api-event-iterator.js index 1b2b55bf1..d5be1b4b6 100644 --- a/lib/api-event-iterator.js +++ b/lib/api-event-iterator.js @@ -1,8 +1,8 @@ export async function * asyncEventIteratorFromApi(api) { // TODO: support multiple runs (watch mode) - const {value: plan} = await api.events('run').next(); + const {value: {data: plan}} = await api.events('run').next(); - for await (const stateChange of plan.status.events('stateChange')) { + for await (const {data: stateChange} of plan.status.events('stateChange')) { yield stateChange; if (stateChange.type === 'end' || stateChange.type === 'interrupt') { diff --git a/lib/api.js b/lib/api.js index 92eb7bb4f..c4f5fa034 100644 --- a/lib/api.js +++ b/lib/api.js @@ -180,7 +180,7 @@ export default class Api extends Emittery { // The files must be in the same order across all runs, so sort them. const defaultComparator = (a, b) => a.localeCompare(b, [], {numeric: true}); - selectedFiles = selectedFiles.sort(this.options.sortTestFiles ?? defaultComparator); + selectedFiles = selectedFiles.toSorted(this.options.sortTestFiles ?? defaultComparator); selectedFiles = chunkd(selectedFiles, currentIndex, totalRuns); const currentFileCount = selectedFiles.length; @@ -189,7 +189,7 @@ export default class Api extends Emittery { } else { // If a custom sorter was configured, use it. if (this.options.sortTestFiles) { - selectedFiles = selectedFiles.sort(this.options.sortTestFiles); + selectedFiles = selectedFiles.toSorted(this.options.sortTestFiles); } runStatus = new RunStatus(selectedFiles.length, null, selectionInsights); @@ -220,7 +220,7 @@ export default class Api extends Emittery { return runStatus; } - runStatus.on('stateChange', record => { + runStatus.on('stateChange', ({data: record}) => { if (record.testFile && !timedOutWorkerFiles.has(record.testFile) && record.type !== 'worker-stderr' && record.type !== 'worker-stdout') { // Debounce the timer whenever there is test-related activity from workers that haven't already timed out. timeoutTrigger.debounce(); @@ -293,7 +293,7 @@ export default class Api extends Emittery { deregisteredSharedWorkers.push(observeWorkerProcess(worker, runStatus)); pendingWorkers.add(worker); - worker.promise.then(() => { // eslint-disable-line promise/prefer-await-to-then + worker.promise.then(() => { pendingWorkers.delete(worker); }); timeoutTrigger.debounce(); diff --git a/lib/assert.js b/lib/assert.js index cc88e2d25..9b521c410 100644 --- a/lib/assert.js +++ b/lib/assert.js @@ -29,6 +29,7 @@ function formatWithLabel(label, value) { } const noop = () => {}; + const notImplemented = () => { throw new Error('not implemented'); }; @@ -423,7 +424,7 @@ export class Assertions { retval = fn(); if (isPromise(retval)) { // Here isPromise() checks if something is "promise like". Cast to an actual promise. - Promise.resolve(retval).catch(noop); // eslint-disable-line promise/prefer-await-to-then + Promise.resolve(retval).catch(noop); throw fail(new AssertionError(message, { assertion: 't.throws()', formattedDetails: [formatWithLabel('Function returned a promise. Use `t.throwsAsync()` instead:', retval)], @@ -490,7 +491,7 @@ export class Assertions { // Record the stack before it gets lost in the promise chain. const assertionStack = getAssertionStack(); // Handle "promise like" objects by casting to a real Promise. - const intermediate = Promise.resolve(promise).then(value => { // eslint-disable-line promise/prefer-catch, promise/prefer-await-to-then + const intermediate = Promise.resolve(promise).then(value => { throw failPending(new AssertionError(message, { assertion: 't.throwsAsync()', assertionStack, @@ -592,7 +593,7 @@ export class Assertions { // Create an error object to record the stack before it gets lost in the promise chain. const assertionStack = getAssertionStack(); // Handle "promise like" objects by casting to a real Promise. - const intermediate = Promise.resolve(promise).then(noop, error => { // eslint-disable-line promise/prefer-catch, promise/prefer-await-to-then + const intermediate = Promise.resolve(promise).then(noop, error => { throw failPending(new AssertionError(message, { assertion: 't.notThrowsAsync()', assertionStack, diff --git a/lib/cli.js b/lib/cli.js index 4e13084d4..f198391b3 100644 --- a/lib/cli.js +++ b/lib/cli.js @@ -475,8 +475,8 @@ export default async function loadCli() { // eslint-disable-line complexity const {controlFlow} = await import('./ipc-flow-control.cjs'); const bufferedSend = controlFlow(process); - api.on('run', plan => { - plan.status.on('stateChange', evt => { + api.on('run', ({data: plan}) => { + plan.status.on('stateChange', ({data: evt}) => { bufferedSend(evt); }); }); @@ -488,10 +488,10 @@ export default async function loadCli() { // eslint-disable-line complexity }); } - api.on('run', plan => { + api.on('run', ({data: plan}) => { reporter.startRun(plan); - plan.status.on('stateChange', evt => { + plan.status.on('stateChange', ({data: evt}) => { if (evt.type === 'end' || evt.type === 'interrupt') { // Write out code coverage data when the run ends, lest a process // interrupt causes it to be lost. @@ -537,7 +537,7 @@ export default async function loadCli() { // eslint-disable-line complexity }); } else { let debugWithoutSpecificFile = false; - api.on('run', plan => { + api.on('run', ({data: plan}) => { if (debug !== null && plan.files.length !== 1) { debugWithoutSpecificFile = true; } diff --git a/lib/fork.js b/lib/fork.js index 82d12ffc3..140626cb7 100644 --- a/lib/fork.js +++ b/lib/fork.js @@ -168,11 +168,11 @@ export default function loadFork(file, options, execArgv = process.execArgv) { }, onConnectSharedWorker(listener) { - return emitter.on('connectSharedWorker', listener); + return emitter.on('connectSharedWorker', ({data}) => listener(data)); }, onStateChange(listener) { - return emitter.on('stateChange', listener); + return emitter.on('stateChange', ({data}) => listener(data)); }, }; } diff --git a/lib/plugin-support/shared-worker-loader.js b/lib/plugin-support/shared-worker-loader.js index bd8ed46bf..d4a3a637d 100644 --- a/lib/plugin-support/shared-worker-loader.js +++ b/lib/plugin-support/shared-worker-loader.js @@ -199,7 +199,7 @@ try { // Run possibly asynchronous release functions serially, in reverse // order. Any error will crash the worker. - for await (const fn of [...teardownFns].reverse()) { + for await (const fn of [...teardownFns].toReversed()) { await fn(); } diff --git a/lib/plugin-support/shared-workers.js b/lib/plugin-support/shared-workers.js index 59164a542..6348a09ca 100644 --- a/lib/plugin-support/shared-workers.js +++ b/lib/plugin-support/shared-workers.js @@ -84,7 +84,7 @@ export async function observeWorkerProcess(fork, runStatus) { } }; - fork.promise.finally(() => { // eslint-disable-line promise/prefer-await-to-then + fork.promise.finally(() => { removeAllInstances(); }); @@ -99,7 +99,7 @@ export async function observeWorkerProcess(fork, runStatus) { } }; - launched.statePromises.error.then(error => { // eslint-disable-line promise/prefer-await-to-then + launched.statePromises.error.then(error => { launched.worker.off('message', handleWorkerMessage); removeAllInstances(); runStatus.emitStateChange({type: 'shared-worker-error', err: serializeError(error)}); @@ -118,7 +118,7 @@ export async function observeWorkerProcess(fork, runStatus) { port, }, [port]); - fork.promise.finally(() => { // eslint-disable-line promise/prefer-await-to-then + fork.promise.finally(() => { launched.worker.postMessage({ type: 'deregister-test-worker', id: fork.threadId, diff --git a/lib/reporters/default.js b/lib/reporters/default.js index 10ca84f65..1b5035968 100644 --- a/lib/reporters/default.js +++ b/lib/reporters/default.js @@ -148,7 +148,7 @@ export default class Reporter { this.prefixTitle = (testFile, title) => prefixTitle(this.extensions, plan.filePathPrefix, testFile, title); } - this.removePreviousListener = plan.status.on('stateChange', evt => { + this.removePreviousListener = plan.status.on('stateChange', ({data: evt}) => { this.consumeStateChange(evt); }); diff --git a/lib/reporters/tap.js b/lib/reporters/tap.js index 3c854648f..7884db59f 100644 --- a/lib/reporters/tap.js +++ b/lib/reporters/tap.js @@ -52,8 +52,6 @@ function dumpError({ export default class TapReporter { constructor(options) { - this.i = 0; - this.extensions = options.extensions; this.stdStream = options.stdStream; this.reportStream = options.reportStream; @@ -71,7 +69,7 @@ export default class TapReporter { this.prefixTitle = (testFile, title) => prefixTitle(this.extensions, plan.filePathPrefix, testFile, title); } - plan.status.on('stateChange', evt => this.consumeStateChange(evt)); + plan.status.on('stateChange', ({data: evt}) => this.consumeStateChange(evt)); this.reportStream.write(supertap.start() + os.EOL); } @@ -265,4 +263,6 @@ export default class TapReporter { } } } + + i = 0; } diff --git a/lib/runner.js b/lib/runner.js index 1025bbdeb..3272bc646 100644 --- a/lib/runner.js +++ b/lib/runner.js @@ -254,7 +254,7 @@ export default class Runner extends Emittery { let waitForSerial = Promise.resolve(); await runnables.reduce((previous, runnable) => { // eslint-disable-line unicorn/no-array-reduce if (runnable.metadata.serial || this.serial) { - waitForSerial = previous.then(() => // eslint-disable-line promise/prefer-await-to-then + waitForSerial = previous.then(() => // Serial runnables run as long as there was no previous failure, unless // the runnable should always be run. (allPassed || runnable.metadata.always) && runAndStoreResult(runnable)); @@ -263,7 +263,7 @@ export default class Runner extends Emittery { return Promise.all([ previous, - waitForSerial.then(() => // eslint-disable-line promise/prefer-await-to-then + waitForSerial.then(() => // Concurrent runnables are kicked off after the previous serial // runnables have completed, as long as there was no previous failure // (or if the runnable should always be run). One concurrent runnable's @@ -476,7 +476,7 @@ export default class Runner extends Emittery { // Note that the hooks and tests always begin running asynchronously. const beforePromise = this.runHooks(this.tasks.before, contextRef); - const serialPromise = beforePromise.then(beforeHooksOk => { // eslint-disable-line promise/prefer-await-to-then + const serialPromise = beforePromise.then(beforeHooksOk => { // Don't run tests if a `before` hook failed. if (!beforeHooksOk) { return false; @@ -498,7 +498,7 @@ export default class Runner extends Emittery { return this.runTest(task, contextRef.copy()); }, true); }); - const concurrentPromise = Promise.all([beforePromise, serialPromise]).then(async ([beforeHooksOk, serialOk]) => { // eslint-disable-line promise/prefer-await-to-then + const concurrentPromise = Promise.all([beforePromise, serialPromise]).then(async ([beforeHooksOk, serialOk]) => { // Don't run tests if a `before` hook failed, or if `failFast` is enabled // and a previous serial test failed. if (!beforeHooksOk || (!serialOk && this.failFast)) { diff --git a/lib/scheduler.js b/lib/scheduler.js index c78dd3234..335c37498 100644 --- a/lib/scheduler.js +++ b/lib/scheduler.js @@ -45,7 +45,7 @@ const scheduler = { return selectedFiles; } - return [...selectedFiles].sort((f, s) => { + return selectedFiles.toSorted((f, s) => { if (failedTestFiles.includes(f) && failedTestFiles.includes(s)) { return 0; } diff --git a/lib/snapshot-manager.js b/lib/snapshot-manager.js index 1be8a1c4d..ccf058364 100644 --- a/lib/snapshot-manager.js +++ b/lib/snapshot-manager.js @@ -160,7 +160,7 @@ class BufferBuilder { } function sortBlocks(blocksByTitle, blockIndices) { - return [...blocksByTitle].sort(([aTitle], [bTitle]) => { + return [...blocksByTitle].toSorted(([aTitle], [bTitle]) => { const a = blockIndices.get(aTitle); const b = blockIndices.get(bTitle); diff --git a/lib/test.js b/lib/test.js index a14a7c505..8831e12ee 100644 --- a/lib/test.js +++ b/lib/test.js @@ -474,7 +474,7 @@ export default class Test { } async runTeardowns() { - const teardowns = [...this.teardowns].reverse(); + const teardowns = this.teardowns.toReversed(); for (const teardown of teardowns) { try { @@ -590,7 +590,7 @@ export default class Test { }; promise - .catch(error => { // eslint-disable-line promise/prefer-await-to-then + .catch(error => { if (this.testFailure !== null && error === this.testFailure) { return; } @@ -607,7 +607,7 @@ export default class Test { })); } }) - .then(() => resolve(this.finish())); // eslint-disable-line promise/prefer-await-to-then + .then(() => resolve(this.finish())); }); } diff --git a/lib/watcher.js b/lib/watcher.js index 1228b3f6f..f4fb67ec0 100644 --- a/lib/watcher.js +++ b/lib/watcher.js @@ -210,7 +210,7 @@ async function * plan({ }; // Begin a file trace in the background. - fileTracer.update(findTests(cwdAndGlobs).then(testFiles => testFiles.map(path => ({ // eslint-disable-line promise/prefer-await-to-then + fileTracer.update(findTests(cwdAndGlobs).then(testFiles => testFiles.map(path => ({ path: nodePath.relative(projectDir, path), isTest: true, exists: true, @@ -231,8 +231,8 @@ async function * plan({ }; // Observe all test runs. - api.on('run', ({status}) => { - status.on('stateChange', evt => { + api.on('run', ({data: {status}}) => { + status.on('stateChange', ({data: evt}) => { switch (evt.type) { case 'accessed-snapshots': { fileTracer.addDependency(nodePath.relative(projectDir, evt.testFile), nodePath.relative(projectDir, evt.filename)); @@ -428,7 +428,7 @@ async function * plan({ // If the file tracer is still analyzing dependencies, wait for that to // complete. if (fileTracer.busy !== null) { - fileTracer.busy.then(() => debounce.refresh()); // eslint-disable-line promise/prefer-await-to-then + fileTracer.busy.then(() => debounce.refresh()); takeCoverageForSelfTests?.(); return; } @@ -710,15 +710,10 @@ class FileTracer { #base; #cache = Object.create(null); #pendingTrace = null; - #updateRunning; - #signalUpdateRunning; #tree = new Tree(); constructor({base}) { this.#base = base; - this.#updateRunning = new Promise(resolve => { - this.#signalUpdateRunning = resolve; - }); } get busy() { @@ -764,12 +759,9 @@ class FileTracer { } update(changes) { - const current = this.#update(changes).finally(() => { // eslint-disable-line promise/prefer-await-to-then + const current = this.#update(changes).finally(() => { if (this.#pendingTrace === current) { this.#pendingTrace = null; - this.#updateRunning = new Promise(resolve => { - this.#signalUpdateRunning = resolve; - }); } }); @@ -778,7 +770,6 @@ class FileTracer { async #update(changes) { await this.#pendingTrace; // Guard against race conditions. - this.#signalUpdateRunning(); let reuseCache = true; const knownTestFiles = new Set(); diff --git a/lib/worker/base.js b/lib/worker/base.js index e3d3a3131..ef44b1a09 100644 --- a/lib/worker/base.js +++ b/lib/worker/base.js @@ -88,14 +88,14 @@ const run = async options => { refs.runnerChain = runner.chain; - channel.peerFailed.then(() => { // eslint-disable-line promise/prefer-await-to-then + channel.peerFailed.then(() => { runner.interrupt(); }); - runner.on('accessed-snapshots', filename => channel.send({type: 'accessed-snapshots', filename})); - runner.on('stateChange', state => channel.send(state)); + runner.on('accessed-snapshots', ({data: filename}) => channel.send({type: 'accessed-snapshots', filename})); + runner.on('stateChange', ({data: state}) => channel.send(state)); - runner.on('error', error => { + runner.on('error', ({data: error}) => { channel.send({type: 'internal-error', err: serializeError(error)}); forceExit(); }); diff --git a/lib/worker/channel.cjs b/lib/worker/channel.cjs index 177bba359..671cc6d12 100644 --- a/lib/worker/channel.cjs +++ b/lib/worker/channel.cjs @@ -16,10 +16,6 @@ const selectAvaMessage = async (channel, type) => { }; class RefCounter { - constructor() { - this.count = 0; - } - refAndTest() { return ++this.count === 1; } @@ -27,6 +23,8 @@ class RefCounter { testAndUnref() { return this.count > 0 && --this.count === 0; } + + count = 0; } class MessagePortHandle { @@ -160,9 +158,9 @@ function registerSharedWorker(filename, initialData) { // The attaching of message listeners will cause the port to be referenced by // Node.js. In order to keep track, explicitly reference before attaching. sharedWorkerHandle.ref(); - const ready = selectAvaMessage(ourPort, 'ready').then(() => { // eslint-disable-line promise/prefer-await-to-then + const ready = selectAvaMessage(ourPort, 'ready').then(() => { currentlyAvailable = error === null; - }).finally(() => { // eslint-disable-line promise/prefer-await-to-then + }).finally(() => { // Once ready, it's up to user code to subscribe to messages, which (see // below) causes us to reference the port. sharedWorkerHandle.unref(); @@ -172,7 +170,7 @@ function registerSharedWorker(filename, initialData) { // Errors are received over the test worker channel, not the message port // dedicated to the shared worker. - events.once(channelEmitter, 'shared-worker-error').then(() => { // eslint-disable-line promise/prefer-await-to-then + events.once(channelEmitter, 'shared-worker-error').then(() => { unsubscribe(); sharedWorkerHandle.forceUnref(); error = new Error('The shared worker is no longer available'); diff --git a/lib/worker/plugin.cjs b/lib/worker/plugin.cjs index dace29ca6..4ec0b6662 100644 --- a/lib/worker/plugin.cjs +++ b/lib/worker/plugin.cjs @@ -108,7 +108,7 @@ function registerSharedWorker({ // order. Any error will crash the worker. const teardownFns = workerTeardownFns.get(worker); if (teardownFns !== undefined) { - for await (const fn of [...teardownFns].reverse()) { + for await (const fn of [...teardownFns].toReversed()) { await fn(); } } diff --git a/package-lock.json b/package-lock.json index 8a7a7cce5..63caae839 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,44 +9,44 @@ "version": "7.0.0", "license": "MIT", "dependencies": { - "@vercel/nft": "^1.3.2", + "@vercel/nft": "^1.5.0", "acorn": "^8.16.0", "acorn-walk": "^8.3.5", "ansi-styles": "^6.2.3", "arrgv": "^1.0.2", "arrify": "^3.0.0", "callsites": "^4.2.0", - "cbor": "^10.0.11", + "cbor": "^10.0.12", "chalk": "^5.6.2", "chunkd": "^2.0.1", "ci-info": "^4.4.0", "ci-parallel-vars": "^1.0.1", - "cli-truncate": "^5.1.1", + "cli-truncate": "^6.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", + "emittery": "^2.0.0", "figures": "^6.1.0", - "globby": "^16.1.1", + "globby": "^16.2.0", "ignore-by-default": "^2.1.0", "indent-string": "^5.0.0", "is-plain-object": "^5.0.0", "is-promise": "^4.0.0", "matcher": "^6.0.0", - "memoize": "^10.2.0", + "memoize": "^11.0.0", "ms": "^2.1.3", "p-map": "^7.0.4", "package-config": "^5.0.0", - "picomatch": "^4.0.3", + "picomatch": "^4.0.4", "plur": "^6.0.0", "pretty-ms": "^9.3.0", "resolve-cwd": "^3.0.0", "stack-utils": "^2.0.6", "supertap": "^3.0.1", "temp-dir": "^3.0.0", - "write-file-atomic": "^7.0.0", + "write-file-atomic": "^7.0.1", "yargs": "^18.0.0" }, "bin": { @@ -56,17 +56,17 @@ "@ava/test": "github:avajs/test", "@ava/typescript": "^6.0.0", "@sindresorhus/tsconfig": "^8.1.0", - "@types/node": "^24.10.15", + "@types/node": "^24.12.2", "ansi-escapes": "^7.3.0", "c8": "^11.0.0", "execa": "^9.6.1", - "expect": "^30.2.0", - "sinon": "^21.0.1", - "tap": "^21.6.2", + "expect": "^30.3.0", + "sinon": "^21.0.3", + "tap": "^21.6.3", "tempy": "^3.2.0", "tsd": "^0.33.0", - "typescript": "~5.9.3", - "xo": "^1.2.3", + "typescript": "~6.0.2", + "xo": "^2.0.2", "zen-observable": "^0.10.0" }, "engines": { @@ -110,11 +110,11 @@ }, "node_modules/@ava/test": { "version": "0.0.0", - "resolved": "git+ssh://git@github.com/avajs/test.git#8482014de4cabf2fac14e28ca80130cbe8adee21", + "resolved": "git+ssh://git@github.com/avajs/test.git#c9a71e674e89f5c1bc82c031d3c16c012adc9464", "dev": true, "license": "MIT", "dependencies": { - "@ava/v6": "npm:ava@^6" + "@ava/v7": "npm:ava@^7" }, "bin": { "test-ava": "cli.js" @@ -134,60 +134,59 @@ "node": "^20.8 || ^22 || >=24" } }, - "node_modules/@ava/v6": { + "node_modules/@ava/v7": { "name": "ava", - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/ava/-/ava-6.4.1.tgz", - "integrity": "sha512-vxmPbi1gZx9zhAjHBgw81w/iEDKcrokeRk/fqDTyA2DQygZ0o+dUGRHFOtX8RA5N0heGJTTsIk7+xYxitDb61Q==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ava/-/ava-7.0.0.tgz", + "integrity": "sha512-4sRJO/gehlfAgSbuH02mClDDiyymnuFmirE3KqPXl2pic1FaFTZaAACKqr85WT4o08iLjViMR9gmMkxzbZ3AgA==", "dev": true, "license": "MIT", "dependencies": { - "@vercel/nft": "^0.29.4", - "acorn": "^8.15.0", - "acorn-walk": "^8.3.4", - "ansi-styles": "^6.2.1", + "@vercel/nft": "^1.3.2", + "acorn": "^8.16.0", + "acorn-walk": "^8.3.5", + "ansi-styles": "^6.2.3", "arrgv": "^1.0.2", "arrify": "^3.0.0", "callsites": "^4.2.0", - "cbor": "^10.0.9", - "chalk": "^5.4.1", + "cbor": "^10.0.11", + "chalk": "^5.6.2", "chunkd": "^2.0.1", - "ci-info": "^4.3.0", + "ci-info": "^4.4.0", "ci-parallel-vars": "^1.0.1", - "cli-truncate": "^4.0.0", + "cli-truncate": "^5.1.1", "code-excerpt": "^4.0.0", "common-path-prefix": "^3.0.0", "concordance": "^5.0.4", "currently-unhandled": "^0.4.1", - "debug": "^4.4.1", + "debug": "^4.4.3", "emittery": "^1.2.0", "figures": "^6.1.0", - "globby": "^14.1.0", + "globby": "^16.1.1", "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", + "matcher": "^6.0.0", + "memoize": "^10.2.0", "ms": "^2.1.3", - "p-map": "^7.0.3", + "p-map": "^7.0.4", "package-config": "^5.0.0", - "picomatch": "^4.0.2", - "plur": "^5.1.0", - "pretty-ms": "^9.2.0", + "picomatch": "^4.0.3", + "plur": "^6.0.0", + "pretty-ms": "^9.3.0", "resolve-cwd": "^3.0.0", "stack-utils": "^2.0.6", - "strip-ansi": "^7.1.0", "supertap": "^3.0.1", "temp-dir": "^3.0.0", - "write-file-atomic": "^6.0.0", - "yargs": "^17.7.2" + "write-file-atomic": "^7.0.0", + "yargs": "^18.0.0" }, "bin": { "ava": "entrypoints/cli.mjs" }, "engines": { - "node": "^18.18 || ^20.8 || ^22 || ^23 || >=24" + "node": "^20.19 || ^22.20 || ^24.12 || >=25" }, "peerDependencies": { "@ava/typescript": "*" @@ -198,578 +197,353 @@ } } }, - "node_modules/@ava/v6/node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@ava/v6/node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@ava/v6/node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "node_modules/@ava/v7/node_modules/cli-truncate": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-5.2.0.tgz", + "integrity": "sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==", "dev": true, "license": "MIT", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "slice-ansi": "^8.0.0", + "string-width": "^8.2.0" }, "engines": { - "node": ">=12" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@ava/v6/node_modules/@sindresorhus/merge-streams": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", - "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", + "node_modules/@ava/v7/node_modules/emittery": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-1.2.1.tgz", + "integrity": "sha512-sFz64DCRjirhwHLxofFqxYQm6DCp6o0Ix7jwKQvuCHPn4GMRZNuBZyLPu9Ccmk/QSCAMZt6FOUqA8JZCQvA9fw==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" + "node": ">=14.16" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@ava/v6/node_modules/@vercel/nft": { - "version": "0.29.4", - "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-0.29.4.tgz", - "integrity": "sha512-6lLqMNX3TuycBPABycx7A9F1bHQR7kiQln6abjFbPrf5C/05qHM9M5E4PeTE59c7z8g6vHnx1Ioihb2AQl7BTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@mapbox/node-pre-gyp": "^2.0.0", - "@rollup/pluginutils": "^5.1.3", - "acorn": "^8.6.0", - "acorn-import-attributes": "^1.9.5", - "async-sema": "^3.1.1", - "bindings": "^1.4.0", - "estree-walker": "2.0.2", - "glob": "^10.4.5", - "graceful-fs": "^4.2.9", - "node-gyp-build": "^4.2.2", - "picomatch": "^4.0.2", - "resolve-from": "^5.0.0" - }, - "bin": { - "nft": "out/cli.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@ava/v6/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@ava/v6/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@ava/v6/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" + "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, - "node_modules/@ava/v6/node_modules/cli-truncate": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", - "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", + "node_modules/@ava/v7/node_modules/memoize": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/memoize/-/memoize-10.2.0.tgz", + "integrity": "sha512-DeC6b7QBrZsRs3Y02A6A7lQyzFbsQbqgjI6UW0GigGWV+u1s25TycMr0XHZE4cJce7rY/vyw2ctMQqfDkIhUEA==", "dev": true, "license": "MIT", "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^7.0.0" + "mimic-function": "^5.0.1" }, "engines": { "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@ava/v6/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" + "url": "https://github.com/sindresorhus/memoize?sponsor=1" } }, - "node_modules/@ava/v6/node_modules/cliui/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@ava/v7/node_modules/slice-ansi": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-8.0.0.tgz", + "integrity": "sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "ansi-styles": "^6.2.3", + "is-fullwidth-code-point": "^5.1.0" }, "engines": { - "node": ">=8" + "node": ">=20" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@ava/v6/node_modules/cliui/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@ava/v6/node_modules/cliui/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/@ava/v6/node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", "dev": true, "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" } }, - "node_modules/@ava/v6/node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/@babel/compat-data": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", "dev": true, "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, "engines": { - "node": ">=8" + "node": ">=6.9.0" } }, - "node_modules/@ava/v6/node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "node_modules/@babel/core": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { - "node": ">=10" + "node": ">=6.9.0" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/@ava/v6/node_modules/emoji-regex": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@ava/v6/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "semver": "bin/semver.js" } }, - "node_modules/@ava/v6/node_modules/globby": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-14.1.0.tgz", - "integrity": "sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==", + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", "dev": true, "license": "MIT", "dependencies": { - "@sindresorhus/merge-streams": "^2.1.0", - "fast-glob": "^3.3.3", - "ignore": "^7.0.3", - "path-type": "^6.0.0", - "slash": "^5.1.0", - "unicorn-magic": "^0.3.0" + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@ava/v6/node_modules/irregular-plurals": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.5.0.tgz", - "integrity": "sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "node": ">=6.9.0" } }, - "node_modules/@ava/v6/node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "node_modules/@babel/generator/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@ava/v6/node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@ava/v6/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/@ava/v6/node_modules/matcher": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-5.0.0.tgz", - "integrity": "sha512-s2EMBOWtXFc8dgqvoAzKJXxNHibcdJMV0gwqKUaw9E2JBJuGUK7DrNKrA6g/i+v72TT16+6sVm5mS3thaMLQUw==", + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", "dev": true, "license": "MIT", "dependencies": { - "escape-string-regexp": "^5.0.0" + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6.9.0" } }, - "node_modules/@ava/v6/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.2" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "yallist": "^3.0.2" } }, - "node_modules/@ava/v6/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/@ava/v6/node_modules/plur": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/plur/-/plur-5.1.0.tgz", - "integrity": "sha512-VP/72JeXqak2KiOzjgKtQen5y3IZHn+9GOuLDafPv0eXa47xq0At93XahYBs26MsifCQ4enGKwbjBTKgb9QJXg==", + "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", "dev": true, "license": "MIT", - "dependencies": { - "irregular-plurals": "^3.3.0" - }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6.9.0" } }, - "node_modules/@ava/v6/node_modules/slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "node": ">=6.9.0" } }, - "node_modules/@ava/v6/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", "dev": true, "license": "MIT", "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" }, "engines": { - "node": ">=18" + "node": ">=6.9.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@ava/v6/node_modules/unicorn-magic": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", - "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6.9.0" } }, - "node_modules/@ava/v6/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "dev": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">=6.9.0" } }, - "node_modules/@ava/v6/node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@ava/v6/node_modules/wrap-ansi/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", "dev": true, "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@ava/v6/node_modules/write-file-atomic": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-6.0.0.tgz", - "integrity": "sha512-GmqrO8WJ1NuzJ2DrziEI2o57jKAVIQNf8a18W3nCYU3H7PNWqCCVTeH6/NQE93CIllIgQS98rrmVkYgTX9fFJQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">=6.9.0" } }, - "node_modules/@ava/v6/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "node_modules/@babel/helpers": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", + "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", "dev": true, "license": "MIT", "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0" }, "engines": { - "node": ">=12" - } - }, - "node_modules/@ava/v6/node_modules/yargs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@ava/v6/node_modules/yargs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "node": ">=6.9.0" } }, - "node_modules/@ava/v6/node_modules/yargs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/@babel/parser": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", "dev": true, "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" }, "engines": { - "node": ">=8" + "node": ">=6.0.0" } }, - "node_modules/@ava/v6/node_modules/yargs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" } }, - "node_modules/@babel/code-frame": { + "node_modules/@babel/traverse": { "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", - "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.28.5", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", - "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", "dev": true, "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, "engines": { "node": ">=6.9.0" } @@ -805,21 +579,21 @@ } }, "node_modules/@emnapi/core": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz", - "integrity": "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.2.tgz", + "integrity": "sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==", "dev": true, "license": "MIT", "optional": true, "dependencies": { - "@emnapi/wasi-threads": "1.1.0", + "@emnapi/wasi-threads": "1.2.1", "tslib": "^2.4.0" } }, "node_modules/@emnapi/runtime": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", - "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.2.tgz", + "integrity": "sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==", "dev": true, "license": "MIT", "optional": true, @@ -828,9 +602,9 @@ } }, "node_modules/@emnapi/wasi-threads": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", - "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", + "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", "dev": true, "license": "MIT", "optional": true, @@ -839,9 +613,9 @@ } }, "node_modules/@eslint-community/eslint-plugin-eslint-comments": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-4.6.0.tgz", - "integrity": "sha512-2EX2bBQq1ez++xz2o9tEeEQkyvfieWgUFMH4rtJJri2q0Azvhja3hZGXsjPXs31R4fQkZDtWzNDDK2zQn5UE5g==", + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-4.7.1.tgz", + "integrity": "sha512-Ql2nJFwA8wUGpILYGOQaT1glPsmvEwE0d+a+l7AALLzQvInqdbXJdx7aSu0DpUX9dB1wMVBMhm99/++S3MdEtQ==", "dev": true, "license": "MIT", "dependencies": { @@ -855,7 +629,7 @@ "url": "https://opencollective.com/eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0" } }, "node_modules/@eslint-community/eslint-plugin-eslint-comments/node_modules/escape-string-regexp": { @@ -908,21 +682,43 @@ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", "dev": true, - "license": "MIT", + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/compat": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-2.0.4.tgz", + "integrity": "sha512-o598tCGstJv9Kk4XapwP+oDij9HD9Qr3V37ABzTfdzVvbFciV+sfg9zSW6olj6G/IXj7p89SwSzPnZ+JUEPIPg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^1.2.0" + }, "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "peerDependencies": { + "eslint": "^8.40 || 9 || 10" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, "node_modules/@eslint/config-array": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", - "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz", + "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "@eslint/object-schema": "^2.1.7", "debug": "^4.3.1", - "minimatch": "^3.1.2" + "minimatch": "^3.1.5" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -933,14 +729,16 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@eslint/config-array/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -952,6 +750,7 @@ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -965,6 +764,7 @@ "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "@eslint/core": "^0.17.0" }, @@ -972,7 +772,63 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@eslint/config-helpers/node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/core": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.2.0.tgz", + "integrity": "sha512-8FTGbNzTvmSlc4cZBaShkC6YvFMG0riksYWRFKXztqVdXaQbcZLXlFbSpC05s70sGEsXAw0qwhx69JiW7hQS7A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/css": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/@eslint/css/-/css-0.14.1.tgz", + "integrity": "sha512-NXiteSacmpaXqgyIW3+GcNzexXyfC0kd+gig6WTjD4A74kBGJeNx1tV0Hxa0v7x0+mnIyKfGPhGNs1uhRFdh+w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0", + "@eslint/css-tree": "^3.6.6", + "@eslint/plugin-kit": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/css-tree": { + "version": "3.6.9", + "resolved": "https://registry.npmjs.org/@eslint/css-tree/-/css-tree-3.6.9.tgz", + "integrity": "sha512-3D5/OHibNEGk+wKwNwMbz63NMf367EoR4mVNNpxddCHKEb2Nez7z62J2U6YjtErSsZDoY0CsccmoUpdEbkogNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.23.0", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/@eslint/css/node_modules/@eslint/core": { "version": "0.17.0", "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", @@ -986,11 +842,12 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.4.tgz", - "integrity": "sha512-4h4MVF8pmBsncB60r0wSJiIeUKTSD4m7FmTFThG8RHlsg9ajqckLm9OraguFGZE4vVdpiI1Q4+hFnisopmG6gQ==", + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.5.tgz", + "integrity": "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "ajv": "^6.14.0", "debug": "^4.3.2", @@ -999,7 +856,7 @@ "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.1", - "minimatch": "^3.1.3", + "minimatch": "^3.1.5", "strip-json-comments": "^3.1.1" }, "engines": { @@ -1014,32 +871,69 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, - "license": "Python-2.0" + "license": "Python-2.0", + "peer": true }, "node_modules/@eslint/eslintrc/node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, + "node_modules/@eslint/eslintrc/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@eslint/eslintrc/node_modules/globals": { "version": "14.0.0", "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=18" }, @@ -1053,6 +947,7 @@ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 4" } @@ -1063,6 +958,7 @@ "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "argparse": "^2.0.1" }, @@ -1076,6 +972,7 @@ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -1084,11 +981,12 @@ } }, "node_modules/@eslint/js": { - "version": "9.39.3", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.3.tgz", - "integrity": "sha512-1B1VkCq6FuUNlQvlBYb+1jDu/gV297TIs/OeiaSR9l1H27SVW55ONE1e1Vp16NqP683+xEGzxYtv4XCiDPaQiw==", + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.4.tgz", + "integrity": "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -1096,12 +994,43 @@ "url": "https://eslint.org/donate" } }, + "node_modules/@eslint/json": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@eslint/json/-/json-1.2.0.tgz", + "integrity": "sha512-CEFEyNgvzu8zn5QwVYDg3FaG+ZKUeUsNYitFpMYJAqoAlnw68EQgNbUfheSmexZr4n0wZPrAkPLuvsLaXO6wRw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^1.1.1", + "@eslint/plugin-kit": "^0.6.1", + "@humanwhocodes/momoa": "^3.3.10", + "natural-compare": "^1.4.0" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/json/node_modules/@eslint/plugin-kit": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.6.1.tgz", + "integrity": "sha512-iH1B076HoAshH1mLpHMgwdGeTs0CYwL0SPMkGuSebZrwBp16v415e9NZXg2jtrqPVQjf6IANe2Vtlr5KswtcZQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^1.1.1", + "levn": "^0.4.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, "node_modules/@eslint/object-schema": { "version": "2.1.7", "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", "dev": true, "license": "Apache-2.0", + "peer": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } @@ -1120,15 +1049,25 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@gar/promise-retry": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@gar/promise-retry/-/promise-retry-1.0.2.tgz", - "integrity": "sha512-Lm/ZLhDZcBECta3TmCQSngiQykFdfw+QtI1/GYMsZd4l3nG+P8WLB16XuS7WaBGLQ+9E+cOcWQsth9cayuGt8g==", + "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "retry": "^0.13.1" + "@types/json-schema": "^7.0.15" }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@gar/promise-retry": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@gar/promise-retry/-/promise-retry-1.0.3.tgz", + "integrity": "sha512-GmzA9ckNokPypTg10pgpeHNQe7ph+iIKKmhKu3Ob9ANkswreCx7R3cKmY781K8QK3AqVL3xVh9A42JvIAbkkSA==", + "dev": true, + "license": "MIT", "engines": { "node": "^20.17.0 || >=22.9.0" } @@ -1171,6 +1110,16 @@ "url": "https://github.com/sponsors/nzakas" } }, + "node_modules/@humanwhocodes/momoa": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/@humanwhocodes/momoa/-/momoa-3.3.10.tgz", + "integrity": "sha512-KWiFQpSAqEIyrTXko3hFNLeQvSK8zXlJQzhhxsyVn58WFRYXST99b3Nqnu+ttOtjds2Pl2grUHGpe2NzhPynuQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18" + } + }, "node_modules/@humanwhocodes/retry": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", @@ -1282,9 +1231,9 @@ } }, "node_modules/@jest/diff-sequences": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", - "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.3.0.tgz", + "integrity": "sha512-cG51MVnLq1ecVUaQ3fr6YuuAOitHK1S4WUJHnsPFE/quQr33ADUx1FfrTCpMCRxvy0Yr9BThKpDjSlcTi91tMA==", "dev": true, "license": "MIT", "engines": { @@ -1292,9 +1241,9 @@ } }, "node_modules/@jest/expect-utils": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", - "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.3.0.tgz", + "integrity": "sha512-j0+W5iQQ8hBh7tHZkTQv3q2Fh/M7Je72cIsYqC4OaktgtO7v1So9UTjp6uPBHIaB6beoF/RRsCgMJKvti0wADA==", "dev": true, "license": "MIT", "dependencies": { @@ -1342,9 +1291,9 @@ } }, "node_modules/@jest/types": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", - "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.3.0.tgz", + "integrity": "sha512-JHm87k7bA33hpBngtU8h6UBub/fqqA9uXfw+21j5Hmk7ooPHlboRNxHq0JcMtC+n8VJGP1mcfnD3Mk+XKe1oSw==", "dev": true, "license": "MIT", "dependencies": { @@ -1393,6 +1342,50 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/gen-mapping/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", @@ -1658,16 +1651,12 @@ "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "node_modules/@package-json/types": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/@package-json/types/-/types-0.0.12.tgz", + "integrity": "sha512-uu43FGU34B5VM9mCNjXCwLaGHYjXdNincqKLaraaCW+7S2+SmiBg1Nv8bPnmschrIfZmfKNY9f3fC376MRrObw==", "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } + "license": "MIT" }, "node_modules/@pkgr/core": { "version": "0.2.9", @@ -1725,9 +1714,9 @@ } }, "node_modules/@sigstore/core": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-3.1.0.tgz", - "integrity": "sha512-o5cw1QYhNQ9IroioJxpzexmPjfCe7gzafd2RY3qnMpxr4ZEja+Jad/U8sgFpaue6bOaF+z7RVkyKVV44FN+N8A==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-3.2.0.tgz", + "integrity": "sha512-kxHrDQ9YgfrWUSXU0cjsQGv8JykOFZQ9ErNKbFPWzk3Hgpwu8x2hHrQ9IdA8yl+j9RTLTC3sAF3Tdq1IQCP4oA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -1745,27 +1734,27 @@ } }, "node_modules/@sigstore/sign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-4.1.0.tgz", - "integrity": "sha512-Vx1RmLxLGnSUqx/o5/VsCjkuN5L7y+vxEEwawvc7u+6WtX2W4GNa7b9HEjmcRWohw/d6BpATXmvOwc78m+Swdg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-4.1.1.tgz", + "integrity": "sha512-Hf4xglukg0XXQ2RiD5vSoLjdPe8OBUPA8XeVjUObheuDcWdYWrnH/BNmxZCzkAy68MzmNCxXLeurJvs6hcP2OQ==", "dev": true, "license": "Apache-2.0", "dependencies": { + "@gar/promise-retry": "^1.0.2", "@sigstore/bundle": "^4.0.0", - "@sigstore/core": "^3.1.0", + "@sigstore/core": "^3.2.0", "@sigstore/protobuf-specs": "^0.5.0", - "make-fetch-happen": "^15.0.3", - "proc-log": "^6.1.0", - "promise-retry": "^2.0.1" + "make-fetch-happen": "^15.0.4", + "proc-log": "^6.1.0" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, "node_modules/@sigstore/tuf": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-4.0.1.tgz", - "integrity": "sha512-OPZBg8y5Vc9yZjmWCHrlWPMBqW5yd8+wFNl+thMdtcWz3vjVSoJQutF8YkrzI0SLGnkuFof4HSsWUhXrf219Lw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-4.0.2.tgz", + "integrity": "sha512-TCAzTy0xzdP79EnxSjq9KQ3eaR7+FmudLC6eRKknVKZbV7ZNlGLClAAQb/HMNJ5n2OBNk2GT1tEmU0xuPr+SLQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1792,9 +1781,9 @@ } }, "node_modules/@sinclair/typebox": { - "version": "0.34.48", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", - "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", + "version": "0.34.49", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", + "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", "dev": true, "license": "MIT" }, @@ -1834,9 +1823,9 @@ } }, "node_modules/@sinonjs/fake-timers": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.1.0.tgz", - "integrity": "sha512-cqfapCxwTGsrR80FEgOoPsTonoefMBY7dnUEbQ+GRcved0jvkJLzvX6F4WtN+HBqbPX/SiFsIRUp+IrCW/2I2w==", + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.3.0.tgz", + "integrity": "sha512-m2xozxSfCIxjDdvbhIWazlP2i2aha/iUmbl94alpsIbd3iLTfeXgfBVbwyWogB6l++istyGZqamgA/EcqYf+Bg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -1844,9 +1833,9 @@ } }, "node_modules/@sinonjs/samsam": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.3.tgz", - "integrity": "sha512-hw6HbX+GyVZzmaYNh82Ecj1vdGZrqVIn/keDTg63IgAwiQPO+xCz99uG6Woqgb4tM0mUiFENKZ4cqd7IX94AXQ==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-9.0.3.tgz", + "integrity": "sha512-ZgYY7Dc2RW+OUdnZ1DEHg00lhRt+9BjymPKHog4PRFzr1U3MbK57+djmscWyKxzO1qfunHqs4N45WWyKIFKpiQ==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -1865,29 +1854,61 @@ } }, "node_modules/@stylistic/eslint-plugin": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-4.4.1.tgz", - "integrity": "sha512-CEigAk7eOLyHvdgmpZsKFwtiqS2wFwI1fn4j09IU9GmD4euFM4jEBAViWeCqaNLlbX2k2+A/Fq9cje4HQBXuJQ==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-5.10.0.tgz", + "integrity": "sha512-nPK52ZHvot8Ju/0A4ucSX1dcPV2/1clx0kLcH5wDmrE4naKso7TUC/voUyU1O9OTKTrR6MYip6LP0ogEMQ9jPQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/utils": "^8.32.1", - "eslint-visitor-keys": "^4.2.0", - "espree": "^10.3.0", + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/types": "^8.56.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", "estraverse": "^5.3.0", - "picomatch": "^4.0.2" + "picomatch": "^4.0.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "peerDependencies": { - "eslint": ">=9.0.0" + "eslint": "^9.0.0 || ^10.0.0" + } + }, + "node_modules/@stylistic/eslint-plugin/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@stylistic/eslint-plugin/node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/@tapjs/after": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@tapjs/after/-/after-3.3.4.tgz", - "integrity": "sha512-Y8DL0F9Ux6Swe7b5g4qLFgJUEFrVr5fhmVOENw4D/x7rDRyx/3c86Ya1p9iJrpkE2RnvdGq9AxR/rTM137Y7Lg==", + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@tapjs/after/-/after-3.3.5.tgz", + "integrity": "sha512-6TVAGHKIdP+MrKQmHQDCS/O/vvUy6eIQDR/RNaU/v0H/zz9v/jkykxSMt/exsWjswDdX9+5mXyOgiA2bvGwMfQ==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -1897,13 +1918,13 @@ "node": "20 || >=22" }, "peerDependencies": { - "@tapjs/core": "4.5.2" + "@tapjs/core": "4.5.3" } }, "node_modules/@tapjs/after-each": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@tapjs/after-each/-/after-each-4.3.4.tgz", - "integrity": "sha512-TM1OWz7Ht3aimbT/MLYnoywI9SBGsTus6TQ+94n1yjr1izO3K21PP5Q9UYdqZ2Qq1WiZmGa+CZKUZANUn1ZcvQ==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@tapjs/after-each/-/after-each-4.3.5.tgz", + "integrity": "sha512-rbZQv6tcCiLmDAM6Xq73m8mFXvnMUVNqoiQnkKMlEM2Rh2l8nw0JLsuFNbk4EPYwCCLvIMyK0g6LZm0feqJXBg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -1913,19 +1934,19 @@ "node": "20 || >=22" }, "peerDependencies": { - "@tapjs/core": "4.5.2" + "@tapjs/core": "4.5.3" } }, "node_modules/@tapjs/asserts": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@tapjs/asserts/-/asserts-4.3.4.tgz", - "integrity": "sha512-1kf2q0oQ7LCZKy5l4Oe7/ZVijhJ9YxbS4qmqGtj7cYwOw4Q78KNLwthh14c9EBbI2QHKUDS2LaLM8a1qMLmPiA==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@tapjs/asserts/-/asserts-4.3.5.tgz", + "integrity": "sha512-INThO34um7OgcM9aqhrq+EMVhlo59DfFDev0QPQeqJIV3AGVksX89IROqc9rFKJ4dSerUijzBHEsXfcg2n+tzQ==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "@tapjs/stack": "4.3.0", + "@tapjs/stack": "4.3.1", "is-actual-promise": "^1.0.1", - "tcompare": "9.3.0", + "tcompare": "9.3.1", "trivial-deferred": "^2.0.0" }, "engines": { @@ -1935,13 +1956,13 @@ "url": "https://github.com/sponsors/isaacs" }, "peerDependencies": { - "@tapjs/core": "4.5.2" + "@tapjs/core": "4.5.3" } }, "node_modules/@tapjs/before": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@tapjs/before/-/before-4.3.4.tgz", - "integrity": "sha512-53n/8/RktPkbCuZveDTYiplbrzWjFkYAnmYCrFixESsFoUrkfTCPjeCRmojBS14zuRdVe4kLsX6XWYkaUpLdZA==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@tapjs/before/-/before-4.3.5.tgz", + "integrity": "sha512-TvjahSNUcEvzoq24bqyJ6ohzoOO/HnTUu1JHRsReQMK3XP7ARtz47Iv4wBEMeh/WrN4xMY9kc3wGxlT9tLpfrg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -1951,13 +1972,13 @@ "node": "20 || >=22" }, "peerDependencies": { - "@tapjs/core": "4.5.2" + "@tapjs/core": "4.5.3" } }, "node_modules/@tapjs/before-each": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@tapjs/before-each/-/before-each-4.3.4.tgz", - "integrity": "sha512-WkLsDvCjBrxrRkyhEBpfmGObUsf8Eb+tsqlxnGUG67XbPMkwkP/AoUPonc/g1Nv+pwtR+t5j6maNblrubWuG3A==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@tapjs/before-each/-/before-each-4.3.5.tgz", + "integrity": "sha512-V8QOTj9bXJjv5ujrHAd9BjzZ9aD04PGy8toTS88gqS0MvCOtlAgOqq8m3P8j3kjwnMO7x3KbtLzB7Rem3F+/ag==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -1967,35 +1988,35 @@ "node": "20 || >=22" }, "peerDependencies": { - "@tapjs/core": "4.5.2" + "@tapjs/core": "4.5.3" } }, "node_modules/@tapjs/chdir": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@tapjs/chdir/-/chdir-3.3.4.tgz", - "integrity": "sha512-B37eGrs47xseJ7dm9ikhStX7KNqflvZViT2lMqVACeNvoxSpRgy1pu7cPix4wKvBlZCtNYaOD8iDNm+5nDfvSQ==", + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@tapjs/chdir/-/chdir-3.3.5.tgz", + "integrity": "sha512-AwPCOvyAKZOB04CejLqBvsMNPep9SFjl5UEwawPwd0WFU8dsNp1zuTdVOf63zw9cm2FtVZIbETyzf+j6Vdyb8g==", "dev": true, "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" }, "peerDependencies": { - "@tapjs/core": "4.5.2" + "@tapjs/core": "4.5.3" } }, "node_modules/@tapjs/config": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/@tapjs/config/-/config-5.5.2.tgz", - "integrity": "sha512-GQyKl40fGamoSvT4SsfQfZyaHT8fboNW5OhrA1hhMc34di5j/efiD15VlNVbPGE51BZSs5M3Jw7YukF2/Cg8CA==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/@tapjs/config/-/config-5.5.3.tgz", + "integrity": "sha512-tUbGIQIlRXYI7AJk2ziYbEJVeDRRNfuuN2V+FpxVrWCPyHnAGuPudaXzGecJxvKSo/IsZnrNMxs7raqIvN3a1Q==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "@tapjs/core": "4.5.2", - "@tapjs/test": "4.4.2", + "@tapjs/core": "4.5.3", + "@tapjs/test": "4.4.3", "chalk": "^5.6.2", "jackspeak": "^4.2.3", "polite-json": "^5.0.0", - "tap-yaml": "4.3.0", + "tap-yaml": "4.3.1", "walk-up-path": "^4.0.0" }, "engines": { @@ -2005,28 +2026,28 @@ "url": "https://github.com/sponsors/isaacs" }, "peerDependencies": { - "@tapjs/core": "4.5.2", - "@tapjs/test": "4.4.2" + "@tapjs/core": "4.5.3", + "@tapjs/test": "4.4.3" } }, "node_modules/@tapjs/core": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/@tapjs/core/-/core-4.5.2.tgz", - "integrity": "sha512-0KKabYyBN4W2CRgnD0rOhDvexbMLMPuT0OElQTz5ezCsx1QGtuUHP9TmRXEGCJAoeL44Us0L2DxPpS4BUW1KEQ==", + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/@tapjs/core/-/core-4.5.3.tgz", + "integrity": "sha512-W1efzx7AEJwT1Wq3A3KBtihe0zBrnP6aTPrYPVow8YFKKOd8m1kfQ0LT+wWWmEVBwUPw5dNe2AFJWyMRlNwMHg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@tapjs/processinfo": "^3.1.9", - "@tapjs/stack": "4.3.0", - "@tapjs/test": "4.4.2", + "@tapjs/stack": "4.3.1", + "@tapjs/test": "4.4.3", "async-hook-domain": "^4.0.1", "diff": "^8.0.2", "is-actual-promise": "^1.0.1", "minipass": "^7.0.4", "signal-exit": "4.1", - "tap-parser": "18.3.0", - "tap-yaml": "4.3.0", - "tcompare": "9.3.0", + "tap-parser": "18.3.1", + "tap-yaml": "4.3.1", + "tcompare": "9.3.1", "trivial-deferred": "^2.0.0" }, "engines": { @@ -2034,9 +2055,9 @@ } }, "node_modules/@tapjs/error-serdes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@tapjs/error-serdes/-/error-serdes-4.3.0.tgz", - "integrity": "sha512-qP266uvPm2G95ClPFpqAN6n4nicLbHrZYbZWl0UO+biOdmvjSSuxeY5f7YFygTl+UuzlyxjlRgHTq8qifnqTcw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@tapjs/error-serdes/-/error-serdes-4.3.1.tgz", + "integrity": "sha512-/zfBC+rM9kQouYpF+/jiPxRxH5ZufXMJbLX6jYCSRKrHv366SIxMNxv1+l3gCY/7ZwPSO8W/0gp7BbdJuHuMGw==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -2050,9 +2071,9 @@ } }, "node_modules/@tapjs/filter": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@tapjs/filter/-/filter-4.3.4.tgz", - "integrity": "sha512-Bpbahk/Bv30ZfGoDpZVjGhvg8Cq2yqCZcawd+4qtTTSDY+V7GEpdJGu2/2EvwXP+s4PklPx2kFry8X9m6OtAog==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@tapjs/filter/-/filter-4.3.5.tgz", + "integrity": "sha512-ozMAGkQ4raq1LLMeU40P52UKjYUYjwUeG0i0CgVdJ1CD3AxoYqb/t3WQOkg62ZVRXVxdazveHB2wpJPZtBmPqA==", "dev": true, "license": "BlueOak-1.0.0", "engines": { @@ -2062,13 +2083,13 @@ "url": "https://github.com/sponsors/isaacs" }, "peerDependencies": { - "@tapjs/core": "4.5.2" + "@tapjs/core": "4.5.3" } }, "node_modules/@tapjs/fixture": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@tapjs/fixture/-/fixture-4.3.4.tgz", - "integrity": "sha512-zRv1vD2H/2abt0S5Yr5ICV/ZaIqXmusBZ6H4Qbih9oE2jvbs6AVDz5Td0adZbWurtHrPLuOFTIz2UsbJfhCCcw==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@tapjs/fixture/-/fixture-4.3.5.tgz", + "integrity": "sha512-Qf+rFVFtYAah0Wuelah0Qrq6YwstGnl44Bb8tZ5OE3TCXEkJ2aUtn+4YV3RAzVh9kgSGzcR0ac0Q+lp1VfX3zQ==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -2082,35 +2103,35 @@ "url": "https://github.com/sponsors/isaacs" }, "peerDependencies": { - "@tapjs/core": "4.5.2" + "@tapjs/core": "4.5.3" } }, "node_modules/@tapjs/intercept": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@tapjs/intercept/-/intercept-4.3.4.tgz", - "integrity": "sha512-7ifEMPmp4yKHQ7PqdPwCetipFLvCegbIyKigEDds/p03ZNFJjgF06D9T4vc/m0sA5SKkPrHVTOU0UzaSrliP7w==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@tapjs/intercept/-/intercept-4.3.5.tgz", + "integrity": "sha512-0TGdDHrEITJeYG/zk4PMu9mZJ7voQgg8A75w/6LuEWBN9S5Lz4walTSWwpwgPOgrTO9dhzfAT8lduuo+8ApnsA==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "@tapjs/after": "3.3.4", - "@tapjs/stack": "4.3.0" + "@tapjs/after": "3.3.5", + "@tapjs/stack": "4.3.1" }, "engines": { "node": "20 || >=22" }, "peerDependencies": { - "@tapjs/core": "4.5.2" + "@tapjs/core": "4.5.3" } }, "node_modules/@tapjs/mock": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@tapjs/mock/-/mock-4.4.2.tgz", - "integrity": "sha512-B6SfNWjWCPvjN9CaHe45lEcl2ZFDkQIUoF5jPthwi2mYxHLfyFFEqorZJhguoTs7ToeXvIqquqE/Luk9IeuKBQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@tapjs/mock/-/mock-4.4.3.tgz", + "integrity": "sha512-tfWZrp9CZPW4sMief6XgNKV158Sj5Uoddk0ABijNfCxEERdHUV5cjgW/GEqbaQtnr/4T3voDgdUGIyuDNGxrrw==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "@tapjs/after": "3.3.4", - "@tapjs/stack": "4.3.0", + "@tapjs/after": "3.3.5", + "@tapjs/stack": "4.3.1", "resolve-import": "^2.4.0", "walk-up-path": "^4.0.0" }, @@ -2121,19 +2142,19 @@ "url": "https://github.com/sponsors/isaacs" }, "peerDependencies": { - "@tapjs/core": "4.5.2" + "@tapjs/core": "4.5.3" } }, "node_modules/@tapjs/node-serialize": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@tapjs/node-serialize/-/node-serialize-4.3.4.tgz", - "integrity": "sha512-SECDvjBS7NVCiCZ6vEtMwtxxSuR61NHBva+PlIQ1mU0asoTYxV9lpRNEAb9UHFKpquEDlk+bLg2iN01a2nfMuw==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@tapjs/node-serialize/-/node-serialize-4.3.5.tgz", + "integrity": "sha512-++Z+Jbn4TehFfZiyAh3c4GcRY388Zb7VcnjFpsrPsJgEzZNYAi21xTRobisZ4esGFnrmnmFJQ1qMmv7JOsVuxw==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "@tapjs/error-serdes": "4.3.0", - "@tapjs/stack": "4.3.0", - "tap-parser": "18.3.0" + "@tapjs/error-serdes": "4.3.1", + "@tapjs/stack": "4.3.1", + "tap-parser": "18.3.1" }, "engines": { "node": "20 || >=22" @@ -2142,7 +2163,7 @@ "url": "https://github.com/sponsors/isaacs" }, "peerDependencies": { - "@tapjs/core": "4.5.2" + "@tapjs/core": "4.5.3" } }, "node_modules/@tapjs/processinfo": { @@ -2163,14 +2184,14 @@ } }, "node_modules/@tapjs/reporter": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/@tapjs/reporter/-/reporter-4.4.4.tgz", - "integrity": "sha512-svWmpJgMQxe4iiKOVr/Hi5kGHJNBDp2Nr8gD0aQuAQ4fp9gOh2LFQXa2Jv7LBKhMjC7UaiW/X7k1qEVk2nOfvg==", + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@tapjs/reporter/-/reporter-4.4.5.tgz", + "integrity": "sha512-Z0lBFH2LpOAqTg3kcFtpl/Yxn1cNQ3N648lW4cb4xuI1+dgEv41wHrO6lLXYcVgFKEViqSG/8eCljT9tPxIAAQ==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "@tapjs/config": "5.5.2", - "@tapjs/stack": "4.3.0", + "@tapjs/config": "5.5.3", + "@tapjs/stack": "4.3.1", "chalk": "^5.6.2", "ink": "^5.2.1", "minipass": "^7.0.4", @@ -2179,9 +2200,9 @@ "prismjs-terminal": "^1.2.3", "react": "^18.2.0", "string-length": "^6.0.0", - "tap-parser": "18.3.0", - "tap-yaml": "4.3.0", - "tcompare": "9.3.0" + "tap-parser": "18.3.1", + "tap-yaml": "4.3.1", + "tcompare": "9.3.1" }, "engines": { "node": "20 || >=22" @@ -2190,25 +2211,25 @@ "url": "https://github.com/sponsors/isaacs" }, "peerDependencies": { - "@tapjs/core": "4.5.2" + "@tapjs/core": "4.5.3" } }, "node_modules/@tapjs/run": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/@tapjs/run/-/run-4.5.2.tgz", - "integrity": "sha512-Oq5YZvoGxEohRWK8P1wHPIAnudEOHPd/bIWawFtRn0ZGvF7bRduZlHpf4eEIrRHKY84G/I3fmC354604cejxiQ==", + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/@tapjs/run/-/run-4.5.3.tgz", + "integrity": "sha512-2e12E/ANnlsbO8wtYZ6JoxqLHHUEpOl7evLVmkcs3e9c1bC2Gkps9YpjSQEAu/sc+gHMliW+qbTR3zvQRk0j5w==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/which": "^7.0.4", - "@tapjs/after": "3.3.4", - "@tapjs/before": "4.3.4", - "@tapjs/config": "5.5.2", + "@tapjs/after": "3.3.5", + "@tapjs/before": "4.3.5", + "@tapjs/config": "5.5.3", "@tapjs/processinfo": "^3.1.9", - "@tapjs/reporter": "4.4.4", - "@tapjs/spawn": "4.3.4", - "@tapjs/stdin": "4.3.4", - "@tapjs/test": "4.4.2", + "@tapjs/reporter": "4.4.5", + "@tapjs/spawn": "4.3.5", + "@tapjs/stdin": "4.3.5", + "@tapjs/test": "4.4.3", "c8": "^10.1.3", "chalk": "^5.6.2", "chokidar": "^4.0.2", @@ -2222,59 +2243,24 @@ "path-scurry": "^2.0.0", "resolve-import": "^2.4.0", "rimraf": "^6.0.0", - "semver": "^7.7.2", - "signal-exit": "^4.1.0", - "tap-parser": "18.3.0", - "tap-yaml": "4.3.0", - "tcompare": "9.3.0", - "trivial-deferred": "^2.0.0" - }, - "bin": { - "tap-run": "dist/esm/index.js" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "peerDependencies": { - "@tapjs/core": "4.5.2" - } - }, - "node_modules/@tapjs/run/node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@tapjs/run/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tapjs/run/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" + "semver": "^7.7.2", + "signal-exit": "^4.1.0", + "tap-parser": "18.3.1", + "tap-yaml": "4.3.1", + "tcompare": "9.3.1", + "trivial-deferred": "^2.0.0" + }, + "bin": { + "tap-run": "dist/esm/index.js" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "peerDependencies": { + "@tapjs/core": "4.5.3" } }, "node_modules/@tapjs/run/node_modules/c8": { @@ -2328,13 +2314,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@tapjs/run/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, "node_modules/@tapjs/run/node_modules/foreground-child": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-4.0.3.tgz", @@ -2351,47 +2330,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@tapjs/run/node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/@tapjs/run/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/@tapjs/run/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@tapjs/run/node_modules/test-exclude": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.2.tgz", @@ -2407,105 +2345,15 @@ "node": ">=18" } }, - "node_modules/@tapjs/run/node_modules/test-exclude/node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@tapjs/run/node_modules/test-exclude/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@tapjs/run/node_modules/test-exclude/node_modules/glob/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.2" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@tapjs/run/node_modules/test-exclude/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@tapjs/run/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/@tapjs/snapshot": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@tapjs/snapshot/-/snapshot-4.3.4.tgz", - "integrity": "sha512-2sJXaGLJUMakkdJd5iDWRucgyHX7f5eP05m4weqWq9dLzX7p1JFOrWXUwns8RCIY7VX9Vx+4jENlxJOywYjyqg==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@tapjs/snapshot/-/snapshot-4.3.5.tgz", + "integrity": "sha512-a7qux8CKJDzmojZ07xoeunyCBtxyAcdl2N6JaEVYrcxouKNpSQuv0ATqyrqXUigp2OslwxW3NmC1iDYN0LxUxA==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "is-actual-promise": "^1.0.1", - "tcompare": "9.3.0", + "tcompare": "9.3.1", "trivial-deferred": "^2.0.0" }, "engines": { @@ -2515,26 +2363,26 @@ "url": "https://github.com/sponsors/isaacs" }, "peerDependencies": { - "@tapjs/core": "4.5.2" + "@tapjs/core": "4.5.3" } }, "node_modules/@tapjs/spawn": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@tapjs/spawn/-/spawn-4.3.4.tgz", - "integrity": "sha512-qQY2SSLkXknpL1kndLS1bCPo9vYKV8Ka93UPIllvDEwaY3oUMghh++EOE4dyUxQPgMFpmoUoj8kSbm2hotevbQ==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@tapjs/spawn/-/spawn-4.3.5.tgz", + "integrity": "sha512-VEkaMrtsE8emHKl+jrnzK9Rmddmf+NkxzByN8t7+AII7z1SvGyxdFCH4nE+BlWjRMf7aaOiyZd2cJjmHVkwqHw==", "dev": true, "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" }, "peerDependencies": { - "@tapjs/core": "4.5.2" + "@tapjs/core": "4.5.3" } }, "node_modules/@tapjs/stack": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@tapjs/stack/-/stack-4.3.0.tgz", - "integrity": "sha512-SFASe4YaVBzMr/FXTm/QsSzbzXZOmgDNpmY3EU0JNiDCN4izHMUnoXY+Kh0EY35hx9C4JDvRjgv2MSIM7bBygg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@tapjs/stack/-/stack-4.3.1.tgz", + "integrity": "sha512-6WDTgt81c3Rfunsu14hGHRQP9GBDaclpkF9K7BC7UfycBG508Obcx/oDuJ2WwZtPY/8qxLAhf9eRWoY8qpmwzw==", "dev": true, "license": "BlueOak-1.0.0", "engines": { @@ -2545,42 +2393,42 @@ } }, "node_modules/@tapjs/stdin": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@tapjs/stdin/-/stdin-4.3.4.tgz", - "integrity": "sha512-0kFeaPEGwNWx8R0z9Uq93/CNhAg+9NbTPZW+GXsjuHQSG125g7VZBNBAg2IMeQmVQ9bUWa3+f5TNp/JnLVvJmg==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@tapjs/stdin/-/stdin-4.3.5.tgz", + "integrity": "sha512-LibE3HrJrqySLcxi/qV4DsfC8hF0UO4qVuLVAqv1d73t3xxrmhqgdCIPZPmWYhSCcg+z/mjCwxpCAswGGgoWnw==", "dev": true, "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" }, "peerDependencies": { - "@tapjs/core": "4.5.2" + "@tapjs/core": "4.5.3" } }, "node_modules/@tapjs/test": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@tapjs/test/-/test-4.4.2.tgz", - "integrity": "sha512-YuUgTffPNGzodjeHOsaF/j0/5B/bAqtfgwqUkqa3mWdwqzlmB2AcIA6lBtLaQfbjG8wgGNwYfs3McgxkGRqxfA==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@tapjs/test/-/test-4.4.3.tgz", + "integrity": "sha512-MoJEkXNsve46xgqNtRA7zJcnm91w3oVRMdZImUMcjZnkW1u06TVsdJPJKRTRtdS6agQbWd8EsEVoYrVqWQrQUQ==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/ts-node-temp-fork-for-pr-2009": "^10.9.7", - "@tapjs/after": "3.3.4", - "@tapjs/after-each": "4.3.4", - "@tapjs/asserts": "4.3.4", - "@tapjs/before": "4.3.4", - "@tapjs/before-each": "4.3.4", - "@tapjs/chdir": "3.3.4", - "@tapjs/filter": "4.3.4", - "@tapjs/fixture": "4.3.4", - "@tapjs/intercept": "4.3.4", - "@tapjs/mock": "4.4.2", - "@tapjs/node-serialize": "4.3.4", - "@tapjs/snapshot": "4.3.4", - "@tapjs/spawn": "4.3.4", - "@tapjs/stdin": "4.3.4", - "@tapjs/typescript": "3.5.4", - "@tapjs/worker": "4.3.4", + "@tapjs/after": "3.3.5", + "@tapjs/after-each": "4.3.5", + "@tapjs/asserts": "4.3.5", + "@tapjs/before": "4.3.5", + "@tapjs/before-each": "4.3.5", + "@tapjs/chdir": "3.3.5", + "@tapjs/filter": "4.3.5", + "@tapjs/fixture": "4.3.5", + "@tapjs/intercept": "4.3.5", + "@tapjs/mock": "4.4.3", + "@tapjs/node-serialize": "4.3.5", + "@tapjs/snapshot": "4.3.5", + "@tapjs/spawn": "4.3.5", + "@tapjs/stdin": "4.3.5", + "@tapjs/typescript": "3.5.5", + "@tapjs/worker": "4.3.5", "glob": "^13.0.2", "jackspeak": "^4.2.3", "mkdirp": "^3.0.0", @@ -2588,7 +2436,7 @@ "resolve-import": "^2.4.0", "rimraf": "^6.0.0", "sync-content": "^2.0.4", - "tap-parser": "18.3.0", + "tap-parser": "18.3.1", "tshy": "^3.3.2", "typescript": "5.9", "walk-up-path": "^4.0.0" @@ -2600,13 +2448,27 @@ "node": "20 || >=22" }, "peerDependencies": { - "@tapjs/core": "4.5.2" + "@tapjs/core": "4.5.3" + } + }, + "node_modules/@tapjs/test/node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" } }, "node_modules/@tapjs/typescript": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/@tapjs/typescript/-/typescript-3.5.4.tgz", - "integrity": "sha512-z8O10CpbPYoHA876Dlg40qXtM058akP76HNQy+EdNE+AhFo7kold4YBgyjYRU7WDWNlp2B/MPgsy/OZ4PRXQWw==", + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@tapjs/typescript/-/typescript-3.5.5.tgz", + "integrity": "sha512-IY5TKQp5c7aikkpq55YnYvvLG65VrZDcop3El6snKGB2IUGFI2JxAnSarSiRyFzSMHbDLYoXzwu82/SuW3+S8A==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -2616,20 +2478,20 @@ "node": "20 || >=22" }, "peerDependencies": { - "@tapjs/core": "4.5.2" + "@tapjs/core": "4.5.3" } }, "node_modules/@tapjs/worker": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@tapjs/worker/-/worker-4.3.4.tgz", - "integrity": "sha512-AvmfwMgJXB/eOwIti/rOvw1l1eHsxUex3lyrhiC6uK5iOmbHWBOFsGHwEfc7Z4eertPM6FUqnZxkxkTEVGueig==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@tapjs/worker/-/worker-4.3.5.tgz", + "integrity": "sha512-r9teLfW75ZuZplJ8uGtVvPO1CxLjJefNQ1eNH4BHbdxsQw9ywDo/lG56V8TPR7B9XJidS15ZJ4Y5cLxI9Qba1Q==", "dev": true, "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" }, "peerDependencies": { - "@tapjs/core": "4.5.2" + "@tapjs/core": "4.5.3" } }, "node_modules/@tsconfig/node14": { @@ -2716,6 +2578,13 @@ "@types/json-schema": "*" } }, + "node_modules/@types/esrecurse": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz", + "integrity": "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/estree": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", @@ -2764,9 +2633,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.10.15", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.15.tgz", - "integrity": "sha512-BgjLoRuSr0MTI5wA6gMw9Xy0sFudAaUuvrnjgGx9wZ522fYYLA5SYJ+1Y30vTcJEG+DRCyDHx/gzQVfofYzSdg==", + "version": "24.12.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.2.tgz", + "integrity": "sha512-A1sre26ke7HDIuY/M23nd9gfB+nrmhtYyMINbjI1zHJxYteKR6qSMX56FsmjMcDb3SMcjJg5BiRRgOCC/yBD0g==", "dev": true, "license": "MIT", "dependencies": { @@ -2805,20 +2674,20 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.56.1.tgz", - "integrity": "sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A==", + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.58.0.tgz", + "integrity": "sha512-RLkVSiNuUP1C2ROIWfqX+YcUfLaSnxGE/8M+Y57lopVwg9VTYYfhuz15Yf1IzCKgZj6/rIbYTmJCUSqr76r0Wg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/type-utils": "8.56.1", - "@typescript-eslint/utils": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/scope-manager": "8.58.0", + "@typescript-eslint/type-utils": "8.58.0", + "@typescript-eslint/utils": "8.58.0", + "@typescript-eslint/visitor-keys": "8.58.0", "ignore": "^7.0.5", "natural-compare": "^1.4.0", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2828,22 +2697,22 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.56.1", + "@typescript-eslint/parser": "^8.58.0", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.56.1.tgz", - "integrity": "sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg==", + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.58.0.tgz", + "integrity": "sha512-rLoGZIf9afaRBYsPUMtvkDWykwXwUPL60HebR4JgTI8mxfFe2cQTu3AGitANp4b9B2QlVru6WzjgB2IzJKiCSA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/scope-manager": "8.58.0", + "@typescript-eslint/types": "8.58.0", + "@typescript-eslint/typescript-estree": "8.58.0", + "@typescript-eslint/visitor-keys": "8.58.0", "debug": "^4.4.3" }, "engines": { @@ -2855,18 +2724,18 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.56.1.tgz", - "integrity": "sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==", + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.58.0.tgz", + "integrity": "sha512-8Q/wBPWLQP1j16NxoPNIKpDZFMaxl7yWIoqXWYeWO+Bbd2mjgvoF0dxP2jKZg5+x49rgKdf7Ck473M8PC3V9lg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.56.1", - "@typescript-eslint/types": "^8.56.1", + "@typescript-eslint/tsconfig-utils": "^8.58.0", + "@typescript-eslint/types": "^8.58.0", "debug": "^4.4.3" }, "engines": { @@ -2877,18 +2746,18 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.1.tgz", - "integrity": "sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==", + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.58.0.tgz", + "integrity": "sha512-W1Lur1oF50FxSnNdGp3Vs6P+yBRSmZiw4IIjEeYxd8UQJwhUF0gDgDD/W/Tgmh73mxgEU3qX0Bzdl/NGuSPEpQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1" + "@typescript-eslint/types": "8.58.0", + "@typescript-eslint/visitor-keys": "8.58.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2899,9 +2768,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.56.1.tgz", - "integrity": "sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==", + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.58.0.tgz", + "integrity": "sha512-doNSZEVJsWEu4htiVC+PR6NpM+pa+a4ClH9INRWOWCUzMst/VA9c4gXq92F8GUD1rwhNvRLkgjfYtFXegXQF7A==", "dev": true, "license": "MIT", "engines": { @@ -2912,21 +2781,21 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.56.1.tgz", - "integrity": "sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==", + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.58.0.tgz", + "integrity": "sha512-aGsCQImkDIqMyx1u4PrVlbi/krmDsQUs4zAcCV6M7yPcPev+RqVlndsJy9kJ8TLihW9TZ0kbDAzctpLn5o+lOg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/utils": "8.56.1", + "@typescript-eslint/types": "8.58.0", + "@typescript-eslint/typescript-estree": "8.58.0", + "@typescript-eslint/utils": "8.58.0", "debug": "^4.4.3", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2937,13 +2806,13 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/types": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.1.tgz", - "integrity": "sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==", + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.58.0.tgz", + "integrity": "sha512-O9CjxypDT89fbHxRfETNoAnHj/i6IpRK0CvbVN3qibxlLdo5p5hcLmUuCCrHMpxiWSwKyI8mCP7qRNYuOJ0Uww==", "dev": true, "license": "MIT", "engines": { @@ -2955,21 +2824,21 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.1.tgz", - "integrity": "sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==", + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.58.0.tgz", + "integrity": "sha512-7vv5UWbHqew/dvs+D3e1RvLv1v2eeZ9txRHPnEEBUgSNLx5ghdzjHa0sgLWYVKssH+lYmV0JaWdoubo0ncGYLA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.56.1", - "@typescript-eslint/tsconfig-utils": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/visitor-keys": "8.56.1", + "@typescript-eslint/project-service": "8.58.0", + "@typescript-eslint/tsconfig-utils": "8.58.0", + "@typescript-eslint/types": "8.58.0", + "@typescript-eslint/visitor-keys": "8.58.0", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.4.0" + "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2979,20 +2848,20 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/utils": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.1.tgz", - "integrity": "sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==", + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.58.0.tgz", + "integrity": "sha512-RfeSqcFeHMHlAWzt4TBjWOAtoW9lnsAGiP3GbaX9uVgTYYrMbVnGONEfUCiSss+xMHFl+eHZiipmA8WkQ7FuNA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.56.1", - "@typescript-eslint/types": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1" + "@typescript-eslint/scope-manager": "8.58.0", + "@typescript-eslint/types": "8.58.0", + "@typescript-eslint/typescript-estree": "8.58.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3003,17 +2872,17 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.1.tgz", - "integrity": "sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==", + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.58.0.tgz", + "integrity": "sha512-XJ9UD9+bbDo4a4epraTwG3TsNPeiB9aShrUneAVXy8q4LuwowN+qu89/6ByLMINqvIMeI9H9hOHQtg/ijrYXzQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/types": "8.58.0", "eslint-visitor-keys": "^5.0.0" }, "engines": { @@ -3024,42 +2893,29 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", - "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/@typescript/native-preview": { - "version": "7.0.0-dev.20260226.1", - "resolved": "https://registry.npmjs.org/@typescript/native-preview/-/native-preview-7.0.0-dev.20260226.1.tgz", - "integrity": "sha512-DMxMGOB5cucSpvS/JUmKWr+gVz2J7YXZ7m5t9pjhXCcg/XuACqH5fpzea0cAoaMdT0WMxV9eOtHkK8ENLMPSig==", + "version": "7.0.0-dev.20260406.1", + "resolved": "https://registry.npmjs.org/@typescript/native-preview/-/native-preview-7.0.0-dev.20260406.1.tgz", + "integrity": "sha512-hlVajr01Y/ZmI9iZ7A6BgPxqXccGqxuc/PmVNdanr/LZdtsH9q11y2H3NFMaOrbPlDoeWxHvGUT3wsZllCphyg==", "dev": true, "license": "Apache-2.0", "bin": { "tsgo": "bin/tsgo.js" }, "optionalDependencies": { - "@typescript/native-preview-darwin-arm64": "7.0.0-dev.20260226.1", - "@typescript/native-preview-darwin-x64": "7.0.0-dev.20260226.1", - "@typescript/native-preview-linux-arm": "7.0.0-dev.20260226.1", - "@typescript/native-preview-linux-arm64": "7.0.0-dev.20260226.1", - "@typescript/native-preview-linux-x64": "7.0.0-dev.20260226.1", - "@typescript/native-preview-win32-arm64": "7.0.0-dev.20260226.1", - "@typescript/native-preview-win32-x64": "7.0.0-dev.20260226.1" + "@typescript/native-preview-darwin-arm64": "7.0.0-dev.20260406.1", + "@typescript/native-preview-darwin-x64": "7.0.0-dev.20260406.1", + "@typescript/native-preview-linux-arm": "7.0.0-dev.20260406.1", + "@typescript/native-preview-linux-arm64": "7.0.0-dev.20260406.1", + "@typescript/native-preview-linux-x64": "7.0.0-dev.20260406.1", + "@typescript/native-preview-win32-arm64": "7.0.0-dev.20260406.1", + "@typescript/native-preview-win32-x64": "7.0.0-dev.20260406.1" } }, "node_modules/@typescript/native-preview-darwin-arm64": { - "version": "7.0.0-dev.20260226.1", - "resolved": "https://registry.npmjs.org/@typescript/native-preview-darwin-arm64/-/native-preview-darwin-arm64-7.0.0-dev.20260226.1.tgz", - "integrity": "sha512-L2hfvBrQTjRzeUnW4QiZNaer1E9nAWNMD61fIJAfqQxlJNlfCOr7kt2tIwNamWzN56EFs+bIulGrTDx79DTFjQ==", + "version": "7.0.0-dev.20260406.1", + "resolved": "https://registry.npmjs.org/@typescript/native-preview-darwin-arm64/-/native-preview-darwin-arm64-7.0.0-dev.20260406.1.tgz", + "integrity": "sha512-q6AMrDHlD6dQHpRuGOewhvKTCBDWRgJ42678+muvHbdHkBafRSUSBRiYasUp8cInK22jlkVwNLqQn6j7Sl9zVg==", "cpu": [ "arm64" ], @@ -3071,9 +2927,9 @@ ] }, "node_modules/@typescript/native-preview-darwin-x64": { - "version": "7.0.0-dev.20260226.1", - "resolved": "https://registry.npmjs.org/@typescript/native-preview-darwin-x64/-/native-preview-darwin-x64-7.0.0-dev.20260226.1.tgz", - "integrity": "sha512-TnYwjhGlS0gNRgSN5U/JTzjdeVqxArO49T4kUfcLJTFIApVoWbnUnwl0IiF3FBL1uwW5b7BvTpqxFNBipaZnAg==", + "version": "7.0.0-dev.20260406.1", + "resolved": "https://registry.npmjs.org/@typescript/native-preview-darwin-x64/-/native-preview-darwin-x64-7.0.0-dev.20260406.1.tgz", + "integrity": "sha512-3v8LplbhJwY4GlBawgJt4ydn0sYeowGMniGiPMBl38ioYAIJOriuBvAk+S/gbOoIfLjMLq0L65fnQN+w9+i5ag==", "cpu": [ "x64" ], @@ -3085,9 +2941,9 @@ ] }, "node_modules/@typescript/native-preview-linux-arm": { - "version": "7.0.0-dev.20260226.1", - "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-arm/-/native-preview-linux-arm-7.0.0-dev.20260226.1.tgz", - "integrity": "sha512-9GDgDvh4cXPiknuEye9/UXe0i5mjC29jusPUzwgc7sPJTQaibn+t0I+lJ+GmLfAvWjKojFDbWa0+hf8FUeq6cw==", + "version": "7.0.0-dev.20260406.1", + "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-arm/-/native-preview-linux-arm-7.0.0-dev.20260406.1.tgz", + "integrity": "sha512-KLa4bK2BxnQwc9uefI8rtaso3cNiRI5Y19z9Jx7UzFJS4YaxtFp5cVjfy4FlQ55ixtUExmCJH7GhSzuVeFl/Jw==", "cpu": [ "arm" ], @@ -3099,9 +2955,9 @@ ] }, "node_modules/@typescript/native-preview-linux-arm64": { - "version": "7.0.0-dev.20260226.1", - "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-arm64/-/native-preview-linux-arm64-7.0.0-dev.20260226.1.tgz", - "integrity": "sha512-rWDc57vib1l8YAR0+Ur5BVRBJxzHpn2oG5EMFyOsQMzvjETxDHmlUm2LbR4Ma0h/jK5zuq81w39V07lK3e20fw==", + "version": "7.0.0-dev.20260406.1", + "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-arm64/-/native-preview-linux-arm64-7.0.0-dev.20260406.1.tgz", + "integrity": "sha512-hRY2czBKisYtcbwgl8HZBA7u/KKUumNlL0X2OpCK1BtQzKbHXAXi1HxUCPbwgHu4v6uGibvniny0BPA6MVrHDA==", "cpu": [ "arm64" ], @@ -3113,9 +2969,9 @@ ] }, "node_modules/@typescript/native-preview-linux-x64": { - "version": "7.0.0-dev.20260226.1", - "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-x64/-/native-preview-linux-x64-7.0.0-dev.20260226.1.tgz", - "integrity": "sha512-UKMpuliKsogcB5WmysOEnfv5LTt15ABz7aRfKXqlFUxiSWqt2Hq2kGBxiLVh4rJVzKpc20850Yx+bMxzutVQ7Q==", + "version": "7.0.0-dev.20260406.1", + "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-x64/-/native-preview-linux-x64-7.0.0-dev.20260406.1.tgz", + "integrity": "sha512-Cbcy+lSctRHNmqvLl+l8RgomL0qX3wxEPKCOIdQ/ooicsIPFbkK57Cwdhw3RSpJ+Xb2LzLdneA2Q1Vg+f/Nwxg==", "cpu": [ "x64" ], @@ -3127,9 +2983,9 @@ ] }, "node_modules/@typescript/native-preview-win32-arm64": { - "version": "7.0.0-dev.20260226.1", - "resolved": "https://registry.npmjs.org/@typescript/native-preview-win32-arm64/-/native-preview-win32-arm64-7.0.0-dev.20260226.1.tgz", - "integrity": "sha512-5X5JXtUhEIiPB8ArA1mBJTvYPbj+Q3c0zh16QWXRQmIFhrnRa5EeDcyredYPtUCpr+w10SiTxWGOfkvV88mI6A==", + "version": "7.0.0-dev.20260406.1", + "resolved": "https://registry.npmjs.org/@typescript/native-preview-win32-arm64/-/native-preview-win32-arm64-7.0.0-dev.20260406.1.tgz", + "integrity": "sha512-IFIkbYABge7f83A16awJJWUCrDG1Lw4//NCdU927i/CjgxG09q4ZJeVXcIbZQ5lJWwraiSTa6AMqvhF/tnR2KQ==", "cpu": [ "arm64" ], @@ -3141,9 +2997,9 @@ ] }, "node_modules/@typescript/native-preview-win32-x64": { - "version": "7.0.0-dev.20260226.1", - "resolved": "https://registry.npmjs.org/@typescript/native-preview-win32-x64/-/native-preview-win32-x64-7.0.0-dev.20260226.1.tgz", - "integrity": "sha512-EyfJWVZgiLiU2k9VK7q4cPAZVN4w5smGwDJYiwPES1f4/aweFmengLLYK0Bsep4DVLDCitNm6TwRfWfZpKxfWw==", + "version": "7.0.0-dev.20260406.1", + "resolved": "https://registry.npmjs.org/@typescript/native-preview-win32-x64/-/native-preview-win32-x64-7.0.0-dev.20260406.1.tgz", + "integrity": "sha512-Jk7wP6SPaELTGY+ijvpude+dmXX9WeuLQLk9qjevQXTusFVcT8vjvepxJVshSJ1+Thmxy1t9v4l1pHnM3XUMjw==", "cpu": [ "x64" ], @@ -3448,9 +3304,9 @@ ] }, "node_modules/@vercel/nft": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-1.3.2.tgz", - "integrity": "sha512-HC8venRc4Ya7vNeBsJneKHHMDDWpQie7VaKhAIOst3MKO+DES+Y/SbzSp8mFkD7OzwAE2HhHkeSuSmwS20mz3A==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-1.5.0.tgz", + "integrity": "sha512-IWTDeIoWhQ7ZtRO/JRKH+jhmeQvZYhtGPmzw/QGDY+wDCQqfm25P9yIdoAFagu4fWsK4IwZXDFIjrmp5rRm/sA==", "license": "MIT", "dependencies": { "@mapbox/node-pre-gyp": "^2.0.0", @@ -3850,9 +3706,9 @@ } }, "node_modules/baseline-browser-mapping": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz", - "integrity": "sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==", + "version": "2.10.16", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.16.tgz", + "integrity": "sha512-Lyf3aK28zpsD1yQMiiHD4RvVb6UdMoo8xzG2XzFIfR9luPzOpcBlAsT/qfB1XWS1bxWT+UtE4WmQgsp297FYOA==", "dev": true, "license": "Apache-2.0", "bin": { @@ -3878,9 +3734,9 @@ "license": "MIT" }, "node_modules/brace-expansion": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", - "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", "license": "MIT", "dependencies": { "balanced-match": "^4.0.2" @@ -3902,9 +3758,9 @@ } }, "node_modules/browserslist": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", - "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", "dev": true, "funding": [ { @@ -3922,11 +3778,11 @@ ], "license": "MIT", "dependencies": { - "baseline-browser-mapping": "^2.9.0", - "caniuse-lite": "^1.0.30001759", - "electron-to-chromium": "^1.5.263", - "node-releases": "^2.0.27", - "update-browserslist-db": "^1.2.0" + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" }, "bin": { "browserslist": "cli.js" @@ -3999,9 +3855,9 @@ } }, "node_modules/cacache": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-20.0.3.tgz", - "integrity": "sha512-3pUp4e8hv07k1QlijZu6Kn7c9+ZpWWk4j3F8N3xPuCExULobqJydKYOTj1FTq58srkJsXvO7LbGAH4C0ZU3WGw==", + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-20.0.4.tgz", + "integrity": "sha512-M3Lab8NPYlZU2exsL3bMVvMrMqgwCnMWfdZbK28bn3pK6APT/Te/I8hjRPNu1uwORY9a1eEQoifXbKPQMfMTOA==", "dev": true, "license": "ISC", "dependencies": { @@ -4014,8 +3870,7 @@ "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "p-map": "^7.0.2", - "ssri": "^13.0.0", - "unique-filename": "^5.0.0" + "ssri": "^13.0.0" }, "engines": { "node": "^20.17.0 || >=22.9.0" @@ -4112,9 +3967,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001774", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001774.tgz", - "integrity": "sha512-DDdwPGz99nmIEv216hKSgLD+D4ikHQHjBC/seF98N9CPqRX4M5mSxT9eTV6oyisnJcuzxtZy4n17yKKQYmYQOA==", + "version": "1.0.30001786", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001786.tgz", + "integrity": "sha512-4oxTZEvqmLLrERwxO76yfKM7acZo310U+v4kqexI2TL1DkkUEMT8UijrxxcnVdxR3qkVf5awGRX+4Z6aPHVKrA==", "dev": true, "funding": [ { @@ -4133,9 +3988,9 @@ "license": "CC-BY-4.0" }, "node_modules/cbor": { - "version": "10.0.11", - "resolved": "https://registry.npmjs.org/cbor/-/cbor-10.0.11.tgz", - "integrity": "sha512-vIwORDd/WyB8Nc23o2zNN5RrtFGlR6Fca61TtjkUXueI3Jf2DOZDl1zsshvBntZ3wZHBM9ztjnkXSmzQDaq3WA==", + "version": "10.0.12", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-10.0.12.tgz", + "integrity": "sha512-exQDevYd7ZQLP4moMQcZkKCVZsXLAtUSflObr3xTh4xzFIv/xBCdvCd6L259kQOUP2kcTC0jvC6PpZIf/WmRXA==", "license": "MIT", "dependencies": { "nofilter": "^3.0.2" @@ -4156,6 +4011,13 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/change-case": { + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.4.tgz", + "integrity": "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==", + "dev": true, + "license": "MIT" + }, "node_modules/chokidar": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", @@ -4261,16 +4123,16 @@ } }, "node_modules/cli-truncate": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-5.1.1.tgz", - "integrity": "sha512-SroPvNHxUnk+vIW/dOSfNqdy1sPEFkrTk6TUtqLCnBlo3N7TNYYkzzN7uSD6+jVjrdO4+p8nH7JzH6cIvUem6A==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-6.0.0.tgz", + "integrity": "sha512-3+YKIUFsohD9MIoOFPFBldjAlnfCmCDcqe6aYGFqlDTRKg80p4wg35L+j83QQ63iOlKRccEkbn8IuM++HsgEjA==", "license": "MIT", "dependencies": { - "slice-ansi": "^7.1.0", - "string-width": "^8.0.0" + "slice-ansi": "^9.0.0", + "string-width": "^8.2.0" }, "engines": { - "node": ">=20" + "node": ">=22" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -4290,12 +4152,6 @@ "node": ">=20" } }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", - "license": "MIT" - }, "node_modules/cliui/node_modules/string-width": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", @@ -4346,9 +4202,9 @@ "license": "MIT" }, "node_modules/comment-parser": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.5.tgz", - "integrity": "sha512-aRDkn3uyIlCFfk5NUA+VdwMmMsh8JGhc4hapfV4yxymHGQ3BVskMQfoXGpCo5IoBuQ9tS5iiVKhCpTcB4pW4qw==", + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.6.tgz", + "integrity": "sha512-ObxuY6vnbWTN6Od72xfwN9DbzC7Y2vv8u1Soi9ahRKL37gb6y1qk6/dgjs+3JWuXJHWvsg3BXIwzd/rkmAwavg==", "dev": true, "license": "MIT", "engines": { @@ -4420,9 +4276,9 @@ } }, "node_modules/core-js-compat": { - "version": "3.48.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.48.0.tgz", - "integrity": "sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==", + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.49.0.tgz", + "integrity": "sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==", "dev": true, "license": "MIT", "dependencies": { @@ -4434,9 +4290,9 @@ } }, "node_modules/cosmiconfig": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.1.tgz", + "integrity": "sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4752,9 +4608,9 @@ } }, "node_modules/diff": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.3.tgz", - "integrity": "sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==", + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz", + "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -4784,16 +4640,6 @@ "node": ">=8" } }, - "node_modules/dir-glob/node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", @@ -4822,37 +4668,29 @@ "node": ">= 0.4" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true, - "license": "MIT" - }, "node_modules/electron-to-chromium": { - "version": "1.5.302", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.302.tgz", - "integrity": "sha512-sM6HAN2LyK82IyPBpznDRqlTQAtuSaO+ShzFiWTvoMJLHyZ+Y39r8VMfHzwbU8MVBzQ4Wdn85+wlZl2TLGIlwg==", + "version": "1.5.331", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.331.tgz", + "integrity": "sha512-IbxXrsTlD3hRodkLnbxAPP4OuJYdWCeM3IOdT+CpcMoIwIoDfCmRpEtSPfwBXxVkg9xmBeY7Lz2Eo2TDn/HC3Q==", "dev": true, "license": "ISC" }, "node_modules/emittery": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-1.2.0.tgz", - "integrity": "sha512-KxdRyyFcS85pH3dnU8Y5yFUm2YJdaHwcBZWrfG8o89ZY9a13/f9itbN+YG3ELbBo9Pg5zvIozstmuV8bX13q6g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-2.0.0.tgz", + "integrity": "sha512-FLtgn/CGBXiX3ZtPAm5q4LWWepHChOt55J9u01WFu3dyap2U7IwptlrqoE1COR/kxwdy/DOxIBALSxIW449I1g==", "license": "MIT", "engines": { - "node": ">=14.16" + "node": ">=22" }, "funding": { "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", "license": "MIT" }, "node_modules/enhance-visitors": { @@ -4869,9 +4707,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.19.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.19.0.tgz", - "integrity": "sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==", + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", + "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==", "dev": true, "license": "MIT", "dependencies": { @@ -4918,13 +4756,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true, - "license": "MIT" - }, "node_modules/error-ex": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", @@ -5025,9 +4856,9 @@ } }, "node_modules/es-iterator-helpers": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.2.tgz", - "integrity": "sha512-BrUQ0cPTB/IwXj23HtwHjS9n7O4h9FX94b4xc5zlTHxeLgTAdzYUDyy6KdExAl9lbN5rtfe44xpjpmj9grxs5w==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.3.1.tgz", + "integrity": "sha512-zWwRvqWiuBPr0muUG/78cW3aHROFCNIQ3zpmYDpwdbnt2m+xlNyRWpHBpa2lJjSBit7BQ+RXA1iwbSmu5yJ/EQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5046,6 +4877,7 @@ "has-symbols": "^1.1.0", "internal-slot": "^1.1.0", "iterator.prototype": "^1.1.5", + "math-intrinsics": "^1.1.0", "safe-array-concat": "^1.1.3" }, "engines": { @@ -5113,9 +4945,9 @@ } }, "node_modules/es-toolkit": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.44.0.tgz", - "integrity": "sha512-6penXeZalaV88MM3cGkFZZfOoLGWshWWfdy0tWw/RlVVyhvMaWSBTOvXNeiW3e5FwdS5ePW0LGEu17zT139ktg==", + "version": "1.45.1", + "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.45.1.tgz", + "integrity": "sha512-/jhoOj/Fx+A+IIyDNOvO3TItGmlMKhtX8ISAHKE90c4b/k1tqaqEZ+uUqfpU8DMnW5cgNJv606zS55jGvza0Xw==", "dev": true, "license": "MIT", "workspaces": [ @@ -5145,25 +4977,26 @@ } }, "node_modules/eslint": { - "version": "9.39.3", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.3.tgz", - "integrity": "sha512-VmQ+sifHUbI/IcSopBCF/HO3YiHQx/AVd3UVyYL6weuwW+HvON9VYn5l6Zl1WZzPWXPNZrSQpxwkkZ/VuvJZzg==", + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.4.tgz", + "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.1", + "@eslint/config-array": "^0.21.2", "@eslint/config-helpers": "^0.4.2", "@eslint/core": "^0.17.0", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.39.3", + "@eslint/eslintrc": "^3.3.5", + "@eslint/js": "9.39.4", "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", - "ajv": "^6.12.4", + "ajv": "^6.14.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", @@ -5182,174 +5015,78 @@ "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", + "minimatch": "^3.1.5", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } - } - }, - "node_modules/eslint-compat-utils": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", - "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.5.4" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "eslint": ">=6.0.0" - } - }, - "node_modules/eslint-config-prettier": { - "version": "10.1.8", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", - "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", - "dev": true, - "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "funding": { - "url": "https://opencollective.com/eslint-config-prettier" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-config-xo": { - "version": "0.46.0", - "resolved": "https://registry.npmjs.org/eslint-config-xo/-/eslint-config-xo-0.46.0.tgz", - "integrity": "sha512-mjQUhdTCLQwHUFKf1hhSx1FFhm2jllr4uG2KjaW7gZHGAbjKoSypvo1eQvFk17lHx3bztYjZDDXQmkAZyaSlAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@stylistic/eslint-plugin": "^2.6.1", - "confusing-browser-globals": "1.0.11", - "globals": "^15.3.0" - }, - "engines": { - "node": ">=18.18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - }, - "peerDependencies": { - "eslint": ">=9.8.0" - } - }, - "node_modules/eslint-config-xo-react": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/eslint-config-xo-react/-/eslint-config-xo-react-0.28.0.tgz", - "integrity": "sha512-dKvxB9kxMNLhWKsh6yiptACet+/WwKcN7ID2hIBAmjH6le4tt8um4sJ0/aAH6y+xle9tPrasX1Wnz90muCoz9A==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-plugin-react": "^7.37.4", - "eslint-plugin-react-hooks": "^5.1.0" + "bin": { + "eslint": "bin/eslint.js" }, "engines": { - "node": ">=18.18" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://eslint.org/donate" }, "peerDependencies": { - "eslint": ">=9.18.0" + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, - "node_modules/eslint-config-xo-typescript": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-xo-typescript/-/eslint-config-xo-typescript-7.0.0.tgz", - "integrity": "sha512-Mvy5eo6PW2BWPpxLsG7Y28LciZhLhiXFZAw/H3kdia34Efudk2aWMWwAKqkEFamo/SHiyMYkqUx6DYO+YJeVVg==", + "node_modules/eslint-compat-utils": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", + "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", "dev": true, "license": "MIT", "dependencies": { - "@stylistic/eslint-plugin": "^2.6.1", - "eslint-config-xo": "^0.46.0", - "typescript-eslint": "^8.3.0" + "semver": "^7.5.4" }, "engines": { - "node": ">=18.18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" }, "peerDependencies": { - "eslint": ">=9.8.0", - "typescript": ">=5.5.0" + "eslint": ">=6.0.0" } }, - "node_modules/eslint-config-xo-typescript/node_modules/@stylistic/eslint-plugin": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.13.0.tgz", - "integrity": "sha512-RnO1SaiCFHn666wNz2QfZEFxvmiNRqhzaMXHXxXXKt+MEP7aajlPxUSMIQpKAaJfverpovEYqjBOXDq6dDcaOQ==", + "node_modules/eslint-config-prettier": { + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", + "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", "dev": true, "license": "MIT", - "dependencies": { - "@typescript-eslint/utils": "^8.13.0", - "eslint-visitor-keys": "^4.2.0", - "espree": "^10.3.0", - "estraverse": "^5.3.0", - "picomatch": "^4.0.2" + "bin": { + "eslint-config-prettier": "bin/cli.js" }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "funding": { + "url": "https://opencollective.com/eslint-config-prettier" }, "peerDependencies": { - "eslint": ">=8.40.0" + "eslint": ">=7.0.0" } }, - "node_modules/eslint-config-xo/node_modules/@stylistic/eslint-plugin": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.13.0.tgz", - "integrity": "sha512-RnO1SaiCFHn666wNz2QfZEFxvmiNRqhzaMXHXxXXKt+MEP7aajlPxUSMIQpKAaJfverpovEYqjBOXDq6dDcaOQ==", + "node_modules/eslint-config-xo-react": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/eslint-config-xo-react/-/eslint-config-xo-react-0.29.0.tgz", + "integrity": "sha512-OiA3fnGu5tkQkcFhXV1J9ZTUr25DDVoGpBdA2dowH6rNZFDed+WtxzcoUNwQNFXqWRAjsFjuxAzw3c1iAHom0Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/utils": "^8.13.0", - "eslint-visitor-keys": "^4.2.0", - "espree": "^10.3.0", - "estraverse": "^5.3.0", - "picomatch": "^4.0.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "eslint-plugin-react": "^7.37.5", + "eslint-plugin-react-hooks": "^7.0.1" }, - "peerDependencies": { - "eslint": ">=8.40.0" - } - }, - "node_modules/eslint-config-xo/node_modules/globals": { - "version": "15.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", - "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", - "dev": true, - "license": "MIT", "engines": { - "node": ">=18" + "node": ">=18.18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" + }, + "peerDependencies": { + "eslint": ">=9.18.0" } }, "node_modules/eslint-formatter-pretty": { @@ -5434,6 +5171,13 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/eslint-formatter-pretty/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, "node_modules/eslint-formatter-pretty/node_modules/irregular-plurals": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.5.0.tgz", @@ -5536,60 +5280,6 @@ } } }, - "node_modules/eslint-plugin-ava": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-ava/-/eslint-plugin-ava-15.1.0.tgz", - "integrity": "sha512-+6Zxk1uYW3mf7lxCLWIQsFYgn3hfuCMbsKc0MtqfloOz1F6fiV5/PaWEaLgkL1egrSQmnyR7vOFP1wSPJbVUbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "enhance-visitors": "^1.0.0", - "eslint-utils": "^3.0.0", - "espree": "^9.0.0", - "espurify": "^2.1.1", - "import-modules": "^2.1.0", - "micro-spelling-correcter": "^1.1.1", - "pkg-dir": "^5.0.0", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": "^18.18 || >=20" - }, - "peerDependencies": { - "eslint": ">=9" - } - }, - "node_modules/eslint-plugin-ava/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-plugin-ava/node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/eslint-plugin-es-x": { "version": "7.8.0", "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz", @@ -5613,18 +5303,19 @@ } }, "node_modules/eslint-plugin-import-x": { - "version": "4.16.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.16.1.tgz", - "integrity": "sha512-vPZZsiOKaBAIATpFE2uMI4w5IRwdv/FpQ+qZZMR4E+PeOcM4OeoEbqxRMnywdxP19TyB/3h6QBB0EWon7letSQ==", + "version": "4.16.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.16.2.tgz", + "integrity": "sha512-rM9K8UBHcWKpzQzStn1YRN2T5NvdeIfSVoKu/lKF41znQXHAUcBbYXe5wd6GNjZjTrP7viQ49n1D83x/2gYgIw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "^8.35.0", + "@package-json/types": "^0.0.12", + "@typescript-eslint/types": "^8.56.0", "comment-parser": "^1.4.1", "debug": "^4.4.1", "eslint-import-context": "^0.1.9", "is-glob": "^4.0.3", - "minimatch": "^9.0.3 || ^10.0.1", + "minimatch": "^9.0.3 || ^10.1.2", "semver": "^7.7.2", "stable-hash-x": "^0.2.0", "unrs-resolver": "^1.9.2" @@ -5636,8 +5327,8 @@ "url": "https://opencollective.com/eslint-plugin-import-x" }, "peerDependencies": { - "@typescript-eslint/utils": "^8.0.0", - "eslint": "^8.57.0 || ^9.0.0", + "@typescript-eslint/utils": "^8.56.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "eslint-import-resolver-node": "*" }, "peerDependenciesMeta": { @@ -5699,44 +5390,6 @@ "node": ">= 4" } }, - "node_modules/eslint-plugin-no-use-extend-native": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-no-use-extend-native/-/eslint-plugin-no-use-extend-native-0.7.2.tgz", - "integrity": "sha512-hUBlwaTXIO1GzTwPT6pAjvYwmSHe4XduDhAiQvur4RUujmBUFjd8Nb2+e7WQdsQ+nGHWGRlogcUWXJRGqizTWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-get-set-prop": "^2.0.0", - "is-js-type": "^3.0.0", - "is-obj-prop": "^2.0.0", - "is-proto-prop": "^3.0.1" - }, - "engines": { - "node": ">=18.18.0" - }, - "peerDependencies": { - "eslint": "^9.3.0" - } - }, - "node_modules/eslint-plugin-promise": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-7.2.1.tgz", - "integrity": "sha512-SWKjd+EuvWkYaS+uN2csvj0KoP43YTu7+phKQ5v+xw6+A0gutVX2yqCeCkC3uLCJFiPfR2dD8Es5L7yUsmvEaA==", - "dev": true, - "license": "ISC", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" - } - }, "node_modules/eslint-plugin-react": { "version": "7.37.5", "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", @@ -5771,13 +5424,20 @@ } }, "node_modules/eslint-plugin-react-hooks": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", - "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz", + "integrity": "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==", "dev": true, "license": "MIT", + "dependencies": { + "@babel/core": "^7.24.4", + "@babel/parser": "^7.24.4", + "hermes-parser": "^0.25.1", + "zod": "^3.25.0 || ^4.0.0", + "zod-validation-error": "^3.5.0 || ^4.0.0" + }, "engines": { - "node": ">=10" + "node": ">=18" }, "peerDependencies": { "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" @@ -5791,9 +5451,9 @@ "license": "MIT" }, "node_modules/eslint-plugin-react/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", "dev": true, "license": "MIT", "dependencies": { @@ -5825,65 +5485,50 @@ } }, "node_modules/eslint-plugin-unicorn": { - "version": "59.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-59.0.1.tgz", - "integrity": "sha512-EtNXYuWPUmkgSU2E7Ttn57LbRREQesIP1BiLn7OZLKodopKfDXfBUkC/0j6mpw2JExwf43Uf3qLSvrSvppgy8Q==", + "version": "63.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-63.0.0.tgz", + "integrity": "sha512-Iqecl9118uQEXYh7adylgEmGfkn5es3/mlQTLLkd4pXkIk9CTGrAbeUux+YljSa2ohXCBmQQ0+Ej1kZaFgcfkA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", - "@eslint-community/eslint-utils": "^4.5.1", - "@eslint/plugin-kit": "^0.2.7", - "ci-info": "^4.2.0", + "@babel/helper-validator-identifier": "^7.28.5", + "@eslint-community/eslint-utils": "^4.9.0", + "change-case": "^5.4.4", + "ci-info": "^4.3.1", "clean-regexp": "^1.0.0", - "core-js-compat": "^3.41.0", - "esquery": "^1.6.0", + "core-js-compat": "^3.46.0", "find-up-simple": "^1.0.1", - "globals": "^16.0.0", + "globals": "^16.4.0", "indent-string": "^5.0.0", "is-builtin-module": "^5.0.0", "jsesc": "^3.1.0", "pluralize": "^8.0.0", "regexp-tree": "^0.1.27", - "regjsparser": "^0.12.0", - "semver": "^7.7.1", - "strip-indent": "^4.0.0" + "regjsparser": "^0.13.0", + "semver": "^7.7.3", + "strip-indent": "^4.1.1" }, "engines": { - "node": "^18.20.0 || ^20.10.0 || >=21.0.0" + "node": "^20.10.0 || >=21.0.0" }, "funding": { "url": "https://github.com/sindresorhus/eslint-plugin-unicorn?sponsor=1" }, "peerDependencies": { - "eslint": ">=9.22.0" + "eslint": ">=9.38.0" } }, - "node_modules/eslint-plugin-unicorn/node_modules/@eslint/core": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz", - "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==", + "node_modules/eslint-plugin-unicorn/node_modules/globals": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", + "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, + "license": "MIT", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/eslint-plugin-unicorn/node_modules/@eslint/plugin-kit": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz", - "integrity": "sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.13.0", - "levn": "^0.4.1" + "node": ">=18" }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint-plugin-unicorn/node_modules/strip-indent": { @@ -5912,6 +5557,7 @@ "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", "dev": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -5923,46 +5569,31 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, + "license": "Apache-2.0", "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10" + "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "node_modules/eslint/node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", "dev": true, "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@types/json-schema": "^7.0.15" + }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/ansi-styles": { @@ -5971,6 +5602,7 @@ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -5986,14 +5618,16 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -6005,6 +5639,7 @@ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6022,6 +5657,7 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=10" }, @@ -6029,12 +5665,46 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/eslint/node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "is-glob": "^4.0.3" }, @@ -6048,6 +5718,7 @@ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 4" } @@ -6058,6 +5729,7 @@ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -6066,18 +5738,18 @@ } }, "node_modules/espree": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", - "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz", + "integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.15.0", + "acorn": "^8.16.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.1" + "eslint-visitor-keys": "^5.0.1" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { "url": "https://opencollective.com/eslint" @@ -6097,9 +5769,9 @@ } }, "node_modules/espurify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/espurify/-/espurify-2.1.1.tgz", - "integrity": "sha512-zttWvnkhcDyGOhSH4vO2qCBILpdCMv/MX8lp4cqgRkQoDRGK2oZxi2GfWhlP2dIXmk7BaKeOTuzbHhyC68o8XQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/espurify/-/espurify-3.2.0.tgz", + "integrity": "sha512-+jfGpC1eUu7s4M8sXnnoUsQfEQ1qqkEr/S+V47QR+GC/NODe98s4iPYq/2KrNaS1guTjHBhMS4j9N3NOObT1WQ==", "dev": true, "license": "MIT" }, @@ -6192,18 +5864,18 @@ } }, "node_modules/expect": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", - "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.3.0.tgz", + "integrity": "sha512-1zQrciTiQfRdo7qJM1uG4navm8DayFa2TgCSRlzUyNkhcJ6XUZF3hjnpkyr3VhAqPH7i/9GkG7Tv5abz6fqz0Q==", "dev": true, "license": "MIT", "dependencies": { - "@jest/expect-utils": "30.2.0", + "@jest/expect-utils": "30.3.0", "@jest/get-type": "30.1.0", - "jest-matcher-utils": "30.2.0", - "jest-message-util": "30.2.0", - "jest-mock": "30.2.0", - "jest-util": "30.2.0" + "jest-matcher-utils": "30.3.0", + "jest-message-util": "30.3.0", + "jest-mock": "30.3.0", + "jest-util": "30.3.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -6349,22 +6021,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/find-cache-directory/node_modules/pkg-dir": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-8.0.0.tgz", - "integrity": "sha512-4peoBq4Wks0riS0z8741NVv+/8IiTvqnZAr8QGgtdifrtpdXbNw/FxRS1l6NFqm4EMzuS0EDqNNx4XGaz8cuyQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up-simple": "^1.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -6409,9 +6065,9 @@ } }, "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", "dev": true, "license": "ISC" }, @@ -6540,6 +6196,16 @@ "node": ">= 0.4" } }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -6600,24 +6266,14 @@ "node": ">= 0.4" } }, - "node_modules/get-set-props": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/get-set-props/-/get-set-props-0.2.0.tgz", - "integrity": "sha512-YCmOj+4YAeEB5Dd9jfp6ETdejMet4zSxXjNkgaa4npBEKRI9uDOGB5MmAdAgi2OoFGAKshYhCbmLq2DS03CgVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.0.0" - } - }, "node_modules/get-stdin": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", - "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-10.0.0.tgz", + "integrity": "sha512-eWSePJ4zXFdqz+/Lyfopob4rIcoF/U2XfE8nJc7iZV6lnebWc9k7DoQQpX+2a9jc0AOvBsXvbe5YkjXl/MHbpg==", "dev": true, "license": "MIT", "engines": { - "node": ">=12" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -6659,9 +6315,9 @@ } }, "node_modules/get-tsconfig": { - "version": "4.13.6", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.6.tgz", - "integrity": "sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==", + "version": "4.13.7", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.7.tgz", + "integrity": "sha512-7tN6rFgBlMgpBML5j8typ92BKFi2sFQvIdpAqLA2beia5avZDrMs0FLZiM5etShWq5irVyGcGMEA1jcDaK7A/Q==", "dev": true, "license": "MIT", "dependencies": { @@ -6701,9 +6357,9 @@ } }, "node_modules/globals": { - "version": "16.5.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", - "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.4.0.tgz", + "integrity": "sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw==", "dev": true, "license": "MIT", "engines": { @@ -6731,9 +6387,9 @@ } }, "node_modules/globby": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-16.1.1.tgz", - "integrity": "sha512-dW7vl+yiAJSp6aCekaVnVJxurRv7DCOLyXqEG3RYMYUg7AuJ2jCqPkZTA8ooqC2vtnkaMcV5WfFBMuEnTu1OQg==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-16.2.0.tgz", + "integrity": "sha512-QrJia2qDf5BB/V6HYlDTs0I0lBahyjLzpGQg3KT7FnCdTonAyPy2RtY802m2k4ALx6Dp752f82WsOczEVr3l6Q==", "license": "MIT", "dependencies": { "@sindresorhus/merge-streams": "^4.0.0", @@ -6880,6 +6536,23 @@ "node": ">= 0.4" } }, + "node_modules/hermes-estree": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "dev": true, + "license": "MIT" + }, + "node_modules/hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hermes-estree": "0.25.1" + } + }, "node_modules/hosted-git-info": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-9.0.2.tgz", @@ -7020,23 +6693,11 @@ "node": ">=4" } }, - "node_modules/import-modules": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-modules/-/import-modules-2.1.0.tgz", - "integrity": "sha512-8HEWcnkbGpovH9yInoisxaSoIg9Brbul+Ju3Kqe2UsYDUBJD/iQjSgEj0zPcTDPKfPp2fs5xlv1i+JSye/m1/A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.8.19" @@ -7130,6 +6791,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/ink/node_modules/cli-truncate/node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ink/node_modules/cli-truncate/node_modules/slice-ansi": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", @@ -7147,33 +6821,30 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/ink/node_modules/emoji-regex": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "node_modules/ink/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, - "license": "MIT" + "license": "ISC" }, - "node_modules/ink/node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "node_modules/ink/node_modules/slice-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz", + "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==", "dev": true, "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" + }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/ink/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, "node_modules/ink/node_modules/string-width": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", @@ -7483,20 +7154,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-get-set-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-get-set-prop/-/is-get-set-prop-2.0.0.tgz", - "integrity": "sha512-C32bqXfHJfRwa0U5UIMqSGziZhALszXDJZ8n8mz8WZ6c6V7oYGHEWwJvftliBswypY3P3EQqdY5lpDSEKvTS1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-set-props": "^0.2.0", - "lowercase-keys": "^3.0.0" - }, - "engines": { - "node": "> 18.0.0" - } - }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -7525,6 +7182,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-in-ssh": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-in-ssh/-/is-in-ssh-1.0.0.tgz", + "integrity": "sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-inside-container": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", @@ -7544,19 +7214,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-js-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-js-type/-/is-js-type-3.0.0.tgz", - "integrity": "sha512-IbPf3g3vxm1D902xaBaYp2TUHiXZWwWRu5bM9hgKN9oAQcFaKALV6Gd13PGhXjKE5u2n8s1PhLhdke/E1fchxQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "js-types": "^4.0.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, "node_modules/is-map": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", @@ -7609,20 +7266,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-obj-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj-prop/-/is-obj-prop-2.0.0.tgz", - "integrity": "sha512-2/VFrbzXSZVJIscazpxoB+pOQx2jBOAAL9Gui4cRKxflznUNBpsr8IDvBA4UGol3e40sltLNiY3qnZv/7qSUxA==", - "dev": true, - "license": "MIT", - "dependencies": { - "lowercase-keys": "^3.0.0", - "obj-props": "^2.0.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, "node_modules/is-path-inside": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", @@ -7663,20 +7306,6 @@ "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", "license": "MIT" }, - "node_modules/is-proto-prop": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-proto-prop/-/is-proto-prop-3.0.1.tgz", - "integrity": "sha512-S8xSxNMGJO4eZD86kO46zrq2gLIhA+rN9443lQEvt8Mz/l8cxk72p/AWFmofY6uL9g9ILD6cXW6j8QQj4F3Hcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "lowercase-keys": "^3.0.0", - "prototype-properties": "^5.0.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, "node_modules/is-regex": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", @@ -7954,16 +7583,16 @@ } }, "node_modules/jest-diff": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", - "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.3.0.tgz", + "integrity": "sha512-n3q4PDQjS4LrKxfWB3Z5KNk1XjXtZTBwQp71OP0Jo03Z6V60x++K5L8k6ZrW8MY8pOFylZvHM0zsjS1RqlHJZQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/diff-sequences": "30.0.1", + "@jest/diff-sequences": "30.3.0", "@jest/get-type": "30.1.0", "chalk": "^4.1.2", - "pretty-format": "30.2.0" + "pretty-format": "30.3.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -8013,16 +7642,16 @@ } }, "node_modules/jest-matcher-utils": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", - "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.3.0.tgz", + "integrity": "sha512-HEtc9uFQgaUHkC7nLSlQL3Tph4Pjxt/yiPvkIrrDCt9jhoLIgxaubo1G+CFOnmHYMxHwwdaSN7mkIFs6ZK8OhA==", "dev": true, "license": "MIT", "dependencies": { "@jest/get-type": "30.1.0", "chalk": "^4.1.2", - "jest-diff": "30.2.0", - "pretty-format": "30.2.0" + "jest-diff": "30.3.0", + "pretty-format": "30.3.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -8062,19 +7691,19 @@ } }, "node_modules/jest-message-util": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", - "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.3.0.tgz", + "integrity": "sha512-Z/j4Bo+4ySJ+JPJN3b2Qbl9hDq3VrXmnjjGEWD/x0BCXeOXPTV1iZYYzl2X8c1MaCOL+ewMyNBcm88sboE6YWw==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", - "@jest/types": "30.2.0", + "@jest/types": "30.3.0", "@types/stack-utils": "^2.0.3", "chalk": "^4.1.2", "graceful-fs": "^4.2.11", - "micromatch": "^4.0.8", - "pretty-format": "30.2.0", + "picomatch": "^4.0.3", + "pretty-format": "30.3.0", "slash": "^3.0.0", "stack-utils": "^2.0.6" }, @@ -8126,15 +7755,15 @@ } }, "node_modules/jest-mock": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", - "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.3.0.tgz", + "integrity": "sha512-OTzICK8CpE+t4ndhKrwlIdbM6Pn8j00lvmSmq5ejiO+KxukbLjgOflKWMn3KE34EZdQm5RqTuKj+5RIEniYhog==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.2.0", + "@jest/types": "30.3.0", "@types/node": "*", - "jest-util": "30.2.0" + "jest-util": "30.3.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -8151,18 +7780,18 @@ } }, "node_modules/jest-util": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", - "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.3.0.tgz", + "integrity": "sha512-/jZDa00a3Sz7rdyu55NLrQCIrbyIkbBxareejQI315f/i8HjYN+ZWsDLLpoQSiUIEIyZF/R8fDg3BmB8AtHttg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.2.0", + "@jest/types": "30.3.0", "@types/node": "*", "chalk": "^4.1.2", "ci-info": "^4.2.0", "graceful-fs": "^4.2.11", - "picomatch": "^4.0.2" + "picomatch": "^4.0.3" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -8217,19 +7846,6 @@ "dev": true, "license": "MIT" }, - "node_modules/js-types": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-types/-/js-types-4.0.0.tgz", - "integrity": "sha512-/c+n06zvqFQGxdz1BbElF7S3nEghjNchLN1TjQnk2j10HYDaUc57rcvl6BbnziTx8NQmrg0JOs/iwRpvcYaxjQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/js-yaml": { "version": "3.14.2", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", @@ -8287,6 +7903,19 @@ "dev": true, "license": "MIT" }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/jsonc-simple-parser": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/jsonc-simple-parser/-/jsonc-simple-parser-3.0.0.tgz", @@ -8357,29 +7986,16 @@ } }, "node_modules/line-column-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/line-column-path/-/line-column-path-3.0.0.tgz", - "integrity": "sha512-Atocnm7Wr9nuvAn97yEPQa3pcQI5eLQGBz+m6iTb+CVw+IOzYB9MrYK7jI7BfC9ISnT4Fu0eiwhAScV//rp4Hw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/line-column-path/-/line-column-path-4.0.0.tgz", + "integrity": "sha512-Zvpvd56i9FRV5kaJFiiY1t+FNMEH+dGEaLyQprqKlGHBAxJXmdSk+8tVsh6b9YlxbfyyuLrhJCkzwB+AmOBZ0g==", "dev": true, "license": "MIT", "dependencies": { - "type-fest": "^2.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "unicorn-magic": "^0.4.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/line-column-path/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=12.20" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -8421,9 +8037,9 @@ } }, "node_modules/lodash": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", - "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", "license": "MIT" }, "node_modules/lodash.merge": { @@ -8431,7 +8047,8 @@ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/log-symbols": { "version": "4.1.0", @@ -8509,23 +8126,10 @@ "loose-envify": "cli.js" } }, - "node_modules/lowercase-keys": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", - "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/lru-cache": { - "version": "11.2.6", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", - "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "version": "11.3.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.1.tgz", + "integrity": "sha512-Y71HWT4hydF1IAG/2OPync4dgQ/J2iWye7eg6CuzJHI+E97tvqFPlADzxiNnjH6WSljg8ecfXMr9k6bfFuqA5w==", "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" @@ -8555,14 +8159,15 @@ "license": "ISC" }, "node_modules/make-fetch-happen": { - "version": "15.0.4", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-15.0.4.tgz", - "integrity": "sha512-vM2sG+wbVeVGYcCm16mM3d5fuem9oC28n436HjsGO3LcxoTI8LNVa4rwZDn3f76+cWyT4GGJDxjTYU1I2nr6zw==", + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-15.0.5.tgz", + "integrity": "sha512-uCbIa8jWWmQZt4dSnEStkVC6gdakiinAm4PiGsywIkguF0eWMdcjDz0ECYhUolFU3pFLOev9VNPCEygydXnddg==", "dev": true, "license": "ISC", "dependencies": { "@gar/promise-retry": "^1.0.0", "@npmcli/agent": "^4.0.0", + "@npmcli/redact": "^4.0.0", "cacache": "^20.0.1", "http-cache-semantics": "^4.1.1", "minipass": "^7.0.2", @@ -8627,16 +8232,23 @@ "node": ">=8" } }, + "node_modules/mdn-data": { + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.23.0.tgz", + "integrity": "sha512-786vq1+4079JSeu2XdcDjrhi/Ry7BWtjDl9WtGPWLiIHb2T66GvIVflZTBoSNZ5JqTtJGYEVMuFA/lbQlMOyDQ==", + "dev": true, + "license": "CC0-1.0" + }, "node_modules/memoize": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/memoize/-/memoize-10.2.0.tgz", - "integrity": "sha512-DeC6b7QBrZsRs3Y02A6A7lQyzFbsQbqgjI6UW0GigGWV+u1s25TycMr0XHZE4cJce7rY/vyw2ctMQqfDkIhUEA==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/memoize/-/memoize-11.0.0.tgz", + "integrity": "sha512-cjsfZaC9b1clqPeIVMbb5dLHSXgdgGWGxdAU3oTUUkHiwWTKTBNnSmcqWJncNjYtBi3S8Rp0c5GIiyGztR8TRA==", "license": "MIT", "dependencies": { "mimic-function": "^5.0.1" }, "engines": { - "node": ">=18" + "node": ">=22" }, "funding": { "url": "https://github.com/sindresorhus/memoize?sponsor=1" @@ -8722,9 +8334,9 @@ } }, "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "license": "MIT", "engines": { "node": ">=8.6" @@ -8766,12 +8378,12 @@ } }, "node_modules/minimatch": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", - "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^5.0.2" + "brace-expansion": "^5.0.5" }, "engines": { "node": "18 || 20 || >=22" @@ -8856,11 +8468,11 @@ } }, "node_modules/minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.7.tgz", + "integrity": "sha512-TbqTz9cUwWyHS2Dy89P3ocAGUGxKjjLuR9z8w4WUTGAVgEj17/4nhgo2Du56i0Fm3Pm30g4iA8Lcqctc76jCzA==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { "minipass": "^3.0.0" }, @@ -9136,9 +8748,9 @@ "license": "BlueOak-1.0.0" }, "node_modules/node-releases": { - "version": "2.0.27", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", - "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "version": "2.0.37", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.37.tgz", + "integrity": "sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==", "dev": true, "license": "MIT" }, @@ -9360,16 +8972,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/obj-props": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/obj-props/-/obj-props-2.0.0.tgz", - "integrity": "sha512-Q/uLAAfjdhrzQWN2czRNh3fDCgXjh7yRIkdHjDgIHTwpFP0BsshxTA3HRNffHR7Iw/XGTH30u8vdMXQ+079urA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.0.0" - } - }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -9495,38 +9097,40 @@ } }, "node_modules/open": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", - "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/open/-/open-11.0.0.tgz", + "integrity": "sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==", "dev": true, "license": "MIT", "dependencies": { - "default-browser": "^5.2.1", + "default-browser": "^5.4.0", "define-lazy-prop": "^3.0.0", + "is-in-ssh": "^1.0.0", "is-inside-container": "^1.0.0", - "wsl-utils": "^0.1.0" + "powershell-utils": "^0.1.0", + "wsl-utils": "^0.3.0" }, "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/open-editor": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/open-editor/-/open-editor-5.1.0.tgz", - "integrity": "sha512-KkNqM6FdoegD6WhY2YXmWcovOux45NV+zBped2+G3+V74zkDPkIl4cqh6hte2zNDojtwO2nBOV8U+sgziWfPrg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/open-editor/-/open-editor-6.0.0.tgz", + "integrity": "sha512-LGd2Xn6NvFlbx/lg/HK69w6Dbg+21MzJzcPDPQRgDRqc+qiR+2/SN99rzZSo7Qa1ck1hcGYig0CAo53cmXCE0w==", "dev": true, "license": "MIT", "dependencies": { - "env-editor": "^1.1.0", - "execa": "^9.3.0", - "line-column-path": "^3.0.0", - "open": "^10.1.0" + "env-editor": "^1.3.0", + "execa": "^9.6.0", + "line-column-path": "^4.0.0", + "open": "^11.0.0" }, "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -9656,9 +9260,9 @@ "license": "BlueOak-1.0.0" }, "node_modules/pacote": { - "version": "21.4.0", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-21.4.0.tgz", - "integrity": "sha512-DR7mn7HUOomAX1BORnpYy678qVIidbvOojkBscqy27dRKN+s/hLeQT1MeYYrx1Cxh62jyKjiWiDV7RTTqB+ZEQ==", + "version": "21.5.0", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-21.5.0.tgz", + "integrity": "sha512-VtZ0SB8mb5Tzw3dXDfVAIjhyVKUHZkS/ZH9/5mpKenwC9sFOXNI0JI7kEF7IMkwOnsWMFrvAZHzx1T5fmrp9FQ==", "dev": true, "license": "ISC", "dependencies": { @@ -9802,16 +9406,13 @@ } }, "node_modules/path-type": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-6.0.0.tgz", - "integrity": "sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/picocolors": { @@ -9822,9 +9423,9 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "license": "MIT", "engines": { "node": ">=12" @@ -9844,16 +9445,19 @@ } }, "node_modules/pkg-dir": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", - "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-8.0.0.tgz", + "integrity": "sha512-4peoBq4Wks0riS0z8741NVv+/8IiTvqnZAr8QGgtdifrtpdXbNw/FxRS1l6NFqm4EMzuS0EDqNNx4XGaz8cuyQ==", "dev": true, "license": "MIT", "dependencies": { - "find-up": "^5.0.0" + "find-up-simple": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/plur": { @@ -9904,6 +9508,19 @@ "node": ">= 0.4" } }, + "node_modules/powershell-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/powershell-utils/-/powershell-utils-0.1.0.tgz", + "integrity": "sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -9944,9 +9561,9 @@ } }, "node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.3.0.tgz", + "integrity": "sha512-oG4T3wCbfeuvljnyAzhBvpN45E8iOTXCU/TD3zXW80HA3dQ4ahdqMkWGiPWZvjpQwlbyHrPTWUAqUzGzv4l1JQ==", "dev": true, "license": "MIT", "dependencies": { @@ -10027,38 +9644,14 @@ "node_modules/process-on-spawn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.1.0.tgz", - "integrity": "sha512-JOnOPQ/8TZgjs1JIH/m9ni7FfimjNa/PRx7y/Wb5qdItsnhO0jE4AT7fC0HjC28DUQWDr50dwSYZLdRMlqDq3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "fromentries": "^1.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/promise-retry/node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "integrity": "sha512-JOnOPQ/8TZgjs1JIH/m9ni7FfimjNa/PRx7y/Wb5qdItsnhO0jE4AT7fC0HjC28DUQWDr50dwSYZLdRMlqDq3Q==", "dev": true, "license": "MIT", + "dependencies": { + "fromentries": "^1.2.0" + }, "engines": { - "node": ">= 4" + "node": ">=8" } }, "node_modules/prop-types": { @@ -10080,19 +9673,6 @@ "dev": true, "license": "MIT" }, - "node_modules/prototype-properties": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/prototype-properties/-/prototype-properties-5.0.0.tgz", - "integrity": "sha512-uCWE2QqnGlwvvJXTwiHTPTyHE62+zORO5hpFWhAwBGDtEtTmNZZleNLJDoFsqHCL4p/CeAP2Q1uMKFUKALuRGQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -10469,41 +10049,18 @@ "license": "MIT" }, "node_modules/regjsparser": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", - "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.1.tgz", + "integrity": "sha512-dLsljMd9sqwRkby8zhO1gSg3PnJIBFid8f4CQj/sXx+7cKx+E7u0PKhZ+U4wmhx7EfmtvnA318oVaIkAB1lRJw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "jsesc": "~3.0.2" + "jsesc": "~3.1.0" }, "bin": { "regjsparser": "bin/parser" } }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/resolve": { "version": "2.0.0-next.6", "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.6.tgz", @@ -10600,16 +10157,6 @@ "dev": true, "license": "ISC" }, - "node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, "node_modules/reusify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", @@ -10955,16 +10502,16 @@ } }, "node_modules/sinon": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-21.0.1.tgz", - "integrity": "sha512-Z0NVCW45W8Mg5oC/27/+fCqIHFnW8kpkFOq0j9XJIev4Ld0mKmERaZv5DMLAb9fGCevjKwaEeIQz5+MBXfZcDw==", + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-21.0.3.tgz", + "integrity": "sha512-0x8TQFr8EjADhSME01u1ZK31yv2+bd6Z5NrBCHVM+n4qL1wFqbxftmeyi3bwlr49FbbzRfrqSFOpyHCOh/YmYA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.1", - "@sinonjs/fake-timers": "^15.1.0", - "@sinonjs/samsam": "^8.0.3", - "diff": "^8.0.2", + "@sinonjs/fake-timers": "^15.1.1", + "@sinonjs/samsam": "^9.0.3", + "diff": "^8.0.3", "supports-color": "^7.2.0" }, "funding": { @@ -10985,16 +10532,16 @@ } }, "node_modules/slice-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz", - "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-9.0.0.tgz", + "integrity": "sha512-SO/3iYL5S3W57LLEniscOGPZgOqZUPCx6d3dB+52B80yJ0XstzsC/eV8gnA4tM3MHDrKz+OCFSLNjswdSC+/bA==", "license": "MIT", "dependencies": { - "ansi-styles": "^6.2.1", - "is-fullwidth-code-point": "^5.0.0" + "ansi-styles": "^6.2.3", + "is-fullwidth-code-point": "^5.1.0" }, "engines": { - "node": ">=18" + "node": ">=22" }, "funding": { "url": "https://github.com/chalk/slice-ansi?sponsor=1" @@ -11041,6 +10588,16 @@ "node": ">= 14" } }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/spdx-correct": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", @@ -11184,55 +10741,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/string.prototype.matchall": { "version": "4.0.12", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", @@ -11346,30 +10854,6 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/strip-final-newline": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", @@ -11402,6 +10886,7 @@ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=8" }, @@ -11502,32 +10987,45 @@ "url": "https://opencollective.com/synckit" } }, + "node_modules/tagged-tag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tagged-tag/-/tagged-tag-1.0.0.tgz", + "integrity": "sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/tap": { - "version": "21.6.2", - "resolved": "https://registry.npmjs.org/tap/-/tap-21.6.2.tgz", - "integrity": "sha512-rEuxX+EVGQ6JOEyRnLQ80fa7v5s8yutpRA11LAjP6t/B6I0/mTWkaW0NfVoX5XDX3z5x9HVEt2dojSrJLcyp9A==", + "version": "21.6.3", + "resolved": "https://registry.npmjs.org/tap/-/tap-21.6.3.tgz", + "integrity": "sha512-govkq0d6NC0FLGWzkZV+9ZZscq6unogMhSJAR8nXjFLZWR19H/ncQLsfpMsLG3INhdlsXAM+2qmb0dvtclqQkA==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "@tapjs/after": "3.3.4", - "@tapjs/after-each": "4.3.4", - "@tapjs/asserts": "4.3.4", - "@tapjs/before": "4.3.4", - "@tapjs/before-each": "4.3.4", - "@tapjs/chdir": "3.3.4", - "@tapjs/core": "4.5.2", - "@tapjs/filter": "4.3.4", - "@tapjs/fixture": "4.3.4", - "@tapjs/intercept": "4.3.4", - "@tapjs/mock": "4.4.2", - "@tapjs/node-serialize": "4.3.4", - "@tapjs/run": "4.5.2", - "@tapjs/snapshot": "4.3.4", - "@tapjs/spawn": "4.3.4", - "@tapjs/stdin": "4.3.4", - "@tapjs/test": "4.4.2", - "@tapjs/typescript": "3.5.4", - "@tapjs/worker": "4.3.4", + "@tapjs/after": "3.3.5", + "@tapjs/after-each": "4.3.5", + "@tapjs/asserts": "4.3.5", + "@tapjs/before": "4.3.5", + "@tapjs/before-each": "4.3.5", + "@tapjs/chdir": "3.3.5", + "@tapjs/core": "4.5.3", + "@tapjs/filter": "4.3.5", + "@tapjs/fixture": "4.3.5", + "@tapjs/intercept": "4.3.5", + "@tapjs/mock": "4.4.3", + "@tapjs/node-serialize": "4.3.5", + "@tapjs/run": "4.5.3", + "@tapjs/snapshot": "4.3.5", + "@tapjs/spawn": "4.3.5", + "@tapjs/stdin": "4.3.5", + "@tapjs/test": "4.4.3", + "@tapjs/typescript": "3.5.5", + "@tapjs/worker": "4.3.5", "resolve-import": "^2.4.0" }, "bin": { @@ -11541,14 +11039,14 @@ } }, "node_modules/tap-parser": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-18.3.0.tgz", - "integrity": "sha512-sa0M18e6RARfO0Lrm1zbQvb+7G4G/ThkFIJFvjeH1DKenl4xwyUgpRUCb5Jq64Xe086p4auiLvRzfpRjGd3Zow==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-18.3.1.tgz", + "integrity": "sha512-4mlzCiUQUpi8yHvqNHrwCW1OvIa6kMftozxXlJic0YsuqgcvldtyfytoG5g7Wivpu3eNo5abUXiaeqYNjyOHag==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "events-to-array": "^2.0.3", - "tap-yaml": "4.3.0" + "tap-yaml": "4.3.1" }, "bin": { "tap-parser": "bin/cmd.cjs" @@ -11558,9 +11056,9 @@ } }, "node_modules/tap-yaml": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/tap-yaml/-/tap-yaml-4.3.0.tgz", - "integrity": "sha512-48BiwXj3cUa1Lt6BLzfawJGZVihfRCY19gyjaHftQpe8ulEmB9gZW9kChQkdb0+L4YUlGWUJMpWRAJ/9bPSgVA==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/tap-yaml/-/tap-yaml-4.3.1.tgz", + "integrity": "sha512-jt4okvL5wnJKp3lDHkNlrq829+pvK94LdZPWPZlxs6nw2h8utYLVJ0CdtQl1hY1IQamKSzLQdf+bFXUlvPqqtQ==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -11572,9 +11070,9 @@ } }, "node_modules/tapable": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", - "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.2.tgz", + "integrity": "sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==", "dev": true, "license": "MIT", "engines": { @@ -11586,9 +11084,9 @@ } }, "node_modules/tar": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.9.tgz", - "integrity": "sha512-BTLcK0xsDh2+PUe9F6c2TlRp4zOOBMTkoQHQIWSIzI0R7KG46uEwq4OPk2W7bZcprBMsuaeFsqwYr7pjh6CuHg==", + "version": "7.5.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.13.tgz", + "integrity": "sha512-tOG/7GyXpFevhXVh8jOPJrmtRpOTsYqUIkVdVooZYJS/z8WhfQUX8RJILmeuJNinGAMSu1veBr4asSHFt5/hng==", "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/fs-minipass": "^4.0.0", @@ -11602,9 +11100,9 @@ } }, "node_modules/tcompare": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-9.3.0.tgz", - "integrity": "sha512-6kFTU2xlXNFU88/DAAIQvjBu5znTGx8QPnFtaKiLin2OtspHXyevSu0iUTZt4UrSfuRC6fIahRCqaQIhXlsTVQ==", + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-9.3.1.tgz", + "integrity": "sha512-FtGhC5MfbMIZzn1SBg8UlveJGpCFdota5QJ3vPzroc1RPeUOSn3XOfTzkJuo+mwdVMqNQrd2hY4OLjNI5r/cTQ==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -11749,9 +11247,9 @@ } }, "node_modules/ts-api-utils": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", - "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", "dev": true, "license": "MIT", "engines": { @@ -11988,6 +11486,20 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/tshy/node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", @@ -12125,9 +11637,9 @@ } }, "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.2.tgz", + "integrity": "sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==", "dev": true, "license": "Apache-2.0", "bin": { @@ -12139,16 +11651,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.56.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.56.1.tgz", - "integrity": "sha512-U4lM6pjmBX7J5wk4szltF7I1cGBHXZopnAXCMXb3+fZ3B/0Z3hq3wS/CCUB2NZBNAExK92mCU2tEohWuwVMsDQ==", + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.58.0.tgz", + "integrity": "sha512-e2TQzKfaI85fO+F3QywtX+tCTsu/D3WW5LVU6nz8hTFKFZ8yBJ6mSYRpXqdR3mFjPWmO0eWsTa5f+UpAOe/FMA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.56.1", - "@typescript-eslint/parser": "8.56.1", - "@typescript-eslint/typescript-estree": "8.56.1", - "@typescript-eslint/utils": "8.56.1" + "@typescript-eslint/eslint-plugin": "8.58.0", + "@typescript-eslint/parser": "8.58.0", + "@typescript-eslint/typescript-estree": "8.58.0", + "@typescript-eslint/utils": "8.58.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -12159,7 +11671,7 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/unbox-primitive": { @@ -12200,32 +11712,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/unique-filename": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-5.0.0.tgz", - "integrity": "sha512-2RaJTAvAb4owyjllTfXzFClJ7WsGxlykkPvCr9pA//LD9goVq+m4PPAeBgNodGZ7nSrntT/auWpJ6Y5IFXcfjg==", - "dev": true, - "license": "ISC", - "dependencies": { - "unique-slug": "^6.0.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/unique-slug": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-6.0.0.tgz", - "integrity": "sha512-4Lup7Ezn8W3d52/xBhZBVdx323ckxa7DEvd9kPQHppTkLoJXw6ltrBCyj5pnrxj0qKDxYMJ56CoxNuFCscdTiw==", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, "node_modules/unique-string": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", @@ -12556,13 +12042,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/widest-line/node_modules/emoji-regex": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", - "dev": true, - "license": "MIT" - }, "node_modules/widest-line/node_modules/string-width": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", @@ -12599,104 +12078,15 @@ "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", - "license": "MIT" - }, "node_modules/wrap-ansi/node_modules/string-width": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", @@ -12715,12 +12105,11 @@ } }, "node_modules/write-file-atomic": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-7.0.0.tgz", - "integrity": "sha512-YnlPC6JqnZl6aO4uRc+dx5PHguiR9S6WeoLtpxNT9wIG+BDya7ZNE1q7KOjVgaA73hKhKLpVPgJ5QA9THQ5BRg==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-7.0.1.tgz", + "integrity": "sha512-OTIk8iR8/aCRWBqvxrzxR0hgxWpnYBblY1S5hDWBQfk/VFmJwzmJgQFN3WsoUKHISv2eAwe+PpbUzyL1CKTLXg==", "license": "ISC", "dependencies": { - "imurmurhash": "^0.1.4", "signal-exit": "^4.0.1" }, "engines": { @@ -12728,9 +12117,9 @@ } }, "node_modules/ws": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", - "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz", + "integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==", "dev": true, "license": "MIT", "engines": { @@ -12750,131 +12139,261 @@ } }, "node_modules/wsl-utils": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", - "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.3.1.tgz", + "integrity": "sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==", "dev": true, "license": "MIT", "dependencies": { - "is-wsl": "^3.1.0" + "is-wsl": "^3.1.0", + "powershell-utils": "^0.1.0" }, "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/xo": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/xo/-/xo-1.2.3.tgz", - "integrity": "sha512-ykvWr88620CwealQwr7nWcPwolE6RMAVsCSBIdF3JnVdQUBAllnBJypSPsu0YYFzWTrJjQfNgH82lnWMPVTXnA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/xo/-/xo-2.0.2.tgz", + "integrity": "sha512-08L33hcKMksZyUAK7P8f6Hx5oiEgmya2NjgidvH2e3mBjot9kHz5vlxBjUPX5nparSgxBre/+xVPicat8P2WLQ==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-plugin-eslint-comments": "^4.5.0", - "@sindresorhus/tsconfig": "^7.0.0", - "@stylistic/eslint-plugin": "^4.2.0", - "@typescript-eslint/parser": "^8.37.0", + "@eslint-community/eslint-plugin-eslint-comments": "^4.7.1", + "@eslint/compat": "^2.0.2", + "@sindresorhus/tsconfig": "^8.1.0", "arrify": "^3.0.0", "cosmiconfig": "^9.0.0", "define-lazy-prop": "^3.0.0", - "eslint": "^9.31.0", - "eslint-config-prettier": "^10.1.5", - "eslint-config-xo-react": "^0.28.0", - "eslint-config-xo-typescript": "^7.0.0", - "eslint-formatter-pretty": "^6.0.1", - "eslint-plugin-ava": "^15.0.1", + "eslint": "^10.0.2", + "eslint-config-prettier": "^10.1.8", + "eslint-config-xo-react": "^0.29.0", + "eslint-config-xo-typescript": "^10.0.0", + "eslint-formatter-pretty": "^7.0.0", + "eslint-plugin-ava": "^16.0.0", "eslint-plugin-import-x": "^4.16.1", - "eslint-plugin-n": "^17.21.0", - "eslint-plugin-no-use-extend-native": "^0.7.2", - "eslint-plugin-prettier": "^5.5.1", - "eslint-plugin-promise": "^7.2.1", - "eslint-plugin-unicorn": "^59.0.1", + "eslint-plugin-n": "^17.24.0", + "eslint-plugin-prettier": "^5.5.5", + "eslint-plugin-unicorn": "^63.0.0", "find-cache-directory": "^6.0.0", - "get-stdin": "^9.0.0", - "get-tsconfig": "^4.10.1", - "globals": "^16.3.0", - "globby": "^14.1.0", - "meow": "^13.2.0", + "get-stdin": "^10.0.0", + "get-tsconfig": "^4.13.6", + "globals": "^17.3.0", + "globby": "^16.1.1", + "meow": "^14.1.0", "micromatch": "^4.0.8", - "open-editor": "^5.1.0", + "open-editor": "^6.0.0", "path-exists": "^5.0.0", - "prettier": "^3.6.2", - "type-fest": "^4.41.0", - "typescript-eslint": "^8.37.0" + "prettier": "^3.8.1", + "type-fest": "^5.4.3", + "typescript": "^5.9.3", + "typescript-eslint": "^8.56.1" }, "bin": { "xo": "dist/cli.js" }, "engines": { - "node": ">=20.17" + "node": ">=20.19" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/xo/node_modules/@sindresorhus/merge-streams": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", - "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", + "node_modules/xo/node_modules/@eslint/config-array": { + "version": "0.23.4", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.4.tgz", + "integrity": "sha512-lf19F24LSMfF8weXvW5QEtnLqW70u7kgit5e9PSx0MsHAFclGd1T9ynvWEMDT1w5J4Qt54tomGeAhdoAku1Xow==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^3.0.4", + "debug": "^4.3.1", + "minimatch": "^10.2.4" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/xo/node_modules/@eslint/config-helpers": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.4.tgz", + "integrity": "sha512-jJhqiY3wPMlWWO3370M86CPJ7pt8GmEwSLglMfQhjXal07RCvhmU0as4IuUEW5SJeunfItiEetHmSxCCe9lDBg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^1.2.0" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/xo/node_modules/@eslint/object-schema": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.4.tgz", + "integrity": "sha512-55lO/7+Yp0ISKRP0PsPtNTeNGapXaO085aELZmWCVc5SH3jfrqpuU6YgOdIxMS99ZHkQN1cXKE+cdIqwww9ptw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/xo/node_modules/@eslint/plugin-kit": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.0.tgz", + "integrity": "sha512-ejvBr8MQCbVsWNZnCwDXjUKq40MDmHalq7cJ6e9s/qzTUFIIo/afzt1Vui9T97FM/V/pN4YsFVoed5NIa96RDg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^1.2.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/xo/node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/xo/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/xo/node_modules/@sindresorhus/tsconfig": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/tsconfig/-/tsconfig-7.0.0.tgz", - "integrity": "sha512-i5K04hLAP44Af16zmDjG07E1NHuDgCM07SJAT4gY0LZSRrWYzwt4qkLem6TIbIVh0k51RkN2bF+lP+lM5eC9fw==", + "node_modules/xo/node_modules/eslint": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.2.0.tgz", + "integrity": "sha512-+L0vBFYGIpSNIt/KWTpFonPrqYvgKw1eUI5Vn7mEogrQcWtWYtNQ7dNqC+px/J0idT3BAkiWrhfS7k+Tum8TUA==", "dev": true, "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.2", + "@eslint/config-array": "^0.23.4", + "@eslint/config-helpers": "^0.5.4", + "@eslint/core": "^1.2.0", + "@eslint/plugin-kit": "^0.7.0", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.14.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^9.1.2", + "eslint-visitor-keys": "^5.0.1", + "espree": "^11.2.0", + "esquery": "^1.7.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "minimatch": "^10.2.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, "engines": { - "node": ">=18" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, - "node_modules/xo/node_modules/ansi-escapes": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.1.tgz", - "integrity": "sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==", + "node_modules/xo/node_modules/eslint-config-xo": { + "version": "0.50.0", + "resolved": "https://registry.npmjs.org/eslint-config-xo/-/eslint-config-xo-0.50.0.tgz", + "integrity": "sha512-IC+G7r8cIZkspJX5Ug97Si3aHyLatx+eZ5w/dyLuBo0HDZj13uIsZy+mlbXM18aN2/MLarIn0vq4R/a75Gmfcg==", "dev": true, "license": "MIT", + "dependencies": { + "@eslint/css": "^0.14.1", + "@eslint/json": "^1.0.0", + "@stylistic/eslint-plugin": "^5.7.1", + "confusing-browser-globals": "1.0.11", + "globals": "^17.3.0" + }, "engines": { - "node": ">=14.16" + "node": ">=20.19" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" + }, + "peerDependencies": { + "eslint": ">=10" } }, - "node_modules/xo/node_modules/emoji-regex": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "node_modules/xo/node_modules/eslint-config-xo-typescript": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-xo-typescript/-/eslint-config-xo-typescript-10.0.0.tgz", + "integrity": "sha512-WoyK93F9WCoEv4teY+Ah6PttfS+ckRkpTeasWJ/VYD5IfONzAx9muRrn3VQXf0zUJUEPGrujz02ghgGKdpsTfw==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@stylistic/eslint-plugin": "^5.10.0", + "eslint-config-xo": "^0.50.0", + "typescript-eslint": "^8.57.0" + }, + "engines": { + "node": ">=20.19" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + }, + "peerDependencies": { + "eslint": ">=10", + "typescript": ">=5.9.0" + } }, "node_modules/xo/node_modules/eslint-formatter-pretty": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/eslint-formatter-pretty/-/eslint-formatter-pretty-6.0.1.tgz", - "integrity": "sha512-znAUcXmBthdIUmlnRkPSxz3zSJHFUhfHF/nJPcCMVKg/mOa4yUie2Olqg1Ghbi5JJRBZVU3rIgzWSObvIspxMA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/eslint-formatter-pretty/-/eslint-formatter-pretty-7.0.0.tgz", + "integrity": "sha512-1CaE7Pnce8Csy+tlTEbFC2q5qgT5cJo2a0UkEOds+Y5+mI1nX3DApIhcBP8EPwV8TgTpLlzOfw8mcBJBAs3Y9Q==", "dev": true, "license": "MIT", "dependencies": { - "@types/eslint": "^8.44.6", - "ansi-escapes": "^6.2.0", - "chalk": "^5.3.0", + "@types/eslint": "^9.6.1", + "ansi-escapes": "^7.1.0", + "chalk": "^5.6.2", "eslint-rule-docs": "^1.1.235", - "log-symbols": "^6.0.0", + "log-symbols": "^7.0.1", "plur": "^5.1.0", - "string-width": "^7.0.0", - "supports-hyperlinks": "^3.0.0" + "string-width": "^8.1.0", + "supports-hyperlinks": "^4.3.0" }, "engines": { "node": ">=18" @@ -12883,15 +12402,26 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/xo/node_modules/eslint-formatter-pretty/node_modules/@types/eslint": { - "version": "8.56.12", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.12.tgz", - "integrity": "sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==", + "node_modules/xo/node_modules/eslint-plugin-ava": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-ava/-/eslint-plugin-ava-16.0.1.tgz", + "integrity": "sha512-1QsYwUulr9m9o6EFndkI0J10wZyVimmrQ1epB8zEowulW0o8fW/ahIHrPwTMT53AWbObD+8S78Uz9aKM3zS9+A==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" + "@eslint-community/eslint-utils": "^4.9.1", + "@eslint/json": "^1.0.0", + "enhance-visitors": "^1.0.0", + "espree": "^11.1.0", + "espurify": "^3.2.0", + "micro-spelling-correcter": "^1.1.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=20.19" + }, + "peerDependencies": { + "eslint": ">=10" } }, "node_modules/xo/node_modules/eslint-plugin-prettier": { @@ -12925,41 +12455,42 @@ } } }, - "node_modules/xo/node_modules/globby": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-14.1.0.tgz", - "integrity": "sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==", + "node_modules/xo/node_modules/eslint-scope": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.2.tgz", + "integrity": "sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "@sindresorhus/merge-streams": "^2.1.0", - "fast-glob": "^3.3.3", - "ignore": "^7.0.3", - "path-type": "^6.0.0", - "slash": "^5.1.0", - "unicorn-magic": "^0.3.0" + "@types/esrecurse": "^4.3.1", + "@types/estree": "^1.0.8", + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">=18" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/xo/node_modules/irregular-plurals": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.5.0.tgz", - "integrity": "sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==", + "node_modules/xo/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, - "license": "MIT", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, "engines": { - "node": ">=8" + "node": ">=10.13.0" } }, - "node_modules/xo/node_modules/is-unicode-supported": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", - "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "node_modules/xo/node_modules/has-flag": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-5.0.1.tgz", + "integrity": "sha512-CsNUt5x9LUdx6hnk/E2SZLsDyvfqANZSUq4+D3D8RzDJ2M+HDTIkF60ibS1vHaK55vzgiZw1bEPFG9yH7l33wA==", "dev": true, "license": "MIT", "engines": { @@ -12969,15 +12500,35 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/xo/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/xo/node_modules/irregular-plurals": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.5.0.tgz", + "integrity": "sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/xo/node_modules/log-symbols": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", - "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-7.0.1.tgz", + "integrity": "sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^5.3.0", - "is-unicode-supported": "^1.3.0" + "is-unicode-supported": "^2.0.0", + "yoctocolors": "^2.1.1" }, "engines": { "node": ">=18" @@ -12987,13 +12538,13 @@ } }, "node_modules/xo/node_modules/meow": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", - "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-14.1.0.tgz", + "integrity": "sha512-EDYo6VlmtnumlcBCbh1gLJ//9jvM/ndXHfVXIFrZVr6fGcwTUyCTFNTLCKuY3ffbK8L/+3Mzqnd58RojiZqHVw==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -13025,65 +12576,64 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/xo/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "node_modules/xo/node_modules/supports-color": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-10.2.2.tgz", + "integrity": "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==", "dev": true, "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, "engines": { "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, "node_modules/xo/node_modules/supports-hyperlinks": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz", - "integrity": "sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-4.4.0.tgz", + "integrity": "sha512-UKbpT93hN5Nr9go5UY7bopIB9YQlMz9nm/ct4IXt/irb5YRkn9WaqrOBJGZ5Pwvsd5FQzSVeYlGdXoCAPQZrPg==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" + "has-flag": "^5.0.1", + "supports-color": "^10.2.2" }, "engines": { - "node": ">=14.18" + "node": ">=20" }, "funding": { "url": "https://github.com/chalk/supports-hyperlinks?sponsor=1" } }, "node_modules/xo/node_modules/type-fest": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", - "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.5.0.tgz", + "integrity": "sha512-PlBfpQwiUvGViBNX84Yxwjsdhd1TUlXr6zjX7eoirtCPIr08NAmxwa+fcYBTeRQxHo9YC9wwF3m9i700sHma8g==", "dev": true, "license": "(MIT OR CC0-1.0)", + "dependencies": { + "tagged-tag": "^1.0.0" + }, "engines": { - "node": ">=16" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/xo/node_modules/unicorn-magic": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", - "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "node_modules/xo/node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=14.17" } }, "node_modules/y18n": { @@ -13105,9 +12655,9 @@ } }, "node_modules/yaml": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", - "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz", + "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==", "dev": true, "license": "ISC", "bin": { @@ -13161,12 +12711,6 @@ "node": ">=12" } }, - "node_modules/yargs/node_modules/emoji-regex": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", - "license": "MIT" - }, "node_modules/yargs/node_modules/string-width": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", @@ -13232,6 +12776,29 @@ "integrity": "sha512-iI3lT0iojZhKwT5DaFy2Ce42n3yFcLdFyOh01G7H0flMY60P8MJuVFEoJoNwXlmAyQ45GrjL6AcZmmlv8A5rbw==", "dev": true, "license": "MIT" + }, + "node_modules/zod": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", + "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-validation-error": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-4.0.2.tgz", + "integrity": "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "zod": "^3.25.0 || ^4.0.0" + } } } } diff --git a/package.json b/package.json index 6d343dafe..ceb305de1 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ }, "type": "module", "engines": { - "node": "^20.19 || ^22.20 || ^24.12 || >=25" + "node": "^22.20 || ^24.12 || >=25" }, "scripts": { "test": "./scripts/test.sh" @@ -86,66 +86,69 @@ "typescript" ], "dependencies": { - "@vercel/nft": "^1.3.2", + "@vercel/nft": "^1.5.0", "acorn": "^8.16.0", "acorn-walk": "^8.3.5", "ansi-styles": "^6.2.3", "arrgv": "^1.0.2", "arrify": "^3.0.0", "callsites": "^4.2.0", - "cbor": "^10.0.11", + "cbor": "^10.0.12", "chalk": "^5.6.2", "chunkd": "^2.0.1", "ci-info": "^4.4.0", "ci-parallel-vars": "^1.0.1", - "cli-truncate": "^5.1.1", + "cli-truncate": "^6.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", + "emittery": "^2.0.0", "figures": "^6.1.0", - "globby": "^16.1.1", + "globby": "^16.2.0", "ignore-by-default": "^2.1.0", "indent-string": "^5.0.0", "is-plain-object": "^5.0.0", "is-promise": "^4.0.0", "matcher": "^6.0.0", - "memoize": "^10.2.0", + "memoize": "^11.0.0", "ms": "^2.1.3", "p-map": "^7.0.4", "package-config": "^5.0.0", - "picomatch": "^4.0.3", + "picomatch": "^4.0.4", "plur": "^6.0.0", "pretty-ms": "^9.3.0", "resolve-cwd": "^3.0.0", "stack-utils": "^2.0.6", "supertap": "^3.0.1", "temp-dir": "^3.0.0", - "write-file-atomic": "^7.0.0", + "write-file-atomic": "^7.0.1", "yargs": "^18.0.0" }, "devDependencies": { "@ava/test": "github:avajs/test", "@ava/typescript": "^6.0.0", "@sindresorhus/tsconfig": "^8.1.0", - "@types/node": "^24.10.15", + "@types/node": "^24.12.2", "ansi-escapes": "^7.3.0", "c8": "^11.0.0", "execa": "^9.6.1", - "expect": "^30.2.0", - "sinon": "^21.0.1", - "tap": "^21.6.2", + "expect": "^30.3.0", + "sinon": "^21.0.3", + "tap": "^21.6.3", "tempy": "^3.2.0", "tsd": "^0.33.0", - "typescript": "~5.9.3", - "xo": "^1.2.3", + "typescript": "~6.0.2", + "xo": "^2.0.2", "zen-observable": "^0.10.0" }, "overrides": { "c8": { "yargs": "^18.0.0" + }, + "test-exclude": { + "glob": ">=13" } }, "peerDependencies": { diff --git a/test-tap/api.js b/test-tap/api.js index 6820efd2d..5ed41ef5f 100644 --- a/test-tap/api.js +++ b/test-tap/api.js @@ -41,8 +41,8 @@ for (const opt of options) { const tests = []; - api.on('run', plan => { - plan.status.on('stateChange', evt => { + api.on('run', ({data: plan}) => { + plan.status.on('stateChange', ({data: evt}) => { if (evt.type === 'test-failed') { tests.push({ ok: false, @@ -83,8 +83,8 @@ for (const opt of options) { const tests = []; - api.on('run', plan => { - plan.status.on('stateChange', evt => { + api.on('run', ({data: plan}) => { + plan.status.on('stateChange', ({data: evt}) => { if (evt.type === 'test-failed') { tests.push({ ok: false, @@ -131,8 +131,8 @@ for (const opt of options) { const tests = []; - api.on('run', plan => { - plan.status.on('stateChange', evt => { + api.on('run', ({data: plan}) => { + plan.status.on('stateChange', ({data: evt}) => { if (evt.type === 'test-failed') { tests.push({ ok: false, @@ -189,8 +189,8 @@ for (const opt of options) { const tests = []; const workerFailures = []; - api.on('run', plan => { - plan.status.on('stateChange', evt => { + api.on('run', ({data: plan}) => { + plan.status.on('stateChange', ({data: evt}) => { switch (evt.type) { case 'test-failed': { tests.push({ @@ -247,8 +247,8 @@ for (const opt of options) { const tests = []; const timeouts = []; - api.on('run', plan => { - plan.status.on('stateChange', evt => { + api.on('run', ({data: plan}) => { + plan.status.on('stateChange', ({data: evt}) => { switch (evt.type) { case 'test-failed': { tests.push({ @@ -457,8 +457,8 @@ for (const opt of options) { match: ['this test will match'], }); - api.on('run', plan => { - plan.status.on('stateChange', evt => { + api.on('run', ({data: plan}) => { + plan.status.on('stateChange', ({data: evt}) => { if (evt.type === 'selected-test') { t.match(evt.testFile, /match-no-match-2/); t.equal(evt.title, 'this test will match'); diff --git a/test-tap/globs.js b/test-tap/globs.js index e43123d35..cd14118d6 100644 --- a/test-tap/globs.js +++ b/test-tap/globs.js @@ -218,7 +218,7 @@ test('findFiles finds non-ignored files (just .cjs)', async t => { 'tests/baz.cjs', 'tests/deep/deep.cjs', 'tests/_foo-help.cjs', - ].map(file => path.join(fixtureDir, file)).sort(); + ].map(file => path.join(fixtureDir, file)).toSorted(); const actual = await globs.findFiles({ cwd: fixtureDir, @@ -237,7 +237,7 @@ test('findFiles finds non-ignored files (.cjs, .jsx)', async t => { 'test/foo.jsx', 'test/sub/_helper.jsx', 'test/sub/bar.jsx', - ].sort().map(file => path.join(fixtureDir, file)); + ].map(file => path.join(fixtureDir, file)); const actual = await globs.findFiles({ cwd: fixtureDir, diff --git a/test-tap/helper/report.js b/test-tap/helper/report.js index 71cc54cf4..e39ec51da 100644 --- a/test-tap/helper/report.js +++ b/test-tap/helper/report.js @@ -84,7 +84,7 @@ const run = async (type, reporter, {match = [], filter} = {}) => { options.globs = normalizeGlobs({extensions: options.extensions, files: ['*'], providers: []}); const api = new Api(options); - api.on('run', plan => reporter.startRun(plan)); + api.on('run', ({data: plan}) => reporter.startRun(plan)); const files = globbySync('*.cjs', { absolute: true, @@ -101,7 +101,7 @@ const run = async (type, reporter, {match = [], filter} = {}) => { onlyFiles: true, stats: false, unique: true, - }).sort(); + }).toSorted(); if (type !== 'watch') { return api.run({files, filter}).then(() => { reporter.endRun(); diff --git a/test-tap/hooks.js b/test-tap/hooks.js index 74c6a43d3..c54768069 100644 --- a/test-tap/hooks.js +++ b/test-tap/hooks.js @@ -33,7 +33,7 @@ test('after', t => { const array = []; return promiseEnd(new Runner({file: import.meta.url}), runner => { - runner.on('stateChange', evt => { + runner.on('stateChange', ({data: evt}) => { if (evt.type === 'test-passed') { t.pass(); } @@ -57,7 +57,7 @@ test('after not run if test failed', t => { const array = []; return promiseEnd(new Runner({file: import.meta.url}), runner => { - runner.on('stateChange', evt => { + runner.on('stateChange', ({data: evt}) => { if (evt.type === 'test-failed') { t.pass(); } @@ -80,7 +80,7 @@ test('after.always run even if test failed', t => { const array = []; return promiseEnd(new Runner({file: import.meta.url}), runner => { - runner.on('stateChange', evt => { + runner.on('stateChange', ({data: evt}) => { if (evt.type === 'test-failed') { t.pass(); } @@ -202,7 +202,7 @@ test('fail if beforeEach hook fails', t => { const array = []; return promiseEnd(new Runner({file: import.meta.url}), runner => { - runner.on('stateChange', evt => { + runner.on('stateChange', ({data: evt}) => { if (evt.type === 'hook-failed') { t.pass(); } @@ -484,7 +484,7 @@ test('ensure hooks run only around tests', t => { }); test('shared context', t => promiseEnd(new Runner({file: import.meta.url}), runner => { - runner.on('stateChange', evt => { + runner.on('stateChange', ({data: evt}) => { if (evt.type === 'hook-failed' || evt.type === 'test-failed') { t.fail(); } @@ -525,7 +525,7 @@ test('shared context', t => promiseEnd(new Runner({file: import.meta.url}), runn })); test('shared context of any type', t => promiseEnd(new Runner({file: import.meta.url}), runner => { - runner.on('stateChange', evt => { + runner.on('stateChange', ({data: evt}) => { if (evt.type === 'hook-failed' || evt.type === 'test-failed') { t.fail(); } @@ -544,7 +544,7 @@ test('shared context of any type', t => promiseEnd(new Runner({file: import.meta test('teardowns cannot be used in hooks', async t => { let hookFailure = null; await promiseEnd(new Runner({file: import.meta.url}), runner => { - runner.on('stateChange', evt => { + runner.on('stateChange', ({data: evt}) => { if (evt.type === 'hook-failed') { hookFailure = evt; } diff --git a/test-tap/reporters/default.edgecases.v20.log b/test-tap/reporters/default.edgecases.v20.log deleted file mode 100644 index 8b1c5dcdf..000000000 --- a/test-tap/reporters/default.edgecases.v20.log +++ /dev/null @@ -1,59 +0,0 @@ - ----tty-stream-chunk-separator - ⚠ Could not parse ast-syntax-error.cjs for line number selection - - SyntaxError: Unexpected token (3:11) - ----tty-stream-chunk-separator - Uncaught exception in ast-syntax-error.cjs - - ~/test-tap/fixture/report/edgecases/ast-syntax-error.cjs:3 - const fn = do { - ^^ - - SyntaxError: Unexpected token 'do' - ----tty-stream-chunk-separator - ✘ ast-syntax-error.cjs exited with a non-zero exit code: 1 ----tty-stream-chunk-separator - ✘ No tests found in ava-import-no-test-declaration.cjs ----tty-stream-chunk-separator - - Uncaught exception in import-and-use-test-member.cjs - - import-and-use-test-member.cjs:3 - - 2: -  3: test('pass', t => t.pass()); - 4: - - TypeError: test is not a function - - › Object. (test-tap/fixture/report/edgecases/import-and-use-test-member.cjs:3:1) - ----tty-stream-chunk-separator - ✘ import-and-use-test-member.cjs exited with a non-zero exit code: 1 ----tty-stream-chunk-separator - ✘ No tests found in no-ava-import.cjs, make sure to import "ava" at the top of your test file ----tty-stream-chunk-separator - ✘ Line numbers for test.cjs did not match any tests ----tty-stream-chunk-separator - - Uncaught exception in throws.cjs - - throws.cjs:1 - -  1: throw new Error('throws'); - 2: - - Error: throws - - › Object. (test-tap/fixture/report/edgecases/throws.cjs:1:7) - ----tty-stream-chunk-separator - ✘ throws.cjs exited with a non-zero exit code: 1 ----tty-stream-chunk-separator - ─ - - 3 uncaught exceptions ----tty-stream-chunk-separator diff --git a/test-tap/reporters/default.failfast.v20.log b/test-tap/reporters/default.failfast.v20.log deleted file mode 100644 index 1822d26dd..000000000 --- a/test-tap/reporters/default.failfast.v20.log +++ /dev/null @@ -1,24 +0,0 @@ - ----tty-stream-chunk-separator - ✘ [fail]: a › fails Test failed via `t.fail()` ----tty-stream-chunk-separator - ─ - - a › fails - - a.cjs:3 - - 2: -  3: test('fails', t => t.fail()); - 4: - - Test failed via `t.fail()` - - › test-tap/fixture/report/failfast/a.cjs:3:22 - - ─ - - `--fail-fast` is on. 1 test file was skipped. - - 1 test failed ----tty-stream-chunk-separator diff --git a/test-tap/reporters/default.failfast2.v20.log b/test-tap/reporters/default.failfast2.v20.log deleted file mode 100644 index 29437d029..000000000 --- a/test-tap/reporters/default.failfast2.v20.log +++ /dev/null @@ -1,24 +0,0 @@ - ----tty-stream-chunk-separator - ✘ [fail]: a › fails Test failed via `t.fail()` ----tty-stream-chunk-separator - ─ - - a › fails - - a.cjs:3 - - 2: -  3: test('fails', t => t.fail());  - 4: test('passes', t => t.pass()); - - Test failed via `t.fail()` - - › test-tap/fixture/report/failfast2/a.cjs:3:22 - - ─ - - `--fail-fast` is on. At least 1 test was skipped, as well as 1 test file. - - 1 test failed ----tty-stream-chunk-separator diff --git a/test-tap/reporters/default.only.v20.log b/test-tap/reporters/default.only.v20.log deleted file mode 100644 index f01706e56..000000000 --- a/test-tap/reporters/default.only.v20.log +++ /dev/null @@ -1,10 +0,0 @@ - ----tty-stream-chunk-separator - ✔ a › only ----tty-stream-chunk-separator - ✔ b › passes ----tty-stream-chunk-separator - ─ - - 2 tests passed ----tty-stream-chunk-separator diff --git a/test-tap/reporters/default.regular.v20.log b/test-tap/reporters/default.regular.v20.log deleted file mode 100644 index c65476560..000000000 --- a/test-tap/reporters/default.regular.v20.log +++ /dev/null @@ -1,359 +0,0 @@ - ----tty-stream-chunk-separator - Uncaught exception in bad-test-chain.cjs - - bad-test-chain.cjs:3 - - 2: -  3: test.serial.test('passes', t => t.pass()); - 4: - - TypeError: test.serial.test is not a function - - › Object. (test-tap/fixture/report/regular/bad-test-chain.cjs:3:13) - ----tty-stream-chunk-separator - ✘ bad-test-chain.cjs exited with a non-zero exit code: 1 ----tty-stream-chunk-separator - ✘ [fail]: nested-objects › format with max depth 4 ----tty-stream-chunk-separator - ✘ [fail]: nested-objects › format like with max depth 4 ----tty-stream-chunk-separator - output-in-hook › before hook - ℹ before ----tty-stream-chunk-separator - output-in-hook › beforeEach hook for passing test - ℹ beforeEach ----tty-stream-chunk-separator - output-in-hook › beforeEach hook for failing test - ℹ beforeEach ----tty-stream-chunk-separator - ✔ output-in-hook › passing test ----tty-stream-chunk-separator - ✘ [fail]: output-in-hook › failing test Test failed via `t.fail()` ----tty-stream-chunk-separator - output-in-hook › afterEach hook for passing test - ℹ afterEach ----tty-stream-chunk-separator - output-in-hook › afterEach.always hook for failing test - ℹ afterEachAlways ----tty-stream-chunk-separator - output-in-hook › afterEach.always hook for passing test - ℹ afterEachAlways ----tty-stream-chunk-separator - output-in-hook › cleanup - ℹ afterAlways ----tty-stream-chunk-separator - - [skip] test › skip ----tty-stream-chunk-separator - - [todo] test › todo ----tty-stream-chunk-separator - ✔ test › passes ----tty-stream-chunk-separator - ✘ [fail]: test › fails Test failed via `t.fail()` ----tty-stream-chunk-separator - ✔ [expected fail] test › known failure ----tty-stream-chunk-separator - ✘ [unexpected pass]: test › no longer failing Test was expected to fail, but succeeded, you should stop marking the test as failing ----tty-stream-chunk-separator - ✘ [fail]: test › logs Test failed via `t.fail()` - ℹ hello - ℹ world ----tty-stream-chunk-separator - ✘ [fail]: test › formatted ----tty-stream-chunk-separator - ✘ [fail]: test › implementation throws non-error Error thrown in test ----tty-stream-chunk-separator - ✘ [fail]: traces-in-t-throws › throws ----tty-stream-chunk-separator - ✘ [fail]: traces-in-t-throws › notThrows ----tty-stream-chunk-separator - ✘ [fail]: traces-in-t-throws › notThrowsAsync ----tty-stream-chunk-separator - ✘ [fail]: traces-in-t-throws › throwsAsync ----tty-stream-chunk-separator - ✘ [fail]: traces-in-t-throws › throwsAsync different error ----tty-stream-chunk-separator - ✔ uncaught-exception › passes ----tty-stream-chunk-separator - - Uncaught exception in uncaught-exception.cjs - - uncaught-exception.cjs:5 - - 4: setImmediate(() => { -  5: throw new Error('Can’t catch me'); - 6: }); - - Error: Can’t catch me - - › Immediate. (test-tap/fixture/report/regular/uncaught-exception.cjs:5:9) - ----tty-stream-chunk-separator - ✘ uncaught-exception.cjs exited with a non-zero exit code: 1 ----tty-stream-chunk-separator - ✔ unhandled-rejection › passes ----tty-stream-chunk-separator - ✔ unhandled-rejection › unhandled non-error rejection ----tty-stream-chunk-separator - - Unhandled rejection in unhandled-rejection.cjs - - unhandled-rejection.cjs:4 - - 3: const passes = t => { -  4: Promise.reject(new Error('Can’t catch me')); - 5: t.pass(); - - Error: Can’t catch me - - › passes (test-tap/fixture/report/regular/unhandled-rejection.cjs:4:17) - ----tty-stream-chunk-separator - Unhandled rejection in unhandled-rejection.cjs - - null - ----tty-stream-chunk-separator - ✘ unhandled-rejection.cjs exited with a non-zero exit code: 1 ----tty-stream-chunk-separator - ─ - - nested-objects › format with max depth 4 - - nested-objects.cjs:29 - - 28: }; -  29: t.deepEqual(exp, act); - 30: }); - - Difference (- actual, + expected): - - { - a: { - b: { - foo: 'bar', - }, - }, - + c: { - + d: { - + e: { - + foo: 'bar', - + }, - + }, - + }, - } - - › test-tap/fixture/report/regular/nested-objects.cjs:29:4 - - - - nested-objects › format like with max depth 4 - - nested-objects.cjs:55 - - 54: }; -  55: t.like(actual, pattern); - 56: }); - - Difference (- actual, + expected): - - { - a: { - b: { - - foo: 'bar', - + foo: 'qux', - }, - }, - } - - › test-tap/fixture/report/regular/nested-objects.cjs:55:4 - - - - output-in-hook › failing test - - output-in-hook.cjs:34 - - 33: test('failing test', t => { -  34: t.fail();  - 35: }); - - Test failed via `t.fail()` - - › test-tap/fixture/report/regular/output-in-hook.cjs:34:4 - - - - test › fails - - test.cjs:9 - - 8: -  9: test('fails', t => t.fail()); - 10: - - Test failed via `t.fail()` - - › test-tap/fixture/report/regular/test.cjs:9:22 - - - - test › no longer failing - - Test was expected to fail, but succeeded, you should stop marking the test as failing - - - - test › logs - test.cjs:18 - - 17: t.log('world'); -  18: t.fail();  - 19: }); - - Test failed via `t.fail()` - - › test-tap/fixture/report/regular/test.cjs:18:4 - - - - test › formatted - - test.cjs:22 - - 21: test('formatted', t => { -  22: t.deepEqual('foo', 'bar'); - 23: }); - - Difference (- actual, + expected): - - - 'foo' - + 'bar' - - › test-tap/fixture/report/regular/test.cjs:22:4 - - - - test › implementation throws non-error - - Error thrown in test: - - null - - - - traces-in-t-throws › throws - - traces-in-t-throws.cjs:12 - - 11: test('throws', t => { -  12: t.throws(() => throwError(), {instanceOf: TypeError}); - 13: }); - - Function threw unexpected exception: - - Error { - message: 'uh-oh', - } - - Expected instance of: - - Function TypeError {} - - › throwError (test-tap/fixture/report/regular/traces-in-t-throws.cjs:4:8) - › t.throws.instanceOf (test-tap/fixture/report/regular/traces-in-t-throws.cjs:12:17) - › test-tap/fixture/report/regular/traces-in-t-throws.cjs:12:4 - - - - traces-in-t-throws › notThrows - - traces-in-t-throws.cjs:16 - - 15: test('notThrows', t => { -  16: t.notThrows(() => throwError()); - 17: }); - - Function threw: - - Error { - message: 'uh-oh', - } - - › throwError (test-tap/fixture/report/regular/traces-in-t-throws.cjs:4:8) - › test-tap/fixture/report/regular/traces-in-t-throws.cjs:16:20 - › test-tap/fixture/report/regular/traces-in-t-throws.cjs:16:4 - - - - traces-in-t-throws › notThrowsAsync - - traces-in-t-throws.cjs:20 - - 19: test('notThrowsAsync', async t => { -  20: await t.notThrowsAsync(() => throwError()); - 21: }); - - Function threw: - - Error { - message: 'uh-oh', - } - - › throwError (test-tap/fixture/report/regular/traces-in-t-throws.cjs:4:8) - › test-tap/fixture/report/regular/traces-in-t-throws.cjs:20:31 - › test-tap/fixture/report/regular/traces-in-t-throws.cjs:20:10 - - - - traces-in-t-throws › throwsAsync - - traces-in-t-throws.cjs:24 - - 23: test('throwsAsync', async t => { -  24: await t.throwsAsync(() => throwError(), {instanceOf: TypeError}); - 25: }); - - Function threw synchronously. Use `t.throws()` instead: - - Error { - message: 'uh-oh', - } - - › throwError (test-tap/fixture/report/regular/traces-in-t-throws.cjs:4:8) - › t.throwsAsync.instanceOf (test-tap/fixture/report/regular/traces-in-t-throws.cjs:24:28) - › test-tap/fixture/report/regular/traces-in-t-throws.cjs:24:10 - - - - traces-in-t-throws › throwsAsync different error - - traces-in-t-throws.cjs:28 - - 27: test('throwsAsync different error', async t => { -  28: await t.throwsAsync(returnRejectedPromise, {instanceOf: TypeError}); - 29: }); - - Returned promise rejected with unexpected exception: - - Error { - message: 'uh-oh', - } - - Expected instance of: - - Function TypeError {} - - › returnRejectedPromise (test-tap/fixture/report/regular/traces-in-t-throws.cjs:8:24) - › test-tap/fixture/report/regular/traces-in-t-throws.cjs:28:10 - - ─ - - 13 tests failed - 1 known failure - 1 test skipped - 1 test todo - 2 unhandled rejections - 2 uncaught exceptions ----tty-stream-chunk-separator diff --git a/test-tap/reporters/default.timeoutcontextlogs.v20.log b/test-tap/reporters/default.timeoutcontextlogs.v20.log deleted file mode 100644 index 04018664f..000000000 --- a/test-tap/reporters/default.timeoutcontextlogs.v20.log +++ /dev/null @@ -1,38 +0,0 @@ - ----tty-stream-chunk-separator - ✔ a › a passes ----tty-stream-chunk-separator - ✔ a › a passes two ----tty-stream-chunk-separator -  - ✘ Timed out while running tests - - 2 tests were pending in a.cjs - - ◌ a › a slow - ℹ this slow test prints useful debug message just text - ◌ a › a slow two - ℹ another useful debug message { -  x: 5, - } - ----tty-stream-chunk-separator - ✔ b › a passes ----tty-stream-chunk-separator - ✔ b › a passes two ----tty-stream-chunk-separator -  - ✘ Timed out while running tests - - 2 tests were pending in b.cjs - - ◌ b › a slow - ℹ hello world - ◌ b › a slow two - ----tty-stream-chunk-separator - ─ - - 4 tests passed - 4 tests remained pending after a timeout ----tty-stream-chunk-separator diff --git a/test-tap/reporters/default.timeoutinmultiplefiles.v20.log b/test-tap/reporters/default.timeoutinmultiplefiles.v20.log deleted file mode 100644 index f3a678ae2..000000000 --- a/test-tap/reporters/default.timeoutinmultiplefiles.v20.log +++ /dev/null @@ -1,34 +0,0 @@ - ----tty-stream-chunk-separator - ✔ a › a passes ----tty-stream-chunk-separator - ✔ a › a passes two ----tty-stream-chunk-separator -  - ✘ Timed out while running tests - - 2 tests were pending in a.cjs - - ◌ a › a slow - ◌ a › a slow two - ----tty-stream-chunk-separator - ✔ b › b passes ----tty-stream-chunk-separator - ✔ b › b passes two ----tty-stream-chunk-separator -  - ✘ Timed out while running tests - - 3 tests were pending in b.cjs - - ◌ b › b slow - ◌ b › b slow two - ◌ b › b slow three - ----tty-stream-chunk-separator - ─ - - 4 tests passed - 5 tests remained pending after a timeout ----tty-stream-chunk-separator diff --git a/test-tap/reporters/default.timeoutinsinglefile.v20.log b/test-tap/reporters/default.timeoutinsinglefile.v20.log deleted file mode 100644 index a1059e094..000000000 --- a/test-tap/reporters/default.timeoutinsinglefile.v20.log +++ /dev/null @@ -1,20 +0,0 @@ - ----tty-stream-chunk-separator - ✔ passes ----tty-stream-chunk-separator - ✔ passes two ----tty-stream-chunk-separator -  - ✘ Timed out while running tests - - 2 tests were pending in a.cjs - - ◌ slow - ◌ slow two - ----tty-stream-chunk-separator - ─ - - 2 tests passed - 2 tests remained pending after a timeout ----tty-stream-chunk-separator diff --git a/test-tap/reporters/default.timeoutwithmatch.v20.log b/test-tap/reporters/default.timeoutwithmatch.v20.log deleted file mode 100644 index ae7070c95..000000000 --- a/test-tap/reporters/default.timeoutwithmatch.v20.log +++ /dev/null @@ -1,18 +0,0 @@ - ----tty-stream-chunk-separator - ✔ passes needle ----tty-stream-chunk-separator -  - ✘ Timed out while running tests - - 2 tests were pending in a.cjs - - ◌ slow needle - ◌ slow three needle - ----tty-stream-chunk-separator - ─ - - 1 test passed - 2 tests remained pending after a timeout ----tty-stream-chunk-separator diff --git a/test-tap/reporters/default.watch.v20.log b/test-tap/reporters/default.watch.v20.log deleted file mode 100644 index ae2dea44b..000000000 --- a/test-tap/reporters/default.watch.v20.log +++ /dev/null @@ -1,32 +0,0 @@ - ----tty-stream-chunk-separator - ✔ test › passes ----tty-stream-chunk-separator - ─ - - 1 test passed [17:19:12] - ----tty-stream-chunk-separator -──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ----tty-stream-chunk-separator - ----tty-stream-chunk-separator - ✔ test › passes ----tty-stream-chunk-separator - ─ - - 1 test passed [17:19:12] - 2 previous failures in test files that were not rerun - ----tty-stream-chunk-separator -──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ----tty-stream-chunk-separator - ----tty-stream-chunk-separator - ✔ test › passes ----tty-stream-chunk-separator - ─ - - 1 test passed [17:19:12] - ----tty-stream-chunk-separator diff --git a/test-tap/reporters/tap.edgecases.v20.log b/test-tap/reporters/tap.edgecases.v20.log deleted file mode 100644 index ae0f6cb72..000000000 --- a/test-tap/reporters/tap.edgecases.v20.log +++ /dev/null @@ -1,42 +0,0 @@ -TAP version 13 ----tty-stream-chunk-separator -not ok 1 - ~/test-tap/fixture/report/edgecases/ast-syntax-error.cjs:3 - --- - name: SyntaxError - message: Unexpected token 'do' - at: 'const fn = do {' - ... ----tty-stream-chunk-separator -not ok 2 - ast-syntax-error.cjs exited with a non-zero exit code: 1 ----tty-stream-chunk-separator -not ok 3 - No tests found in ava-import-no-test-declaration.cjs ----tty-stream-chunk-separator -not ok 4 - TypeError: test is not a function - --- - name: TypeError - message: test is not a function - at: >- - Object. - (~/test-tap/fixture/report/edgecases/import-and-use-test-member.cjs:3:1) - ... ----tty-stream-chunk-separator -not ok 5 - import-and-use-test-member.cjs exited with a non-zero exit code: 1 ----tty-stream-chunk-separator -not ok 6 - No tests found in no-ava-import.cjs, make sure to import "ava" at the top of your test file ----tty-stream-chunk-separator -not ok 7 - Error: throws - --- - name: Error - message: throws - at: 'Object. (~/test-tap/fixture/report/edgecases/throws.cjs:1:7)' - ... ----tty-stream-chunk-separator -not ok 8 - throws.cjs exited with a non-zero exit code: 1 ----tty-stream-chunk-separator - -1..0 -# tests 0 -# pass 0 -# fail 8 - ----tty-stream-chunk-separator diff --git a/test-tap/reporters/tap.failfast.v20.log b/test-tap/reporters/tap.failfast.v20.log deleted file mode 100644 index 890fcfe73..000000000 --- a/test-tap/reporters/tap.failfast.v20.log +++ /dev/null @@ -1,17 +0,0 @@ -TAP version 13 ----tty-stream-chunk-separator -not ok 1 - a › fails - --- - name: AssertionError - assertion: t.fail() - message: Test failed via `t.fail()` - at: 'ExecutionContext.fail (/lib/assert.js:287:15)' - ... ----tty-stream-chunk-separator - -1..1 -# tests 1 -# pass 0 -# fail 1 - ----tty-stream-chunk-separator diff --git a/test-tap/reporters/tap.failfast.v22.log b/test-tap/reporters/tap.failfast.v22.log index 890fcfe73..91999f942 100644 --- a/test-tap/reporters/tap.failfast.v22.log +++ b/test-tap/reporters/tap.failfast.v22.log @@ -5,7 +5,7 @@ not ok 1 - a › fails name: AssertionError assertion: t.fail() message: Test failed via `t.fail()` - at: 'ExecutionContext.fail (/lib/assert.js:287:15)' + at: 'ExecutionContext.fail (/lib/assert.js:288:15)' ... ---tty-stream-chunk-separator diff --git a/test-tap/reporters/tap.failfast.v24.log b/test-tap/reporters/tap.failfast.v24.log index 890fcfe73..91999f942 100644 --- a/test-tap/reporters/tap.failfast.v24.log +++ b/test-tap/reporters/tap.failfast.v24.log @@ -5,7 +5,7 @@ not ok 1 - a › fails name: AssertionError assertion: t.fail() message: Test failed via `t.fail()` - at: 'ExecutionContext.fail (/lib/assert.js:287:15)' + at: 'ExecutionContext.fail (/lib/assert.js:288:15)' ... ---tty-stream-chunk-separator diff --git a/test-tap/reporters/tap.failfast.v25.log b/test-tap/reporters/tap.failfast.v25.log index 890fcfe73..91999f942 100644 --- a/test-tap/reporters/tap.failfast.v25.log +++ b/test-tap/reporters/tap.failfast.v25.log @@ -5,7 +5,7 @@ not ok 1 - a › fails name: AssertionError assertion: t.fail() message: Test failed via `t.fail()` - at: 'ExecutionContext.fail (/lib/assert.js:287:15)' + at: 'ExecutionContext.fail (/lib/assert.js:288:15)' ... ---tty-stream-chunk-separator diff --git a/test-tap/reporters/tap.failfast2.v20.log b/test-tap/reporters/tap.failfast2.v20.log deleted file mode 100644 index d3212e69e..000000000 --- a/test-tap/reporters/tap.failfast2.v20.log +++ /dev/null @@ -1,19 +0,0 @@ -TAP version 13 ----tty-stream-chunk-separator -not ok 1 - a › fails - --- - name: AssertionError - assertion: t.fail() - message: Test failed via `t.fail()` - at: 'ExecutionContext.fail (/lib/assert.js:287:15)' - ... ----tty-stream-chunk-separator -# 1 test remaining in a.cjs ----tty-stream-chunk-separator - -1..2 -# tests 2 -# pass 0 -# fail 2 - ----tty-stream-chunk-separator diff --git a/test-tap/reporters/tap.failfast2.v22.log b/test-tap/reporters/tap.failfast2.v22.log index d3212e69e..25173088c 100644 --- a/test-tap/reporters/tap.failfast2.v22.log +++ b/test-tap/reporters/tap.failfast2.v22.log @@ -5,7 +5,7 @@ not ok 1 - a › fails name: AssertionError assertion: t.fail() message: Test failed via `t.fail()` - at: 'ExecutionContext.fail (/lib/assert.js:287:15)' + at: 'ExecutionContext.fail (/lib/assert.js:288:15)' ... ---tty-stream-chunk-separator # 1 test remaining in a.cjs diff --git a/test-tap/reporters/tap.failfast2.v24.log b/test-tap/reporters/tap.failfast2.v24.log index d3212e69e..25173088c 100644 --- a/test-tap/reporters/tap.failfast2.v24.log +++ b/test-tap/reporters/tap.failfast2.v24.log @@ -5,7 +5,7 @@ not ok 1 - a › fails name: AssertionError assertion: t.fail() message: Test failed via `t.fail()` - at: 'ExecutionContext.fail (/lib/assert.js:287:15)' + at: 'ExecutionContext.fail (/lib/assert.js:288:15)' ... ---tty-stream-chunk-separator # 1 test remaining in a.cjs diff --git a/test-tap/reporters/tap.failfast2.v25.log b/test-tap/reporters/tap.failfast2.v25.log index d3212e69e..25173088c 100644 --- a/test-tap/reporters/tap.failfast2.v25.log +++ b/test-tap/reporters/tap.failfast2.v25.log @@ -5,7 +5,7 @@ not ok 1 - a › fails name: AssertionError assertion: t.fail() message: Test failed via `t.fail()` - at: 'ExecutionContext.fail (/lib/assert.js:287:15)' + at: 'ExecutionContext.fail (/lib/assert.js:288:15)' ... ---tty-stream-chunk-separator # 1 test remaining in a.cjs diff --git a/test-tap/reporters/tap.only.v20.log b/test-tap/reporters/tap.only.v20.log deleted file mode 100644 index 36f42b988..000000000 --- a/test-tap/reporters/tap.only.v20.log +++ /dev/null @@ -1,13 +0,0 @@ -TAP version 13 ----tty-stream-chunk-separator -ok 1 - a › only ----tty-stream-chunk-separator -ok 2 - b › passes ----tty-stream-chunk-separator - -1..2 -# tests 2 -# pass 2 -# fail 0 - ----tty-stream-chunk-separator diff --git a/test-tap/reporters/tap.regular.v20.log b/test-tap/reporters/tap.regular.v20.log deleted file mode 100644 index 471c2c196..000000000 --- a/test-tap/reporters/tap.regular.v20.log +++ /dev/null @@ -1,258 +0,0 @@ -TAP version 13 ----tty-stream-chunk-separator -not ok 1 - TypeError: test.serial.test is not a function - --- - name: TypeError - message: test.serial.test is not a function - at: 'Object. (~/test-tap/fixture/report/regular/bad-test-chain.cjs:3:13)' - ... ----tty-stream-chunk-separator -not ok 2 - bad-test-chain.cjs exited with a non-zero exit code: 1 ----tty-stream-chunk-separator -not ok 3 - nested-objects › format with max depth 4 - --- - name: AssertionError - assertion: t.deepEqual() - details: - 'Difference (- actual, + expected):': |2- - { - a: { - b: { - foo: 'bar', - }, - }, - + c: { - + d: { - + e: { - + foo: 'bar', - + }, - + }, - + }, - } - message: '' - at: 'ExecutionContext.deepEqual (/lib/assert.js:339:15)' - ... ----tty-stream-chunk-separator -not ok 4 - nested-objects › format like with max depth 4 - --- - name: AssertionError - assertion: t.like() - details: - 'Difference (- actual, + expected):': |2- - { - a: { - b: { - - foo: 'bar', - + foo: 'qux', - }, - }, - } - message: '' - at: 'ExecutionContext.like (/lib/assert.js:391:15)' - ... ----tty-stream-chunk-separator -# output-in-hook › before hook ----tty-stream-chunk-separator -# output-in-hook › before hook ----tty-stream-chunk-separator -# before ----tty-stream-chunk-separator -# output-in-hook › beforeEach hook for passing test ----tty-stream-chunk-separator -# beforeEach ----tty-stream-chunk-separator -# output-in-hook › beforeEach hook for failing test ----tty-stream-chunk-separator -# beforeEach ----tty-stream-chunk-separator -ok 5 - output-in-hook › passing test ----tty-stream-chunk-separator -not ok 6 - output-in-hook › failing test - --- - name: AssertionError - assertion: t.fail() - message: Test failed via `t.fail()` - at: 'ExecutionContext.fail (/lib/assert.js:287:15)' - ... ----tty-stream-chunk-separator -# output-in-hook › afterEach hook for passing test ----tty-stream-chunk-separator -# afterEach ----tty-stream-chunk-separator -# output-in-hook › afterEach.always hook for failing test ----tty-stream-chunk-separator -# afterEachAlways ----tty-stream-chunk-separator -# output-in-hook › afterEach.always hook for passing test ----tty-stream-chunk-separator -# afterEachAlways ----tty-stream-chunk-separator -# output-in-hook › cleanup ----tty-stream-chunk-separator -# afterAlways ----tty-stream-chunk-separator -ok 7 - test › skip # SKIP ----tty-stream-chunk-separator -not ok 8 - test › todo # TODO ----tty-stream-chunk-separator -ok 9 - test › passes ----tty-stream-chunk-separator -not ok 10 - test › fails - --- - name: AssertionError - assertion: t.fail() - message: Test failed via `t.fail()` - at: 'ExecutionContext.fail (/lib/assert.js:287:15)' - ... ----tty-stream-chunk-separator -ok 11 - test › known failure ----tty-stream-chunk-separator -not ok 12 - test › no longer failing - --- - name: AssertionError - message: >- - Test was expected to fail, but succeeded, you should stop marking the test as - failing - at: 'Test.finish (/lib/test.js:635:7)' - ... ----tty-stream-chunk-separator -not ok 13 - test › logs -# hello -# world - --- - name: AssertionError - assertion: t.fail() - message: Test failed via `t.fail()` - at: 'ExecutionContext.fail (/lib/assert.js:287:15)' - ... ----tty-stream-chunk-separator -not ok 14 - test › formatted - --- - name: AssertionError - assertion: t.deepEqual() - details: - 'Difference (- actual, + expected):': |- - - 'foo' - + 'bar' - message: '' - at: 'ExecutionContext.deepEqual (/lib/assert.js:339:15)' - ... ----tty-stream-chunk-separator -not ok 15 - test › implementation throws non-error - --- - name: AssertionError - details: - 'Error thrown in test:': 'null' - message: Error thrown in test - at: 'Test.run (/lib/test.js:546:25)' - ... ----tty-stream-chunk-separator -not ok 16 - traces-in-t-throws › throws - --- - name: AssertionError - assertion: t.throws() - details: - 'Function threw unexpected exception:': |- - Error { - message: 'uh-oh', - } - 'Expected instance of:': 'Function TypeError {}' - message: '' - at: 'throwError (~/test-tap/fixture/report/regular/traces-in-t-throws.cjs:4:8)' - ... ----tty-stream-chunk-separator -not ok 17 - traces-in-t-throws › notThrows - --- - name: AssertionError - assertion: t.notThrows() - details: - 'Function threw:': |- - Error { - message: 'uh-oh', - } - message: '' - at: 'throwError (~/test-tap/fixture/report/regular/traces-in-t-throws.cjs:4:8)' - ... ----tty-stream-chunk-separator -not ok 18 - traces-in-t-throws › notThrowsAsync - --- - name: AssertionError - assertion: t.notThrowsAsync() - details: - 'Function threw:': |- - Error { - message: 'uh-oh', - } - message: '' - at: 'throwError (~/test-tap/fixture/report/regular/traces-in-t-throws.cjs:4:8)' - ... ----tty-stream-chunk-separator -not ok 19 - traces-in-t-throws › throwsAsync - --- - name: AssertionError - assertion: t.throwsAsync() - details: - 'Function threw synchronously. Use `t.throws()` instead:': |- - Error { - message: 'uh-oh', - } - message: '' - at: 'throwError (~/test-tap/fixture/report/regular/traces-in-t-throws.cjs:4:8)' - ... ----tty-stream-chunk-separator -not ok 20 - traces-in-t-throws › throwsAsync different error - --- - name: AssertionError - assertion: t.throwsAsync() - details: - 'Returned promise rejected with unexpected exception:': |- - Error { - message: 'uh-oh', - } - 'Expected instance of:': 'Function TypeError {}' - message: '' - at: >- - returnRejectedPromise - (~/test-tap/fixture/report/regular/traces-in-t-throws.cjs:8:24) - ... ----tty-stream-chunk-separator -ok 21 - uncaught-exception › passes ----tty-stream-chunk-separator -not ok 22 - Error: Can’t catch me - --- - name: Error - message: Can’t catch me - at: >- - Immediate. - (~/test-tap/fixture/report/regular/uncaught-exception.cjs:5:9) - ... ----tty-stream-chunk-separator -not ok 23 - uncaught-exception.cjs exited with a non-zero exit code: 1 ----tty-stream-chunk-separator -ok 24 - unhandled-rejection › passes ----tty-stream-chunk-separator -ok 25 - unhandled-rejection › unhandled non-error rejection ----tty-stream-chunk-separator -not ok 26 - Error: Can’t catch me - --- - name: Error - message: Can’t catch me - at: 'passes (~/test-tap/fixture/report/regular/unhandled-rejection.cjs:4:17)' - ... ----tty-stream-chunk-separator -not ok 27 - unhandled-rejection - --- - message: Non-native error - formatted: 'null' - ... ----tty-stream-chunk-separator -not ok 28 - unhandled-rejection.cjs exited with a non-zero exit code: 1 ----tty-stream-chunk-separator - -1..21 -# tests 20 -# pass 6 -# skip 1 -# fail 21 - ----tty-stream-chunk-separator diff --git a/test-tap/reporters/tap.regular.v22.log b/test-tap/reporters/tap.regular.v22.log index 471c2c196..f686271a1 100644 --- a/test-tap/reporters/tap.regular.v22.log +++ b/test-tap/reporters/tap.regular.v22.log @@ -30,7 +30,7 @@ not ok 3 - nested-objects › format with max depth 4 + }, } message: '' - at: 'ExecutionContext.deepEqual (/lib/assert.js:339:15)' + at: 'ExecutionContext.deepEqual (/lib/assert.js:340:15)' ... ---tty-stream-chunk-separator not ok 4 - nested-objects › format like with max depth 4 @@ -48,7 +48,7 @@ not ok 4 - nested-objects › format like with max depth 4 }, } message: '' - at: 'ExecutionContext.like (/lib/assert.js:391:15)' + at: 'ExecutionContext.like (/lib/assert.js:392:15)' ... ---tty-stream-chunk-separator # output-in-hook › before hook @@ -72,7 +72,7 @@ not ok 6 - output-in-hook › failing test name: AssertionError assertion: t.fail() message: Test failed via `t.fail()` - at: 'ExecutionContext.fail (/lib/assert.js:287:15)' + at: 'ExecutionContext.fail (/lib/assert.js:288:15)' ... ---tty-stream-chunk-separator # output-in-hook › afterEach hook for passing test @@ -102,7 +102,7 @@ not ok 10 - test › fails name: AssertionError assertion: t.fail() message: Test failed via `t.fail()` - at: 'ExecutionContext.fail (/lib/assert.js:287:15)' + at: 'ExecutionContext.fail (/lib/assert.js:288:15)' ... ---tty-stream-chunk-separator ok 11 - test › known failure @@ -123,7 +123,7 @@ not ok 13 - test › logs name: AssertionError assertion: t.fail() message: Test failed via `t.fail()` - at: 'ExecutionContext.fail (/lib/assert.js:287:15)' + at: 'ExecutionContext.fail (/lib/assert.js:288:15)' ... ---tty-stream-chunk-separator not ok 14 - test › formatted @@ -135,7 +135,7 @@ not ok 14 - test › formatted - 'foo' + 'bar' message: '' - at: 'ExecutionContext.deepEqual (/lib/assert.js:339:15)' + at: 'ExecutionContext.deepEqual (/lib/assert.js:340:15)' ... ---tty-stream-chunk-separator not ok 15 - test › implementation throws non-error diff --git a/test-tap/reporters/tap.regular.v24.log b/test-tap/reporters/tap.regular.v24.log index 471c2c196..f686271a1 100644 --- a/test-tap/reporters/tap.regular.v24.log +++ b/test-tap/reporters/tap.regular.v24.log @@ -30,7 +30,7 @@ not ok 3 - nested-objects › format with max depth 4 + }, } message: '' - at: 'ExecutionContext.deepEqual (/lib/assert.js:339:15)' + at: 'ExecutionContext.deepEqual (/lib/assert.js:340:15)' ... ---tty-stream-chunk-separator not ok 4 - nested-objects › format like with max depth 4 @@ -48,7 +48,7 @@ not ok 4 - nested-objects › format like with max depth 4 }, } message: '' - at: 'ExecutionContext.like (/lib/assert.js:391:15)' + at: 'ExecutionContext.like (/lib/assert.js:392:15)' ... ---tty-stream-chunk-separator # output-in-hook › before hook @@ -72,7 +72,7 @@ not ok 6 - output-in-hook › failing test name: AssertionError assertion: t.fail() message: Test failed via `t.fail()` - at: 'ExecutionContext.fail (/lib/assert.js:287:15)' + at: 'ExecutionContext.fail (/lib/assert.js:288:15)' ... ---tty-stream-chunk-separator # output-in-hook › afterEach hook for passing test @@ -102,7 +102,7 @@ not ok 10 - test › fails name: AssertionError assertion: t.fail() message: Test failed via `t.fail()` - at: 'ExecutionContext.fail (/lib/assert.js:287:15)' + at: 'ExecutionContext.fail (/lib/assert.js:288:15)' ... ---tty-stream-chunk-separator ok 11 - test › known failure @@ -123,7 +123,7 @@ not ok 13 - test › logs name: AssertionError assertion: t.fail() message: Test failed via `t.fail()` - at: 'ExecutionContext.fail (/lib/assert.js:287:15)' + at: 'ExecutionContext.fail (/lib/assert.js:288:15)' ... ---tty-stream-chunk-separator not ok 14 - test › formatted @@ -135,7 +135,7 @@ not ok 14 - test › formatted - 'foo' + 'bar' message: '' - at: 'ExecutionContext.deepEqual (/lib/assert.js:339:15)' + at: 'ExecutionContext.deepEqual (/lib/assert.js:340:15)' ... ---tty-stream-chunk-separator not ok 15 - test › implementation throws non-error diff --git a/test-tap/reporters/tap.regular.v25.log b/test-tap/reporters/tap.regular.v25.log index 471c2c196..f686271a1 100644 --- a/test-tap/reporters/tap.regular.v25.log +++ b/test-tap/reporters/tap.regular.v25.log @@ -30,7 +30,7 @@ not ok 3 - nested-objects › format with max depth 4 + }, } message: '' - at: 'ExecutionContext.deepEqual (/lib/assert.js:339:15)' + at: 'ExecutionContext.deepEqual (/lib/assert.js:340:15)' ... ---tty-stream-chunk-separator not ok 4 - nested-objects › format like with max depth 4 @@ -48,7 +48,7 @@ not ok 4 - nested-objects › format like with max depth 4 }, } message: '' - at: 'ExecutionContext.like (/lib/assert.js:391:15)' + at: 'ExecutionContext.like (/lib/assert.js:392:15)' ... ---tty-stream-chunk-separator # output-in-hook › before hook @@ -72,7 +72,7 @@ not ok 6 - output-in-hook › failing test name: AssertionError assertion: t.fail() message: Test failed via `t.fail()` - at: 'ExecutionContext.fail (/lib/assert.js:287:15)' + at: 'ExecutionContext.fail (/lib/assert.js:288:15)' ... ---tty-stream-chunk-separator # output-in-hook › afterEach hook for passing test @@ -102,7 +102,7 @@ not ok 10 - test › fails name: AssertionError assertion: t.fail() message: Test failed via `t.fail()` - at: 'ExecutionContext.fail (/lib/assert.js:287:15)' + at: 'ExecutionContext.fail (/lib/assert.js:288:15)' ... ---tty-stream-chunk-separator ok 11 - test › known failure @@ -123,7 +123,7 @@ not ok 13 - test › logs name: AssertionError assertion: t.fail() message: Test failed via `t.fail()` - at: 'ExecutionContext.fail (/lib/assert.js:287:15)' + at: 'ExecutionContext.fail (/lib/assert.js:288:15)' ... ---tty-stream-chunk-separator not ok 14 - test › formatted @@ -135,7 +135,7 @@ not ok 14 - test › formatted - 'foo' + 'bar' message: '' - at: 'ExecutionContext.deepEqual (/lib/assert.js:339:15)' + at: 'ExecutionContext.deepEqual (/lib/assert.js:340:15)' ... ---tty-stream-chunk-separator not ok 15 - test › implementation throws non-error diff --git a/test-tap/runner.js b/test-tap/runner.js index e604a3758..c36458915 100644 --- a/test-tap/runner.js +++ b/test-tap/runner.js @@ -45,7 +45,7 @@ test('tests must be declared synchronously', t => { test('runner emits "stateChange" events', t => { const runner = new Runner({file: import.meta.url}); - runner.on('stateChange', evt => { + runner.on('stateChange', ({data: evt}) => { if (evt.type === 'declared-test') { t.same(evt, { type: 'declared-test', @@ -65,7 +65,7 @@ test('runner emits "stateChange" events', t => { test('notifyTimeoutUpdate emits "stateChange" event', t => { const runner = new Runner({file: import.meta.url}); - runner.on('stateChange', evt => { + runner.on('stateChange', ({data: evt}) => { if (evt.type === 'test-timeout-configured') { t.same(evt, { type: 'test-timeout-configured', @@ -149,7 +149,7 @@ test('test types and titles', t => { const check = (setup, expect) => { const runner = new Runner({file: import.meta.url}); - runner.on('stateChange', evt => { + runner.on('stateChange', ({data: evt}) => { if (evt.type === 'hook-failed' || evt.type === 'test-failed' || evt.type === 'test-passed') { const expected = expect.shift(); t.equal(evt.title, expected.title); @@ -207,7 +207,7 @@ test('skip test', t => { const array = []; return promiseEnd(new Runner({file: import.meta.url}), runner => { - runner.on('stateChange', evt => { + runner.on('stateChange', ({data: evt}) => { if (evt.type === 'selected-test' && evt.skip) { t.pass(); } @@ -235,7 +235,7 @@ test('skipIf skips when condition is true, runs when false', t => { const ran = []; return promiseEnd(new Runner({file: import.meta.url}), runner => { - runner.on('stateChange', evt => { + runner.on('stateChange', ({data: evt}) => { if (evt.type === 'selected-test' && evt.skip) { t.pass(); // Skipped test emits selected-test with skip flag } @@ -264,7 +264,7 @@ test('runIf runs when condition is true, skips when false', t => { const ran = []; return promiseEnd(new Runner({file: import.meta.url}), runner => { - runner.on('stateChange', evt => { + runner.on('stateChange', ({data: evt}) => { if (evt.type === 'selected-test' && evt.skip) { t.pass(); } @@ -325,7 +325,7 @@ test('todo test', t => { const array = []; return promiseEnd(new Runner({file: import.meta.url}), runner => { - runner.on('stateChange', evt => { + runner.on('stateChange', ({data: evt}) => { if (evt.type === 'selected-test' && evt.todo) { t.pass(); } @@ -383,7 +383,7 @@ test('only test', t => { const array = []; return promiseEnd(new Runner({file: import.meta.url}), runner => { - runner.on('stateChange', evt => { + runner.on('stateChange', ({data: evt}) => { if (evt.type === 'selected-test') { t.pass(); } @@ -453,7 +453,7 @@ test('options.failFast does not stop concurrent tests from running', t => { a.pass(); }); - runner.on('stateChange', evt => { + runner.on('stateChange', ({data: evt}) => { if (evt.type === 'test-failed' || evt.type === 'test-passed') { t.equal(evt.title, expected.shift()); } @@ -487,7 +487,7 @@ test('options.failFast && options.serial stops subsequent tests from running ', a.pass(); }); - runner.on('stateChange', evt => { + runner.on('stateChange', ({data: evt}) => { if (evt.type === 'test-failed' || evt.type === 'test-passed') { t.equal(evt.title, expected.shift()); } @@ -525,7 +525,7 @@ test('options.failFast & failing serial test stops subsequent tests from running a.pass(); }); - runner.on('stateChange', evt => { + runner.on('stateChange', ({data: evt}) => { if (evt.type === 'test-failed' || evt.type === 'test-passed') { t.equal(evt.title, expected.shift()); } @@ -537,7 +537,7 @@ test('options.match will not run tests with non-matching titles', t => { t.plan(4); return promiseEnd(new Runner({file: import.meta.url, match: ['*oo', '!foo']}), runner => { - runner.on('stateChange', evt => { + runner.on('stateChange', ({data: evt}) => { if (evt.type === 'test-passed') { t.pass(); } @@ -569,7 +569,7 @@ test('options.match hold no effect on hooks with titles', t => { t.plan(2); return promiseEnd(new Runner({file: import.meta.url, match: ['!before*']}), runner => { - runner.on('stateChange', evt => { + runner.on('stateChange', ({data: evt}) => { if (evt.type === 'test-passed') { t.pass(); } @@ -592,7 +592,7 @@ test('options.match overrides .only', t => { t.plan(4); return promiseEnd(new Runner({file: import.meta.url, match: ['*oo']}), runner => { - runner.on('stateChange', evt => { + runner.on('stateChange', ({data: evt}) => { if (evt.type === 'test-passed') { t.pass(); } @@ -614,7 +614,7 @@ test('options.match matches todo tests', t => { t.plan(1); return promiseEnd(new Runner({file: import.meta.url, match: ['*oo']}), runner => { - runner.on('stateChange', evt => { + runner.on('stateChange', ({data: evt}) => { if (evt.type === 'selected-test' && evt.todo) { t.pass(); } @@ -629,7 +629,7 @@ test('macros: Additional args will be spread as additional args on implementatio t.plan(3); return promiseEnd(new Runner({file: import.meta.url}), runner => { - runner.on('stateChange', evt => { + runner.on('stateChange', ({data: evt}) => { if (evt.type === 'test-passed') { t.pass(); } @@ -670,7 +670,7 @@ test('macros: Customize test names attaching a `title` function', t => { macroFn.title = (title = 'default', firstArg = undefined) => title + firstArg; return promiseEnd(new Runner({file: import.meta.url}), runner => { - runner.on('stateChange', evt => { + runner.on('stateChange', ({data: evt}) => { if (evt.type === 'declared-test') { t.equal(evt.title, expectedTitles.shift()); } @@ -716,7 +716,7 @@ test('match applies to macros', t => { macroFn.title = (title, firstArg) => `${firstArg}bar`; return promiseEnd(new Runner({file: import.meta.url, match: ['foobar']}), runner => { - runner.on('stateChange', evt => { + runner.on('stateChange', ({data: evt}) => { if (evt.type === 'test-passed') { t.equal(evt.title, 'foobar'); } @@ -730,7 +730,7 @@ test('match applies to macros', t => { test('silently skips other tests when .only is used', t => { t.plan(1); return promiseEnd(new Runner({file: import.meta.url}), runner => { - runner.on('stateChange', evt => { + runner.on('stateChange', ({data: evt}) => { if (evt.type === 'test-passed') { t.pass(); } diff --git a/test/configurable-module-format/fixtures/test.cts b/test/configurable-module-format/fixtures/test.cts index 7823fca57..48229d52f 100644 --- a/test/configurable-module-format/fixtures/test.cts +++ b/test/configurable-module-format/fixtures/test.cts @@ -4,5 +4,5 @@ const test = require('ava'); // eslint-disable-line @typescript-eslint/no-unsafe test('always passing test', t => { // eslint-disable-line @typescript-eslint/no-unsafe-call const numberWithTypes = 0; - t.is(numberWithTypes, 0); // eslint-disable-line @typescript-eslint/no-unsafe-call + t.is(numberWithTypes, 0); // eslint-disable-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access }); diff --git a/test/helpers/exec.js b/test/helpers/exec.js index 8b9acdbf5..41396a692 100644 --- a/test/helpers/exec.js +++ b/test/helpers/exec.js @@ -114,10 +114,10 @@ export async function * exec(args, options) { let runCount = 0; const statusEvents = execaProcess.getEachMessage(); - const done = execaProcess.catch(error => { // eslint-disable-line promise/prefer-await-to-then + const done = execaProcess.catch(error => { sortStats(stats); throw Object.assign(error, {stats, runCount}); - }).then(result => ({execa: true, result})); // eslint-disable-line promise/prefer-await-to-then + }).then(result => ({execa: true, result})); while (true) { const item = await Promise.race([done, statusEvents.next()]); // eslint-disable-line no-await-in-loop diff --git a/test/snapshot-order/randomness.js b/test/snapshot-order/randomness.js index a2666109c..318d9dbe3 100644 --- a/test/snapshot-order/randomness.js +++ b/test/snapshot-order/randomness.js @@ -33,5 +33,5 @@ test('deterministic and sorted over a large, random test case', async t => { const report = fs.readFileSync(reportPath); const ids = getSnapshotIds(report); - t.deepEqual(ids, [...ids].sort((a, b) => a - b)); + t.deepEqual(ids, ids.toSorted((a, b) => a - b)); }); diff --git a/test/snapshot-order/report-declaration-order.js b/test/snapshot-order/report-declaration-order.js index ff67dcdc8..9e9edfd65 100644 --- a/test/snapshot-order/report-declaration-order.js +++ b/test/snapshot-order/report-declaration-order.js @@ -28,5 +28,5 @@ test('snapshot reports are sorted in declaration order', async t => { const report = fs.readFileSync(reportPath, {encoding: 'utf8'}); const ids = getSnapshotIds(report); - t.deepEqual(ids, [...ids].sort((a, b) => a - b)); + t.deepEqual(ids, ids.toSorted((a, b) => a - b)); }); diff --git a/test/watch-mode/fixtures/typescript-inline/tsconfig.json b/test/watch-mode/fixtures/typescript-inline/tsconfig.json index 053f136e7..38fe6bec7 100644 --- a/test/watch-mode/fixtures/typescript-inline/tsconfig.json +++ b/test/watch-mode/fixtures/typescript-inline/tsconfig.json @@ -1,12 +1,12 @@ { "extends": "@sindresorhus/tsconfig", "compilerOptions": { + "rootDir": "./src", "outDir": "build", + "types": [ + "@types/node", + ], }, - "types": [ - "node_modules/@types/node", - "../../../../node_modules/@types/node", - ], "include": [ "src" ], diff --git a/test/watch-mode/fixtures/typescript-precompiled/tsconfig.json b/test/watch-mode/fixtures/typescript-precompiled/tsconfig.json index f681bdacd..b1b1bd72f 100644 --- a/test/watch-mode/fixtures/typescript-precompiled/tsconfig.json +++ b/test/watch-mode/fixtures/typescript-precompiled/tsconfig.json @@ -1,11 +1,12 @@ { "extends": "@sindresorhus/tsconfig", "compilerOptions": { + "rootDir": "./src", "outDir": "build", + "types": [ + "../../../../node_modules/@types/node", + ], }, - "types": [ - "../../../../node_modules/@types/node", - ], "include": [ "src" ], diff --git a/test/watch-mode/helpers/watch.js b/test/watch-mode/helpers/watch.js index 914ef6133..54d3e2843 100644 --- a/test/watch-mode/helpers/watch.js +++ b/test/watch-mode/helpers/watch.js @@ -99,7 +99,7 @@ export const withFixture = fixture => async (t, task) => { t.timeout(30_000); - const promise = Promise.all([delay(5000, null, {ref: false}), next?.()]).finally(() => { // eslint-disable-line promise/prefer-await-to-then + const promise = Promise.all([delay(5000, null, {ref: false}), next?.()]).finally(() => { if (idlePromise === promise) { idlePromise = new Promise(() => {}); assertingIdle = false; @@ -109,7 +109,7 @@ export const withFixture = fixture => async (t, task) => { t.fail('Watcher performed a test run while it should have been idle'); } } - }).then(() => ({})); // eslint-disable-line promise/prefer-await-to-then + }).then(() => ({})); idlePromise = promise; await promise; diff --git a/tsconfig.json b/tsconfig.json index e84eb7f09..5ce9244c4 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,10 @@ { "extends": "@sindresorhus/tsconfig", "compilerOptions": { - "rootDir": "." + "rootDir": ".", + "types": [ + "node" + ] }, "include": [ "test", diff --git a/xo.config.mjs b/xo.config.mjs index 156153829..bbdee968b 100644 --- a/xo.config.mjs +++ b/xo.config.mjs @@ -1,8 +1,8 @@ -import pluginAva from 'eslint-plugin-ava'; // eslint-disable-line import-x/no-extraneous-dependencies, n/no-extraneous-import +import pluginAva from './node_modules/xo/node_modules/eslint-plugin-ava/index.js'; // The AVA rules resolve the AVA config, however we have many fake AVA configs in the fixtures and so the rules must // be disabled for those files. This sets up a rules config that does so, based on the recommended rules. -const disabledAvaRules = Object.fromEntries(Object.keys(pluginAva.configs['flat/recommended'].rules).map(rule => [rule, 'off'])); +const disabledAvaRules = Object.fromEntries(pluginAva.configs.recommended.flatMap(({rules}) => Object.keys(rules).map(rule => [rule, 'off']))); /** @type {import('xo').FlatXoConfig} */ const xoConfig = [ @@ -18,6 +18,7 @@ const xoConfig = [ }, { rules: { + '@stylistic/curly-newline': 'off', 'import-x/order': [ 'error', { @@ -28,6 +29,7 @@ const xoConfig = [ }, ], 'import-x/newline-after-import': 'error', + 'require-unicode-regexp': 'off', 'unicorn/require-post-message-target-origin': 'off', 'unicorn/prefer-event-target': 'off', 'unicorn/prevent-abbreviations': 'off', @@ -36,15 +38,17 @@ const xoConfig = [ { files: '**/*.d.*(c|m)ts', rules: { + '@stylistic/indent': 'off', + '@stylistic/operator-linebreak': 'off', + '@stylistic/type-generic-spacing': 'off', 'import-x/extensions': 'off', 'n/file-extension-in-import': 'off', }, }, { - files: 'examples/**', + files: ['examples/**', 'media/**'], rules: { - 'ava/no-ignored-test-files': 'off', - 'ava/no-only-test': 'off', + ...disabledAvaRules, }, }, { @@ -54,6 +58,7 @@ const xoConfig = [ ], rules: { ...disabledAvaRules, + '@typescript-eslint/no-unsafe-type-assertion': 'off', 'import-x/no-extraneous-dependencies': 'off', 'n/no-extraneous-import': 'off', 'unicorn/no-empty-file': 'off', @@ -97,7 +102,7 @@ const xoConfig = [ 'import-x/no-anonymous-default-export': 'off', 'max-lines': 'off', 'n/prefer-global/process': 'off', - 'promise/prefer-await-to-then': 'off', + // 'promise/prefer-await-to-then': 'off', 'unicorn/error-message': 'off', }, },