From 4307458ccd0e938e2b07c91e229aac33591572a8 Mon Sep 17 00:00:00 2001 From: Miles Nash Date: Mon, 26 Jan 2026 23:44:16 +0000 Subject: [PATCH 01/28] fix: remove noise from test output --- scripts/prepublishOnly.test.js | 22 ++++++------- src/components/Sprite.test.js | 2 +- src/lib/codegenerator/generator.test.js | 42 +++++++++++++++++++++++-- 3 files changed, 52 insertions(+), 14 deletions(-) diff --git a/scripts/prepublishOnly.test.js b/scripts/prepublishOnly.test.js index 823fa8a0..2158de16 100644 --- a/scripts/prepublishOnly.test.js +++ b/scripts/prepublishOnly.test.js @@ -232,7 +232,7 @@ test('processDirectory - should handle empty directory', (assert) => { }) test('processFile - should create backup with .orig.js extension', (assert) => { - const filePath = path.resolve(process.cwd(), 'Component.js') + const filePath = path.resolve(process.cwd(), 'src', 'component.js') const expectedBackup = path.resolve(process.cwd(), 'Component.orig.js') const readStub = sinon.stub(fs, 'readFileSync').returns('const test = "code"') const writeStub = sinon.stub(fs, 'writeFileSync') @@ -270,7 +270,7 @@ test('processFile - should create backup with .orig.ts extension', (assert) => { }) test('processFile - should read and compile file', (assert) => { - const filePath = path.resolve(process.cwd(), 'Component.js') + const filePath = path.resolve(process.cwd(), 'src', 'component.js') const originalCode = 'const original = "code"' const readStub = sinon.stub(fs, 'readFileSync').returns(originalCode) const writeStub = sinon.stub(fs, 'writeFileSync') @@ -289,7 +289,7 @@ test('processFile - should read and compile file', (assert) => { }) test('processFile - should write compiled result', (assert) => { - const filePath = path.resolve(process.cwd(), 'Component.js') + const filePath = path.resolve(process.cwd(), 'src', 'component.js') const readStub = sinon.stub(fs, 'readFileSync').returns('const original = "code"') const writeStub = sinon.stub(fs, 'writeFileSync') const copyStub = sinon.stub(fs, 'copyFileSync') @@ -307,7 +307,7 @@ test('processFile - should write compiled result', (assert) => { }) test('processFile - should handle compiler returning object with code property', (assert) => { - const filePath = path.resolve(process.cwd(), 'Component.js') + const filePath = path.resolve(process.cwd(), 'src', 'component.js') const readStub = sinon.stub(fs, 'readFileSync').returns('const original = "code"') const writeStub = sinon.stub(fs, 'writeFileSync') const copyStub = sinon.stub(fs, 'copyFileSync') @@ -325,7 +325,7 @@ test('processFile - should handle compiler returning object with code property', }) test('processFile - should format file when source changes', (assert) => { - const filePath = path.resolve(process.cwd(), 'Component.js') + const filePath = path.resolve(process.cwd(), 'src', 'component.js') const readStub = sinon.stub(fs, 'readFileSync').returns('const original = "code"') const writeStub = sinon.stub(fs, 'writeFileSync') const copyStub = sinon.stub(fs, 'copyFileSync') @@ -344,7 +344,7 @@ test('processFile - should format file when source changes', (assert) => { }) test('processFile - should NOT format file when source unchanged', (assert) => { - const filePath = path.resolve(process.cwd(), 'Component.js') + const filePath = path.resolve(process.cwd(), 'src', 'component.js') const sameCode = 'const same = "code"' const readStub = sinon.stub(fs, 'readFileSync').returns(sameCode) const writeStub = sinon.stub(fs, 'writeFileSync') @@ -363,7 +363,7 @@ test('processFile - should NOT format file when source unchanged', (assert) => { }) test('processFile - should log precompiling message', (assert) => { - const filePath = path.resolve(process.cwd(), 'Component.js') + const filePath = path.resolve(process.cwd(), 'src', 'component.js') const readStub = sinon.stub(fs, 'readFileSync').returns('const test = "code"') const writeStub = sinon.stub(fs, 'writeFileSync') const copyStub = sinon.stub(fs, 'copyFileSync') @@ -384,7 +384,7 @@ test('processFile - should log precompiling message', (assert) => { }) test('formatFileWithESLint - should accept file path', (assert) => { - const filePath = path.resolve(process.cwd(), 'Component.js') + const filePath = path.resolve(process.cwd(), 'src', 'component.js') // Just verify the function can be called without errors assert.doesNotThrow(() => { @@ -395,7 +395,7 @@ test('formatFileWithESLint - should accept file path', (assert) => { }) test('formatFileWithESLint - should handle file path parameter', (assert) => { - const filePath = path.resolve(process.cwd(), 'Component.js') + const filePath = path.resolve(process.cwd(), 'src', 'component.js') // Verify function accepts path parameter assert.doesNotThrow(() => { @@ -406,7 +406,7 @@ test('formatFileWithESLint - should handle file path parameter', (assert) => { }) test('formatFileWithESLint - should be callable', (assert) => { - const filePath = path.resolve(process.cwd(), 'Component.js') + const filePath = path.resolve(process.cwd(), 'src', 'component.js') // Verify function is callable assert.equal(typeof formatFileWithESLint, 'function', 'Should be a function') @@ -416,7 +416,7 @@ test('formatFileWithESLint - should be callable', (assert) => { }) test('formatFileWithESLint - should execute without errors', (assert) => { - const filePath = path.resolve(process.cwd(), 'Component.js') + const filePath = path.resolve(process.cwd(), 'src', 'component.js') // Verify function executes without throwing assert.doesNotThrow(() => { diff --git a/src/components/Sprite.test.js b/src/components/Sprite.test.js index 3e9c5319..8361626b 100644 --- a/src/components/Sprite.test.js +++ b/src/components/Sprite.test.js @@ -14,7 +14,7 @@ Object.assign(renderer, engineRenderer) engineRenderer.createNode = () => new EventEmitter() function createSprite() { - return Sprite()({}, { node: { width: 1920, height: 1080 } }) + return Sprite()({}, { node: { width: 1920, height: 1080 }, set: () => {} }) } test('Sprite - Type', (assert) => { diff --git a/src/lib/codegenerator/generator.test.js b/src/lib/codegenerator/generator.test.js index e6a04bb3..c61cf0c8 100644 --- a/src/lib/codegenerator/generator.test.js +++ b/src/lib/codegenerator/generator.test.js @@ -157,6 +157,7 @@ test('Generate render and effect code for a template with a single simple elemen let slotChildCounter = 0 let cmps = [] elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({parent: parent || 'root'}, inSlot === true ? slotComponent : component) elms[0].populate(elementConfigs[0]) if(inSlot === true) { @@ -226,6 +227,7 @@ test('Generate code for a template with a simple element and a simple nested ele let slotChildCounter = 0 let cmps = [] elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) elms[0].populate(elementConfigs[0]) if (inSlot === true) { @@ -301,6 +303,7 @@ test('Generate code for a template with a single element with attributes', (asse let slotChildCounter = 0 let cmps = [] elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({parent: parent || 'root'}, inSlot === true ? slotComponent : component) elementConfigs[0]['x'] = 10 @@ -371,6 +374,7 @@ test('Generate code for a template with a single element with attributes with a let slotChildCounter = 0 let cmps = [] elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) elementConfigs[0]['one'] = true elementConfigs[0]['two'] = false @@ -447,6 +451,7 @@ test('Generate code for a template with a single element with attributes with nu let slotChildCounter = 0 let cmps = [] elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) @@ -532,6 +537,7 @@ test('Generate code for a template with attributes and a nested element with att let slotChildCounter = 0 let cmps = [] elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) elementConfigs[0]['x'] = 10 @@ -629,6 +635,7 @@ test('Generate code for a template with attributes and 2 nested elements with at let slotChildCounter = 0 let cmps = [] elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) elementConfigs[0]['x'] = 10 @@ -750,6 +757,7 @@ test('Generate code for a template with attributes and deep nested elements with let slotChildCounter = 0 let cmps = [] elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) elementConfigs[0]['x'] = 10 @@ -872,6 +880,7 @@ test('Generate code for a template with simple dynamic attributes', (assert) => let slotChildCounter = 0 let cmps = [] elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) @@ -971,6 +980,7 @@ test('Generate code for a template with an attribute with a dash', (assert) => { let slotChildCounter = 0 let cmps = [] elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) elementConfigs[0]['my-Attribute'] = "does it work?" @@ -1044,6 +1054,7 @@ test('Generate code for a template with dynamic attributes with code to be evalu let slotChildCounter = 0 let cmps = [] elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) elementConfigs[0]['attribute1'] = component.foo * 2 @@ -1150,6 +1161,7 @@ test('Generate code for a template with attribute (object)', (assert) => { let slotChildCounter = 0 let cmps = [] elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) elementConfigs[0]['w'] = 100 @@ -1222,6 +1234,7 @@ test('Generate code for a template with dynamic attribute (object)', (assert) => let slotChildCounter = 0 let cmps = [] elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) elementConfigs[0]['w'] = 100 @@ -1295,6 +1308,7 @@ test('Generate code for a template with attribute (object) with mixed dynamic & let slotChildCounter = 0 let cmps = [] elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) elementConfigs[0]['w'] = 100 @@ -1368,6 +1382,7 @@ test('Generate code for a template with @-listeners', (assert) => { let slotChildCounter = 0 let cmps = [] elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) elementConfigs[0]['src'] = "myImage.png" @@ -1451,6 +1466,7 @@ test('Generate code for a template with custom components', (assert) => { let slotChildCounter = 0 let cmps = [] elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) elms[0].populate(elementConfigs[0]) @@ -1632,6 +1648,7 @@ test('Generate code for a template with an unregistered custom component', (asse let slotChildCounter = 0 let cmps = [] elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) elms[0].populate(elementConfigs[0]) if (inSlot === true) { @@ -1804,6 +1821,7 @@ test('Generate code for a template with custom components with arguments', (asse let slotChildCounter = 0 let cmps = [] elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) elms[0].populate(elementConfigs[0]) if (inSlot === true) { @@ -1981,6 +1999,7 @@ test('Generate code for a template with custom components with argument value as let slotChildCounter = 0 let cmps = [] elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) elms[0].populate(elementConfigs[0]) @@ -2136,6 +2155,7 @@ test('Generate code for a template with custom components with reactive props', let slotChildCounter = 0 let cmps = [] elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) elms[0].populate(elementConfigs[0]) if (inSlot === true) { @@ -2359,6 +2379,7 @@ test('Generate code for a template with a transition attributes', (assert) => { let slotChildCounter = 0 let cmps = [] elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) elementConfigs[0]['x'] = { transition: component.myX } @@ -2449,6 +2470,7 @@ test('Generate code for a template with slot content', (assert) => { let slotChildCounter = 0 let cmps = [] elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) elms[0].populate(elementConfigs[0]) if (inSlot === true) { @@ -2618,6 +2640,7 @@ test('Generate code for a template with slot content, using a named slot', (asse let slotChildCounter = 0 let cmps = [] elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) elms[0].populate(elementConfigs[0]) if (inSlot === true) { @@ -2773,6 +2796,7 @@ test('Generate code for a template with a slot', (assert) => { let slotChildCounter = 0 let cmps = [] elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) elms[0].populate(elementConfigs[0]) @@ -2869,6 +2893,7 @@ test('Generate code for a template with inline Text', (assert) => { let slotChildCounter = 0 let cmps = [] elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) elms[0].populate(elementConfigs[0]) @@ -2952,6 +2977,7 @@ test('Generate code for a template with inline dynamic Text', (assert) => { let slotChildCounter = 0 let cmps = [] elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) elms[0].populate(elementConfigs[0]) @@ -3036,6 +3062,7 @@ test('Generate code for a template with inline dynamic Text embedded in static t let slotChildCounter = 0 let cmps = [] elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) elms[0].populate(elementConfigs[0]) @@ -3125,6 +3152,7 @@ test('Generate code for a template with a single element with attributes with pe let slotChildCounter = 0 let cmps = [] elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) elementConfigs[0]['w'] = 1920 @@ -3212,6 +3240,7 @@ test('Generate code for a template with a simple for-loop on an Element', (asser let slotChildCounter = 0 let cmps = [] elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) elms[0].populate(elementConfigs[0]) if (inSlot === true) { @@ -3367,6 +3396,7 @@ test('Generate code for a template with a simple for-loop on an Element, Using d let slotChildCounter = 0 let cmps = [] elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) elms[0].populate(elementConfigs[0]) if (inSlot === true) { @@ -3474,8 +3504,6 @@ test('Generate code for a template with a simple for-loop on an Element, Using d const actual = generator.call(scope, templateObject) - console.log(actual.render.toString()) - assert.equal( normalize(actual.render.toString()), normalize(expectedRender), @@ -3522,6 +3550,7 @@ test('Generate code for a template with a simple for-loop on an Element, Using d let slotChildCounter = 0 let cmps = [] elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) elms[0].populate(elementConfigs[0]) if (inSlot === true) { @@ -3675,6 +3704,7 @@ test('Generate code for a template with a simple for-loop on an Element with a c let slotChildCounter = 0 let cmps = [] elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) elms[0].populate(elementConfigs[0]) if (inSlot === true) { @@ -3829,6 +3859,7 @@ test('Generate code for a template with a simple for-loop on an Element with a k let slotChildCounter = 0 let cmps = [] elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) elms[0].populate(elementConfigs[0]) if (inSlot === true) { @@ -3982,6 +4013,7 @@ test('Generate code for a template with a simple for-loop on a Component with a let slotChildCounter = 0 let cmps = [] elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) elms[0].populate(elementConfigs[0]) if (inSlot === true) { @@ -4180,6 +4212,7 @@ test('Generate code for a template with a simple for-loop on an Element with an let slotChildCounter = 0 let cmps = [] elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) elms[0].populate(elementConfigs[0]) if (inSlot === true) { @@ -4334,6 +4367,7 @@ test('Generate code for a template with double $$ (i.e. referencing a Blits plug let slotChildCounter = 0 let cmps = [] elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) elementConfigs[0]['content'] = component.$language.translate('hello') @@ -4436,6 +4470,7 @@ test('Generate code for a template with verification of dynamic attributes', (as } elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) @@ -4530,6 +4565,7 @@ test('Generate code for a template with verification of reactive attributes', (a } elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) @@ -4652,6 +4688,7 @@ test('Generate code for a template with attribute values verified against a nest } elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) @@ -4778,6 +4815,7 @@ test('Generate code for a template with verification of attributes with Math cal } elementConfigs[0] = {} + elementConfigs[0]['___wrapper']=true elms[0] = this.element({ parent: parent || 'root' }, inSlot === true ? slotComponent : component) From 065920e4f7e41e8d268dbfb6c559f16d836a875f Mon Sep 17 00:00:00 2001 From: Miles Nash Date: Thu, 29 Jan 2026 21:47:12 +0000 Subject: [PATCH 02/28] fix: switch from tape + tap-diff to tap - 1st pass --- .gitignore | 1 + package-lock.json | 5383 +++++++++++------ package.json | 7 +- scripts/prepublishOnly.test.js | 2 +- src/announcer/announcer.test.js | 2 +- src/component.test.js | 2 +- src/component/base/methods.test.js | 2 +- src/component/base/timeouts_intervals.test.js | 2 +- src/component/base/utils.test.js | 2 +- src/component/setup/computed.test.js | 2 +- src/component/setup/props.test.js | 2 +- src/component/setup/routes.test.js | 2 +- src/components/Sprite.test.js | 2 +- src/engines/L3/element.test.js | 2 +- src/focus.test.js | 2 +- src/helpers/deepEqualArray.test.js | 2 +- src/lib/codegenerator/generator.test.js | 2 +- src/lib/colors/colors.test.js | 2 +- src/lib/componentId.test.js | 2 +- src/lib/eventListeners.test.js | 2 +- src/lib/reactivity/effect.test.js | 2 +- src/lib/reactivity/reactive.test.js | 2 +- src/lib/templateparser/parser.test.js | 2 +- src/plugin.test.js | 2 +- src/plugins/storage/localCookie.test.js | 2 +- src/plugins/storage/storage.test.js | 2 +- src/plugins/theme.test.js | 2 +- src/router/router.test.js | 2 +- src/settings.test.js | 2 +- 29 files changed, 3476 insertions(+), 1967 deletions(-) diff --git a/.gitignore b/.gitignore index c049f23f..e031975a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ node_modules .DS_store .DS_Store +.tap coverage diff --git a/package-lock.json b/package-lock.json index 36e1affe..47bed069 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,8 +33,21 @@ "lint-staged": "^15.5.0", "prettier": "^3.6.2", "sinon": "^21.0.0", - "tap-diff": "^0.1.1", - "tape": "^5.5.0" + "tap": "^21.5.0" + } + }, + "node_modules/@alcalzone/ansi-tokenize": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@alcalzone/ansi-tokenize/-/ansi-tokenize-0.1.3.tgz", + "integrity": "sha512-3yWxPTq3UQ/FY9p1ErPxIyfT64elWaMvM9lIHnaqpyft63tkxodF5aUElYHrdisWve5cETkh1+KBw1yJuW0aRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=14.13.1" } }, "node_modules/@ampproject/remapping": { @@ -374,6 +387,13 @@ "node": ">=6.9.0" } }, + "node_modules/@base2/pretty-print-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz", + "integrity": "sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==", + "dev": true, + "license": "BSD-2-Clause" + }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", @@ -381,6 +401,30 @@ "dev": true, "license": "MIT" }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "node_modules/@csstools/color-helpers": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.2.tgz", @@ -716,6 +760,183 @@ "url": "https://github.com/sponsors/nzakas" } }, + "node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/brace-expansion": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", + "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@isaacs/balanced-match": "^4.0.1" + }, + "engines": { + "node": "20 || >=22" + } + }, + "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/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "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/@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==", + "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/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/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/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@isaacs/ts-node-temp-fork-for-pr-2009": { + "version": "10.9.7", + "resolved": "https://registry.npmjs.org/@isaacs/ts-node-temp-fork-for-pr-2009/-/ts-node-temp-fork-for-pr-2009-10.9.7.tgz", + "integrity": "sha512-9f0bhUr9TnwwpgUhEpr3FjxSaH/OHaARkE2F9fM0lS4nIs2GNerrvGwQz493dk0JKlTaGYVrKbq36vA/whZ34g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node14": "*", + "@tsconfig/node16": "*", + "@tsconfig/node18": "*", + "@tsconfig/node20": "*", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=4.2" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/node_modules/diff": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz", + "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", @@ -1189,33 +1410,6 @@ "pnpm": ">= 8.9.2" } }, - "node_modules/@ljharb/resumer": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@ljharb/resumer/-/resumer-0.1.3.tgz", - "integrity": "sha512-d+tsDgfkj9X5QTriqM4lKesCkMMJC3IrbPKHvayP00ELx2axdXvDfWkqjxrLXIzGcQzmj7VAUT1wopqARTvafw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ljharb/through": "^2.3.13", - "call-bind": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/@ljharb/through": { - "version": "2.3.14", - "resolved": "https://registry.npmjs.org/@ljharb/through/-/through-2.3.14.tgz", - "integrity": "sha512-ajBvlKpWucBB17FuQYUShqpqy8GRgYEpJW0vWJbUu1CV9lWyrDCapy0lScU8T8Z6qn49sSwJB3+M+evYIdGg+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { "version": "5.1.1-v1", "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", @@ -1264,113 +1458,1336 @@ "node": ">= 8" } }, - "node_modules/@pkgr/core": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", - "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", + "node_modules/@npmcli/agent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-4.0.0.tgz", + "integrity": "sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA==", "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + "license": "ISC", + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^11.2.1", + "socks-proxy-agent": "^8.0.3" }, - "funding": { - "url": "https://opencollective.com/pkgr" + "engines": { + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@pnpm/config.env-replace": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", - "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", + "node_modules/@npmcli/agent/node_modules/lru-cache": { + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", + "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", + "dev": true, + "license": "BlueOak-1.0.0", "engines": { - "node": ">=12.22.0" + "node": "20 || >=22" } }, - "node_modules/@pnpm/network.ca-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", - "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", + "node_modules/@npmcli/fs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-5.0.0.tgz", + "integrity": "sha512-7OsC1gNORBEawOa5+j2pXN9vsicaIOH5cPXxoR6fJOmH6/EXpJB2CajXOu1fPRFun2m1lktEFX11+P89hqO/og==", + "dev": true, + "license": "ISC", "dependencies": { - "graceful-fs": "4.2.10" + "semver": "^7.3.5" }, "engines": { - "node": ">=12.22.0" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "node_modules/@pnpm/npm-conf": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz", - "integrity": "sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==", - "dependencies": { - "@pnpm/config.env-replace": "^1.1.0", - "@pnpm/network.ca-file": "^1.0.1", - "config-chain": "^1.1.11" + "node_modules/@npmcli/fs/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=12" + "node": ">=10" } }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "node_modules/@npmcli/git": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-7.0.1.tgz", + "integrity": "sha512-+XTFxK2jJF/EJJ5SoAzXk3qwIDfvFc5/g+bD274LZ7uY7LE8sTfG6Z8rOanPl2ZEvZWqNvmEdtXC25cE54VcoA==", "dev": true, - "license": "BSD-3-Clause", + "license": "ISC", "dependencies": { - "type-detect": "4.0.8" + "@npmcli/promise-spawn": "^9.0.0", + "ini": "^6.0.0", + "lru-cache": "^11.2.1", + "npm-pick-manifest": "^11.0.1", + "proc-log": "^6.0.0", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^6.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@sinonjs/fake-timers": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", - "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", + "node_modules/@npmcli/git/node_modules/ini": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-6.0.0.tgz", + "integrity": "sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==", "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.1" + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@sinonjs/samsam": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.2.tgz", - "integrity": "sha512-v46t/fwnhejRSFTGqbpn9u+LQ9xJDse10gNnPgAcxgdoCDMXj/G2asWAC/8Qs+BAZDicX+MNZouXT1A7c83kVw==", + "node_modules/@npmcli/git/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.1", - "lodash.get": "^4.4.2", - "type-detect": "^4.1.0" + "license": "ISC", + "engines": { + "node": ">=16" } }, - "node_modules/@sinonjs/samsam/node_modules/type-detect": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", - "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", + "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", "dev": true, - "license": "MIT", + "license": "BlueOak-1.0.0", "engines": { - "node": ">=4" + "node": "20 || >=22" } }, - "node_modules/@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" - }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "node_modules/@npmcli/git/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, - "license": "MIT" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "node_modules/@npmcli/git/node_modules/which": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-6.0.0.tgz", + "integrity": "sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/installed-package-contents": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-4.0.0.tgz", + "integrity": "sha512-yNyAdkBxB72gtZ4GrwXCM0ZUedo9nIbOMKfGjt6Cu6DXf0p8y1PViZAKDC8q8kv/fufx0WTjRBdSlyrvnP7hmA==", + "dev": true, + "license": "ISC", + "dependencies": { + "npm-bundled": "^5.0.0", + "npm-normalize-package-bin": "^5.0.0" + }, + "bin": { + "installed-package-contents": "bin/index.js" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/node-gyp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-5.0.0.tgz", + "integrity": "sha512-uuG5HZFXLfyFKqg8QypsmgLQW7smiRjVc45bqD/ofZZcR/uxEjgQU8qDPv0s9TEeMUiAAU/GC5bR6++UdTirIQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/package-json": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-7.0.4.tgz", + "integrity": "sha512-0wInJG3j/K40OJt/33ax47WfWMzZTm6OQxB9cDhTt5huCP2a9g2GnlsxmfN+PulItNPIpPrZ+kfwwUil7eHcZQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^7.0.0", + "glob": "^13.0.0", + "hosted-git-info": "^9.0.0", + "json-parse-even-better-errors": "^5.0.0", + "proc-log": "^6.0.0", + "semver": "^7.5.3", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/package-json/node_modules/glob": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", + "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/package-json/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/package-json/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/promise-spawn": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-9.0.1.tgz", + "integrity": "sha512-OLUaoqBuyxeTqUvjA3FZFiXUfYC1alp3Sa99gW3EUDz3tZ3CbXDdcZ7qWKBzicrJleIgucoWamWH1saAmH/l2Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "which": "^6.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/promise-spawn/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "node_modules/@npmcli/promise-spawn/node_modules/which": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-6.0.0.tgz", + "integrity": "sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/redact": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-4.0.0.tgz", + "integrity": "sha512-gOBg5YHMfZy+TfHArfVogwgfBeQnKbbGo3pSUyK/gSI0AVu+pEiDVcKlQb0D8Mg1LNRZILZ6XG8I5dJ4KuAd9Q==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/run-script": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-10.0.3.tgz", + "integrity": "sha512-ER2N6itRkzWbbtVmZ9WKaWxVlKlOeBFF1/7xx+KA5J1xKa4JjUwBdb6tDpk0v1qA+d+VDwHI9qmLcXSWcmi+Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/node-gyp": "^5.0.0", + "@npmcli/package-json": "^7.0.0", + "@npmcli/promise-spawn": "^9.0.0", + "node-gyp": "^12.1.0", + "proc-log": "^6.0.0", + "which": "^6.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/run-script/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "node_modules/@npmcli/run-script/node_modules/which": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-6.0.0.tgz", + "integrity": "sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "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==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, + "node_modules/@pnpm/config.env-replace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", + "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", + "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", + "dependencies": { + "graceful-fs": "4.2.10" + }, + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "node_modules/@pnpm/npm-conf": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz", + "integrity": "sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==", + "dependencies": { + "@pnpm/config.env-replace": "^1.1.0", + "@pnpm/network.ca-file": "^1.0.1", + "config-chain": "^1.1.11" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@sigstore/bundle": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-4.0.0.tgz", + "integrity": "sha512-NwCl5Y0V6Di0NexvkTqdoVfmjTaQwoLM236r89KEojGmq/jMls8S+zb7yOwAPdXvbwfKDlP+lmXgAL4vKSQT+A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.5.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "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==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@sigstore/protobuf-specs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.5.0.tgz", + "integrity": "sha512-MM8XIwUjN2bwvCg1QvrMtbBmpcSHrkhFSCu1D11NyPvDQ25HEc4oG5/OcQfd/Tlf/OxmKWERDj0zGE23jQaMwA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "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==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^4.0.0", + "@sigstore/core": "^3.1.0", + "@sigstore/protobuf-specs": "^0.5.0", + "make-fetch-happen": "^15.0.3", + "proc-log": "^6.1.0", + "promise-retry": "^2.0.1" + }, + "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==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.5.0", + "tuf-js": "^4.1.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@sigstore/verify": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-3.1.0.tgz", + "integrity": "sha512-mNe0Iigql08YupSOGv197YdHpPPr+EzDZmfCgMc7RPNaZTw5aLN01nBl6CHJOh3BGtnMIj83EeN4butBchc8Ag==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^4.0.0", + "@sigstore/core": "^3.1.0", + "@sigstore/protobuf-specs": "^0.5.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", + "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1" + } + }, + "node_modules/@sinonjs/samsam": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.2.tgz", + "integrity": "sha512-v46t/fwnhejRSFTGqbpn9u+LQ9xJDse10gNnPgAcxgdoCDMXj/G2asWAC/8Qs+BAZDicX+MNZouXT1A7c83kVw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1", + "lodash.get": "^4.4.2", + "type-detect": "^4.1.0" + } + }, + "node_modules/@sinonjs/samsam/node_modules/type-detect": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@tapjs/after": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@tapjs/after/-/after-3.3.0.tgz", + "integrity": "sha512-Z8Ozhv27xPP5oaIbPA1zFHS7oozRzf4bgeRnyoDPvXIo3akhu7wq661wkxNyCbfPZ7s4ShWNbNrgwTGOowYaJg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "is-actual-promise": "^1.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "peerDependencies": { + "@tapjs/core": "4.4.0" + } + }, + "node_modules/@tapjs/after-each": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tapjs/after-each/-/after-each-4.3.0.tgz", + "integrity": "sha512-2vGA0GYGH2JcCfNSfQdyVQaeezGZ7zQRRY74WTYD7yMR7m5yHGbgJ3moPWb0MJuj+mUacos7ksXYeqXxxdGy8Q==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "function-loop": "^4.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "peerDependencies": { + "@tapjs/core": "4.4.0" + } + }, + "node_modules/@tapjs/asserts": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tapjs/asserts/-/asserts-4.3.0.tgz", + "integrity": "sha512-BuC61QMowZAtbvluWkKzD8/JF7ICqrG2xTz3sPRczvhyEvcjYHYJXqMn+gDeyPQs4LxgFpaTdaA4Xb9tPpNGJQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@tapjs/stack": "4.3.0", + "is-actual-promise": "^1.0.1", + "tcompare": "9.3.0", + "trivial-deferred": "^2.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "peerDependencies": { + "@tapjs/core": "4.4.0" + } + }, + "node_modules/@tapjs/before": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tapjs/before/-/before-4.3.0.tgz", + "integrity": "sha512-if+l+sXIeIzyJ4DusYhznetd4AbWrjOhXKkflYmPKf8F703shbpjZfwPo4jCZ2Y/rBWKHXQ1iLOm2pjebZMqJg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "is-actual-promise": "^1.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "peerDependencies": { + "@tapjs/core": "4.4.0" + } + }, + "node_modules/@tapjs/before-each": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tapjs/before-each/-/before-each-4.3.0.tgz", + "integrity": "sha512-+6qzPbXKita72BkISZF75hIqBoBNiKYrr0q7YiwzLrNi/tGlmg7pLEA83O2ttyb2MOzy9p2InTdj6tJv0t/ZBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "function-loop": "^4.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "peerDependencies": { + "@tapjs/core": "4.4.0" + } + }, + "node_modules/@tapjs/chdir": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@tapjs/chdir/-/chdir-3.3.0.tgz", + "integrity": "sha512-xR64rno2vgZct/54RSZQWb54ACF3V8LpUbRnR7f/JpHh41b1CUGQVTZTK8h+Z22U84mqS51aHJARFt25gnoivg==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + }, + "peerDependencies": { + "@tapjs/core": "4.4.0" + } + }, + "node_modules/@tapjs/config": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@tapjs/config/-/config-5.4.0.tgz", + "integrity": "sha512-ycbAq6YYhm4gFnUu9wD1uDXHmJsU/IFlQAVj7LtaiSNkixjG1nLIkbi9+Kf8mfQSNa/j7m3fhAMb82jKqBLCXA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@tapjs/core": "4.4.0", + "@tapjs/test": "4.3.0", + "chalk": "^5.6.2", + "jackspeak": "^4.0.1", + "polite-json": "^5.0.0", + "tap-yaml": "4.3.0", + "walk-up-path": "^4.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "peerDependencies": { + "@tapjs/core": "4.4.0", + "@tapjs/test": "4.3.0" + } + }, + "node_modules/@tapjs/core": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@tapjs/core/-/core-4.4.0.tgz", + "integrity": "sha512-agJabQ9P4iW+CshG8B/5OORwySzU3yaLhCSzHNGSIwvhVlXcN0coMYdBuKLo1kCZM3X2D24pa1tO7NcUqVyNyQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@tapjs/processinfo": "^3.1.9", + "@tapjs/stack": "4.3.0", + "@tapjs/test": "4.3.0", + "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", + "trivial-deferred": "^2.0.0" + }, + "engines": { + "node": "20 || >=22" + } + }, + "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==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@tapjs/filter": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tapjs/filter/-/filter-4.3.0.tgz", + "integrity": "sha512-I/Egvq7iuc9wI/OAH37OvrkO7UuVb05atxQ6Mc6MfXjrnKfzePSe32gvVcPjcbdwR4Bg0XBRI0rKozYFeXPW9g==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "peerDependencies": { + "@tapjs/core": "4.4.0" + } + }, + "node_modules/@tapjs/fixture": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tapjs/fixture/-/fixture-4.3.0.tgz", + "integrity": "sha512-vFhlpF/p7NOD1HmuhouO89va3IiE6CLk47Mq1IRSU2oR8uwM1jT6BQJnCPF43P5sl2nj4fuCUomU+lVOPbvCBg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "mkdirp": "^3.0.0", + "rimraf": "^6.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "peerDependencies": { + "@tapjs/core": "4.4.0" + } + }, + "node_modules/@tapjs/intercept": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tapjs/intercept/-/intercept-4.3.0.tgz", + "integrity": "sha512-NKx3p87KL6WRG/2SwtMiJf4lecfGsTKRbmLXQyV4Fiy/HF9pCK3k+FGfU+Rk6gpa76MvdpF6IQ6uNojrAhApXg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@tapjs/after": "3.3.0", + "@tapjs/stack": "4.3.0" + }, + "engines": { + "node": "20 || >=22" + }, + "peerDependencies": { + "@tapjs/core": "4.4.0" + } + }, + "node_modules/@tapjs/mock": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tapjs/mock/-/mock-4.3.0.tgz", + "integrity": "sha512-3NndkMomhD8NJskn9ZXWkKVZAOJEzh8Vj4nSUtaOEXTfRstf9lboEQaSuvD9vju2wn8gssA7MohJ8AuADeRY5Q==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@tapjs/after": "3.3.0", + "@tapjs/stack": "4.3.0", + "resolve-import": "^2.1.1", + "walk-up-path": "^4.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "peerDependencies": { + "@tapjs/core": "4.4.0" + } + }, + "node_modules/@tapjs/node-serialize": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tapjs/node-serialize/-/node-serialize-4.3.0.tgz", + "integrity": "sha512-kBKlBlUm1XgF1yLRWUwBelZNb6oWgKDFo2tVJrWHglyDboxsEbfe7Hfgz7D9lU91nrsZ9Yh/X5xQ8sy3lP4oQw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@tapjs/error-serdes": "4.3.0", + "@tapjs/stack": "4.3.0", + "tap-parser": "18.3.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "peerDependencies": { + "@tapjs/core": "4.4.0" + } + }, + "node_modules/@tapjs/processinfo": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/@tapjs/processinfo/-/processinfo-3.1.9.tgz", + "integrity": "sha512-yIbYH9ROI5m5F2B5Hpk6t89OkHBrDbL3qncPO9OfPuSvJsvAIDG91I0hxGQNohdaxmqz5L4QiIYc5Y0KmtLzCQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "node-options-to-argv": "^1.0.0", + "pirates": "^4.0.5", + "process-on-spawn": "^1.0.0", + "signal-exit": "^4.0.2", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">=16.17" + } + }, + "node_modules/@tapjs/reporter": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@tapjs/reporter/-/reporter-4.4.0.tgz", + "integrity": "sha512-9oyZ55j/uwhYfqC4DXjATx8Byzmsg6AJixJdFeR+EI1xBHh7LoP8XVaJfBHgmd//g0R9gITP4omFN94jtLIxuQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@tapjs/config": "5.4.0", + "@tapjs/stack": "4.3.0", + "chalk": "^5.6.2", + "ink": "^5.2.1", + "minipass": "^7.0.4", + "ms": "^2.1.3", + "patch-console": "^2.0.0", + "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" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "peerDependencies": { + "@tapjs/core": "4.4.0" + } + }, + "node_modules/@tapjs/run": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@tapjs/run/-/run-4.4.0.tgz", + "integrity": "sha512-ejfJRr6/f5zFqrpPwMkKdqjUuXOfYIqImCgk8giFPRVtCcnQh3KYce8XcQHulx209atg149UFQr+T9ax+w+nzg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@tapjs/after": "3.3.0", + "@tapjs/before": "4.3.0", + "@tapjs/config": "5.4.0", + "@tapjs/processinfo": "^3.1.9", + "@tapjs/reporter": "4.4.0", + "@tapjs/spawn": "4.3.0", + "@tapjs/stdin": "4.3.0", + "@tapjs/test": "4.3.0", + "c8": "^10.1.3", + "chalk": "^5.6.2", + "chokidar": "^4.0.2", + "foreground-child": "^3.1.1", + "glob": "^13.0.0", + "minipass": "^7.0.4", + "mkdirp": "^3.0.1", + "node-options-to-argv": "^1.0.0", + "opener": "^1.5.2", + "pacote": "^21.0.4", + "path-scurry": "^2.0.0", + "resolve-import": "^2.0.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", + "which": "^5.0.0" + }, + "bin": { + "tap-run": "dist/esm/index.js" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "peerDependencies": { + "@tapjs/core": "4.4.0" + } + }, + "node_modules/@tapjs/run/node_modules/@bcoe/v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", + "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "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" + } + }, + "node_modules/@tapjs/run/node_modules/c8": { + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/c8/-/c8-10.1.3.tgz", + "integrity": "sha512-LvcyrOAaOnrrlMpW22n690PUvxiq4Uf9WMhQwNJ9vgagkL/ph1+D4uvjvDA5XCbykrc0sx+ay6pVi9YZ1GnhyA==", + "dev": true, + "license": "ISC", + "dependencies": { + "@bcoe/v8-coverage": "^1.0.1", + "@istanbuljs/schema": "^0.1.3", + "find-up": "^5.0.0", + "foreground-child": "^3.1.1", + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-report": "^3.0.1", + "istanbul-reports": "^3.1.6", + "test-exclude": "^7.0.1", + "v8-to-istanbul": "^9.0.0", + "yargs": "^17.7.2", + "yargs-parser": "^21.1.1" + }, + "bin": { + "c8": "bin/c8.js" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "monocart-coverage-reports": "^2" + }, + "peerDependenciesMeta": { + "monocart-coverage-reports": { + "optional": true + } + } + }, + "node_modules/@tapjs/run/node_modules/glob": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", + "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@tapjs/run/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "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/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@tapjs/run/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@tapjs/run/node_modules/test-exclude": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz", + "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==", + "dev": true, + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^10.4.1", + "minimatch": "^9.0.4" + }, + "engines": { + "node": ">=18" + } + }, + "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==", + "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/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@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/which": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@tapjs/snapshot": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tapjs/snapshot/-/snapshot-4.3.0.tgz", + "integrity": "sha512-88g6ikMW2wNII53/5lBqN8wPVsr24yAzQZU+BkrLJ0ekosikSrQtspuCJhWMmU107AJ5FPPlO96DAFp3sUSkJg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "is-actual-promise": "^1.0.1", + "tcompare": "9.3.0", + "trivial-deferred": "^2.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "peerDependencies": { + "@tapjs/core": "4.4.0" + } + }, + "node_modules/@tapjs/spawn": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tapjs/spawn/-/spawn-4.3.0.tgz", + "integrity": "sha512-6NER3vzkJTgKFzGH71WmwjVkqgwp7x8/NXaRoEcRs5g9ItCTU4FhvUg/7mYC/EKFtSqwuJ/Q3fbJ0J541wvJSQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + }, + "peerDependencies": { + "@tapjs/core": "4.4.0" + } + }, + "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==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@tapjs/stdin": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tapjs/stdin/-/stdin-4.3.0.tgz", + "integrity": "sha512-DIf9aHsAgbyDAiE1PIDPtnsX9ZSpHl7LHOgEjeitEr9LXdmgR6zAQFGVEDJW433F2UQwrysPvUZZIruM8XqjhQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + }, + "peerDependencies": { + "@tapjs/core": "4.4.0" + } + }, + "node_modules/@tapjs/test": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tapjs/test/-/test-4.3.0.tgz", + "integrity": "sha512-33+AoqqSNimlUBiyK05SGax/EiNPnhuQdUrpPRS52FdgTM6p6QeD1uqZkFOFhh5dZkoXos5YN+zHfqLN/+dD+g==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/ts-node-temp-fork-for-pr-2009": "^10.9.7", + "@tapjs/after": "3.3.0", + "@tapjs/after-each": "4.3.0", + "@tapjs/asserts": "4.3.0", + "@tapjs/before": "4.3.0", + "@tapjs/before-each": "4.3.0", + "@tapjs/chdir": "3.3.0", + "@tapjs/filter": "4.3.0", + "@tapjs/fixture": "4.3.0", + "@tapjs/intercept": "4.3.0", + "@tapjs/mock": "4.3.0", + "@tapjs/node-serialize": "4.3.0", + "@tapjs/snapshot": "4.3.0", + "@tapjs/spawn": "4.3.0", + "@tapjs/stdin": "4.3.0", + "@tapjs/typescript": "3.5.0", + "@tapjs/worker": "4.3.0", + "glob": "^13.0.0", + "jackspeak": "^4.0.1", + "mkdirp": "^3.0.0", + "package-json-from-dist": "^1.0.0", + "resolve-import": "^2.1.1", + "rimraf": "^6.0.0", + "sync-content": "^2.0.1", + "tap-parser": "18.3.0", + "tshy": "^3.0.3", + "typescript": "5.9", + "walk-up-path": "^4.0.0" + }, + "bin": { + "generate-tap-test-class": "dist/esm/build.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "peerDependencies": { + "@tapjs/core": "4.4.0" + } + }, + "node_modules/@tapjs/test/node_modules/glob": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", + "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@tapjs/test/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@tapjs/typescript": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@tapjs/typescript/-/typescript-3.5.0.tgz", + "integrity": "sha512-8v8S3QZplJ8Uzz5yNfyS6YZkiZJ80KQwIcYVjiqCBAoqVI37FrZSONd4OKiF25rxa/ZjQJzIbtGwf/toqqOZxg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/ts-node-temp-fork-for-pr-2009": "^10.9.7" + }, + "engines": { + "node": "20 || >=22" + }, + "peerDependencies": { + "@tapjs/core": "4.4.0" + } + }, + "node_modules/@tapjs/worker": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tapjs/worker/-/worker-4.3.0.tgz", + "integrity": "sha512-8V/0/YRT5+cAodz6HQaJGFeK3YXi2WcGaTb8V1sKLna9Ll6X+vc8ngOBJHa9YqNuadw8p2eWf02nS6UKT4MOHQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + }, + "peerDependencies": { + "@tapjs/core": "4.4.0" + } + }, + "node_modules/@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" + }, + "node_modules/@tsconfig/node14": { + "version": "14.1.8", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-14.1.8.tgz", + "integrity": "sha512-SjGT+qPvh8Uhc849yNMD0ZIPr69AyB7Z46nMqhrI3gCVocd6mhI0jP4YE4onO/ufpmengRfTxNMpdpKEp2xRIg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "16.1.8", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-16.1.8.tgz", + "integrity": "sha512-T/CfdwFry660WjZor56z0F3pxeCllt8KOxWcHFW6ZEuULKUObTDEMdgtctyuJPxwqyWDsvHRfxHaJ4FIICyoqQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node18": { + "version": "18.2.6", + "resolved": "https://registry.npmjs.org/@tsconfig/node18/-/node18-18.2.6.tgz", + "integrity": "sha512-eAWQzAjPj18tKnDzmWstz4OyWewLUNBm9tdoN9LayzoboRktYx3Enk1ZXPmThj55L7c4VWYq/Bzq0A51znZfhw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node20": { + "version": "20.1.8", + "resolved": "https://registry.npmjs.org/@tsconfig/node20/-/node20-20.1.8.tgz", + "integrity": "sha512-Em+IdPfByIzWRRpqWL4Z7ArLHZGxmc36BxE3jCz9nBFSm+5aLaPMZyjwu4yetvyKXeogWcxik4L1jB5JTWfw7A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tufjs/canonical-json": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", + "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@tufjs/models": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-4.1.0.tgz", + "integrity": "sha512-Y8cK9aggNRsqJVaKUlEYs4s7CvQ1b1ta2DVPyAimb0I2qhzjNk+A+mxvll/klL0RlfuIUei8BF7YWiua4kQqww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tufjs/canonical-json": "2.0.0", + "minimatch": "^10.1.1" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@tufjs/models/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", "dev": true, "license": "MIT" @@ -1387,6 +2804,16 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==" }, + "node_modules/abbrev": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-4.0.0.tgz", + "integrity": "sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, "node_modules/abort-controller": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", @@ -1421,6 +2848,19 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/agent-base": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", @@ -1529,6 +2969,13 @@ "resolved": "https://registry.npmjs.org/arabic-persian-reshaper/-/arabic-persian-reshaper-1.0.1.tgz", "integrity": "sha512-VYBjkhz6o4W1Xt4mD2LAReljJpLSw5CUZMqSBDIQRvFgUSlTKEYghapgBWvkeMWF4W+KF3Fm+/z8EywJU4PBeg==" }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true, + "license": "MIT" + }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -1536,73 +2983,14 @@ "dev": true, "license": "Python-2.0" }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.every": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/array.prototype.every/-/array.prototype.every-1.1.7.tgz", - "integrity": "sha512-BIP72rKvrKd08ptbetLb4qvrlGjkv30yOKgKcTtOIbHyQt3shr/jyOzdApiCOh3LPYrpJo5M6i0zmVldOF2pUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-object-atoms": "^1.0.0", - "is-string": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "node_modules/async-hook-domain": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/async-hook-domain/-/async-hook-domain-4.0.1.tgz", + "integrity": "sha512-bSktexGodAjfHWIrSrrqxqWzf1hWBZBpmPNZv+TYUMyWa2eoefFc6q6H1+KtdHYSz35lrhWdmXt/XK9wNEZvww==", "dev": true, - "license": "MIT", + "license": "ISC", "engines": { - "node": ">= 0.4" + "node": ">=16" } }, "node_modules/asynckit": { @@ -1621,20 +3009,17 @@ "when-exit": "^2.1.1" } }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "node_modules/auto-bind": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-5.0.1.tgz", + "integrity": "sha512-ooviqdwwgfIfNmDwo94wlshcdzfO64XV0Cg6oDsDYBJfITDz1EngD2z7DkbvCWn+XIMsIqW27sEVF6qcpJrRcg==", "dev": true, "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, "engines": { - "node": ">= 0.4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/await-to-js": { @@ -1797,30 +3182,78 @@ "yargs": "^17.7.2", "yargs-parser": "^21.1.1" }, - "bin": { - "c8": "bin/c8.js" + "bin": { + "c8": "bin/c8.js" + }, + "engines": { + "node": ">=14.14.0" + } + }, + "node_modules/cacache": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-20.0.3.tgz", + "integrity": "sha512-3pUp4e8hv07k1QlijZu6Kn7c9+ZpWWk4j3F8N3xPuCExULobqJydKYOTj1FTq58srkJsXvO7LbGAH4C0ZU3WGw==", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^5.0.0", + "fs-minipass": "^3.0.0", + "glob": "^13.0.0", + "lru-cache": "^11.1.0", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^7.0.2", + "ssri": "^13.0.0", + "unique-filename": "^5.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", + "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" + }, + "engines": { + "node": "20 || >=22" }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", + "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", + "dev": true, + "license": "BlueOak-1.0.0", "engines": { - "node": ">=14.14.0" + "node": "20 || >=22" } }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "node_modules/cacache/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", "dev": true, - "license": "MIT", + "license": "BlueOak-1.0.0", "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" + "@isaacs/brace-expansion": "^5.0.0" }, "engines": { - "node": ">= 0.4" + "node": "20 || >=22" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/call-bind-apply-helpers": { @@ -1837,23 +3270,6 @@ "node": ">= 0.4" } }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -1898,9 +3314,9 @@ "peer": true }, "node_modules/chalk": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" @@ -1909,6 +3325,32 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, "node_modules/cli-boxes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", @@ -2071,6 +3513,19 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/code-excerpt": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-4.0.0.tgz", + "integrity": "sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==", + "dev": true, + "license": "MIT", + "dependencies": { + "convert-to-spaces": "^2.0.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -2166,12 +3621,15 @@ "dev": true, "license": "MIT" }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "node_modules/convert-to-spaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-2.0.1.tgz", + "integrity": "sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } }, "node_modules/cross-spawn": { "version": "7.0.6", @@ -2223,64 +3681,10 @@ "node": ">=18" } }, - "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/inspect-js" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, "license": "MIT", "dependencies": { @@ -2302,46 +3706,6 @@ "dev": true, "license": "MIT" }, - "node_modules/deep-equal": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", - "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.5", - "es-get-iterator": "^1.1.3", - "get-intrinsic": "^1.2.2", - "is-arguments": "^1.1.1", - "is-array-buffer": "^3.0.2", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "isarray": "^2.0.5", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "side-channel": "^1.0.4", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/deep-equal/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, "node_modules/deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", @@ -2357,52 +3721,6 @@ "dev": true, "license": "MIT" }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/defined": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", - "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -2414,9 +3732,9 @@ } }, "node_modules/diff": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/diff/-/diff-2.2.3.tgz", - "integrity": "sha512-9wfm3RLzMp/PyTFWuw9liEzdlxsdGixCW0ZTU1XDmtlAkvpVXTPGF8KnfSs0hm3BPbg19OrUPPsRkHXoREpP1g==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.3.tgz", + "integrity": "sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -2437,19 +3755,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dotignore": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz", - "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimatch": "^3.0.4" - }, - "bin": { - "ignored": "bin/ignored" - } - }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -2465,10 +3770,10 @@ "node": ">= 0.4" } }, - "node_modules/duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "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" }, @@ -2486,6 +3791,17 @@ "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", "license": "MIT" }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, "node_modules/entities": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.0.tgz", @@ -2499,6 +3815,16 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/environment": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", @@ -2512,71 +3838,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/es-abstract": { - "version": "1.23.9", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", - "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", + "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", - "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.0", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-regex": "^1.2.1", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.0", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.3", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.18" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "license": "MIT" }, "node_modules/es-define-property": { "version": "1.0.1", @@ -2598,34 +3865,6 @@ "node": ">= 0.4" } }, - "node_modules/es-get-iterator": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", - "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "is-arguments": "^1.1.1", - "is-map": "^2.0.2", - "is-set": "^2.0.2", - "is-string": "^1.0.7", - "isarray": "^2.0.5", - "stop-iteration-iterator": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-get-iterator/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, "node_modules/es-object-atoms": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", @@ -2655,23 +3894,16 @@ "node": ">= 0.4" } }, - "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "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==", "dev": true, "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "workspaces": [ + "docs", + "benchmarks" + ] }, "node_modules/escalade": { "version": "3.2.0", @@ -2943,20 +4175,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/esquery": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", @@ -3047,11 +4265,14 @@ } }, "node_modules/events-to-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/events-to-array/-/events-to-array-1.1.2.tgz", - "integrity": "sha512-inRWzRY7nG+aXZxBzEqYKB3HPgwflZRopAjDCHv0whhRx+MTUr1ei0ICZUypdyE0HRm4L2d5VEcIqLD6yl+BFA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/events-to-array/-/events-to-array-2.0.3.tgz", + "integrity": "sha512-f/qE2gImHRa4Cp2y1stEOSgw8wTFyUdVJX7G//bMwbaV9JqISFxg99NbmVQeP7YLnDUZ2un851jlaDrlpmGehQ==", "dev": true, - "license": "ISC" + "license": "ISC", + "engines": { + "node": ">=12" + } }, "node_modules/execa": { "version": "8.0.1", @@ -3077,24 +4298,18 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/execa/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/exif-parser": { "version": "0.1.12", "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==" }, + "node_modules/exponential-backoff": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", + "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==", + "dev": true, + "license": "Apache-2.0" + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -3156,35 +4371,11 @@ "node_modules/fastq": { "version": "1.19.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" } }, "node_modules/file-entry-cache": { @@ -3267,22 +4458,6 @@ "dev": true, "license": "ISC" }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/foreground-child": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", @@ -3300,19 +4475,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/form-data": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", @@ -3329,6 +4491,27 @@ "node": ">= 6" } }, + "node_modules/fromentries": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", + "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/fs-extra": { "version": "11.3.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", @@ -3343,6 +4526,19 @@ "node": ">=14.14" } }, + "node_modules/fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -3360,36 +4556,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "node_modules/function-loop": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/function-loop/-/function-loop-4.0.0.tgz", + "integrity": "sha512-f34iQBedYF3XcI93uewZZOnyscDragxgTK/eTvVB74k3fCD0ZorOi5BV9GS4M8rz/JoNi0Kl3qX5Y9MH3S/CLQ==", "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "license": "ISC" }, "node_modules/gensync": { "version": "1.0.0-beta.2", @@ -3413,9 +4585,9 @@ } }, "node_modules/get-east-asian-width": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", - "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz", + "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==", "license": "MIT", "engines": { "node": ">=18" @@ -3449,16 +4621,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/get-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", @@ -3486,24 +4648,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/gifwrap": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.10.1.tgz", @@ -3588,23 +4732,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", @@ -3644,60 +4771,6 @@ "uglify-js": "^3.1.4" } }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-dynamic-import": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.1.1.tgz", - "integrity": "sha512-DuTCn6K/RW8S27npDMumGKsjG6HE7MxzedZka5tJP+9dqfxks+UMqKBmeCijHtIhsBEZPlbMg0qMHi2nKYVtKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -3708,35 +4781,6 @@ "node": ">=8" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-symbols": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", @@ -3779,6 +4823,29 @@ "node": ">= 0.4" } }, + "node_modules/hosted-git-info": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-9.0.2.tgz", + "integrity": "sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^11.1.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", + "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, "node_modules/html-encoding-sniffer": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", @@ -3799,6 +4866,13 @@ "dev": true, "license": "MIT" }, + "node_modules/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", + "dev": true, + "license": "BSD-2-Clause" + }, "node_modules/http-proxy-agent": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", @@ -3895,6 +4969,35 @@ "node": ">= 4" } }, + "node_modules/ignore-walk": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-8.0.0.tgz", + "integrity": "sha512-FCeMZT4NiRQGh+YkeKMtWrOmBgWjHjMJ26WQWrRQyoyzqevdaGSakUaJW5xQYmjLlUVk2qUnCjYVBax9EKKg8A==", + "dev": true, + "license": "ISC", + "dependencies": { + "minimatch": "^10.0.3" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/ignore-walk/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/image-q": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz", @@ -3930,6 +5033,19 @@ "node": ">=0.8.19" } }, + "node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -3957,210 +5073,179 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-arguments": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", - "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "node_modules/ink": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ink/-/ink-5.2.1.tgz", + "integrity": "sha512-BqcUyWrG9zq5HIwW6JcfFHsIYebJkWWb4fczNah1goUO0vv5vneIlfwuS85twyJ5hYR/y18FlAYUxrO9ChIWVg==", "dev": true, "license": "MIT", "dependencies": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" + "@alcalzone/ansi-tokenize": "^0.1.3", + "ansi-escapes": "^7.0.0", + "ansi-styles": "^6.2.1", + "auto-bind": "^5.0.1", + "chalk": "^5.3.0", + "cli-boxes": "^3.0.0", + "cli-cursor": "^4.0.0", + "cli-truncate": "^4.0.0", + "code-excerpt": "^4.0.0", + "es-toolkit": "^1.22.0", + "indent-string": "^5.0.0", + "is-in-ci": "^1.0.0", + "patch-console": "^2.0.0", + "react-reconciler": "^0.29.0", + "scheduler": "^0.23.0", + "signal-exit": "^3.0.7", + "slice-ansi": "^7.1.0", + "stack-utils": "^2.0.6", + "string-width": "^7.2.0", + "type-fest": "^4.27.0", + "widest-line": "^5.0.0", + "wrap-ansi": "^9.0.0", + "ws": "^8.18.0", + "yoga-layout": "~3.2.1" }, "engines": { - "node": ">= 0.4" + "node": ">=18" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "@types/react": ">=18.0.0", + "react": ">=18.0.0", + "react-devtools-core": "^4.19.1" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react-devtools-core": { + "optional": true + } } }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "node_modules/ink/node_modules/cli-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", "dev": true, "license": "MIT", "dependencies": { - "has-bigints": "^1.0.2" + "restore-cursor": "^4.0.0" }, "engines": { - "node": ">= 0.4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "node_modules/ink/node_modules/is-fullwidth-code-point": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz", + "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" + "get-east-asian-width": "^1.3.1" }, "engines": { - "node": ">= 0.4" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "node_modules/ink/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=6" } }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "node_modules/ink/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "license": "MIT", "dependencies": { - "hasown": "^2.0.2" + "mimic-fn": "^2.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "node_modules/ink/node_modules/restore-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" }, "engines": { - "node": ">= 0.4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "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/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": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "node_modules/ip-address": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 12" } }, - "node_modules/is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "node_modules/is-actual-promise": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-actual-promise/-/is-actual-promise-1.0.2.tgz", + "integrity": "sha512-xsFiO1of0CLsQnPZ1iXHNTyR9YszOeWKYv+q6n8oSFW3ipooFJ1j1lbRMgiMCr+pp2gLruESI4zb5Ak6eK5OnQ==", "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "license": "BlueOak-1.0.0" }, - "node_modules/is-finite": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", - "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-fullwidth-code-point": { @@ -4176,25 +5261,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-generator-function": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", - "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-proto": "^1.0.0", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -4245,19 +5311,6 @@ "node": ">=6.0" } }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-npm": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.1.0.tgz", @@ -4279,23 +5332,6 @@ "node": ">=0.12.0" } }, - "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-path-inside": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", @@ -4307,60 +5343,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "license": "MIT" }, "node_modules/is-stream": { "version": "3.0.0", @@ -4375,110 +5373,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "license": "MIT" - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -4525,6 +5419,22 @@ "node": ">=8" } }, + "node_modules/jackspeak": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", + "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/jimp": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/jimp/-/jimp-1.6.0.tgz", @@ -4572,8 +5482,7 @@ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.0", @@ -4658,6 +5567,16 @@ "dev": true, "license": "MIT" }, + "node_modules/json-parse-even-better-errors": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-5.0.0.tgz", + "integrity": "sha512-ZF1nxZ28VhQouRWhUcVlUIN3qwSgPuswK05s/HIaoetAoE/9tngVmCHjSxmSQPav1nd+lPtTL0YZ/2AFdR/iYQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -4698,6 +5617,16 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true, + "engines": [ + "node >= 0.2.0" + ], + "license": "MIT" + }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -4919,6 +5848,19 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -4967,6 +5909,36 @@ "node": ">=10" } }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true, + "license": "ISC" + }, + "node_modules/make-fetch-happen": { + "version": "15.0.3", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-15.0.3.tgz", + "integrity": "sha512-iyyEpDty1mwW3dGlYXAJqC/azFn5PPvgKVwXayOGBSmKLxhKZ9fg4qIan2ePpp1vJIwfFiO34LAPZgq9SZW9Aw==", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/agent": "^4.0.0", + "cacache": "^20.0.1", + "http-cache-semantics": "^4.1.1", + "minipass": "^7.0.2", + "minipass-fetch": "^5.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^1.0.0", + "proc-log": "^6.0.0", + "promise-retry": "^2.0.1", + "ssri": "^13.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, "node_modules/map-limit": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/map-limit/-/map-limit-0.0.1.tgz", @@ -5103,34 +6075,174 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mock-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mock-property/-/mock-property-1.1.0.tgz", - "integrity": "sha512-1/JjbLoGwv87xVsutkX0XJc0M0W4kb40cZl/K41xtTViBOD9JuFPKfyMNTrLJ/ivYAd0aPqu/vduamXO0emTFQ==", + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-collect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-fetch": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-5.0.0.tgz", + "integrity": "sha512-fiCdUALipqgPWrOVTz9fw0XhcazULXOSU6ie40DDbX1F49p1dBrSRBuswndTx1x3vEb/g0FT7vC4c4C2u/mh3A==", "dev": true, "license": "MIT", "dependencies": { - "define-data-property": "^1.1.4", - "functions-have-names": "^1.2.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2", - "hasown": "^2.0.2", - "isarray": "^2.0.5", - "object-inspect": "^1.13.2" + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^3.0.1" }, "engines": { - "node": ">= 0.4" + "node": "^20.17.0 || >=22.9.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "optionalDependencies": { + "encoding": "^0.1.13" } }, - "node_modules/mock-property/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "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==", "dev": true, - "license": "MIT" + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-flush/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/minizlib": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", + "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, "node_modules/ms": { "version": "2.1.3", @@ -5175,18 +6287,256 @@ "dev": true, "license": "MIT" }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, - "node_modules/node-releases": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "node_modules/node-gyp": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-12.2.0.tgz", + "integrity": "sha512-q23WdzrQv48KozXlr0U1v9dwO/k59NHeSzn6loGcasyf0UnSrtzs8kRxM+mfwJSf0DkX0s43hcqgnSO4/VNthQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^15.0.0", + "nopt": "^9.0.0", + "proc-log": "^6.0.0", + "semver": "^7.3.5", + "tar": "^7.5.4", + "tinyglobby": "^0.2.12", + "which": "^6.0.0" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/node-gyp/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "node_modules/node-gyp/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-gyp/node_modules/which": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-6.0.0.tgz", + "integrity": "sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/node-options-to-argv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-options-to-argv/-/node-options-to-argv-1.0.0.tgz", + "integrity": "sha512-99rLlP+Cn/FsSV9kjpk2UmF2Ltmrpv/L9U7fUfws/MVXkeZWPpPDsQkMr79qCvSF/oTKVVJBTm5sHzmK2j6IIg==", + "dev": true, + "license": "BlueOak-1.0.0" + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/nopt": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-9.0.0.tgz", + "integrity": "sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==", + "dev": true, + "license": "ISC", + "dependencies": { + "abbrev": "^4.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/npm-bundled": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-5.0.0.tgz", + "integrity": "sha512-JLSpbzh6UUXIEoqPsYBvVNVmyrjVZ1fzEFbqxKkTJQkWBO3xFzFT+KDnSKQWwOQNbuWRwt5LSD6HOTLGIWzfrw==", + "dev": true, + "license": "ISC", + "dependencies": { + "npm-normalize-package-bin": "^5.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/npm-install-checks": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-8.0.0.tgz", + "integrity": "sha512-ScAUdMpyzkbpxoNekQ3tNRdFI8SJ86wgKZSQZdUxT+bj0wVFpsEMWnkXP0twVe1gJyNF5apBWDJhhIbgrIViRA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/npm-install-checks/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-5.0.0.tgz", + "integrity": "sha512-CJi3OS4JLsNMmr2u07OJlhcrPxCeOeP/4xq67aWNai6TNWWbTrlNDgl8NcFKVlcBKp18GPj+EzbNIgrBfZhsag==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/npm-package-arg": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-13.0.2.tgz", + "integrity": "sha512-IciCE3SY3uE84Ld8WZU23gAPPV9rIYod4F+rc+vJ7h7cwAJt9Vk6TVsK60ry7Uj3SRS3bqRRIGuTp9YVlk6WNA==", + "dev": true, + "license": "ISC", + "dependencies": { + "hosted-git-info": "^9.0.0", + "proc-log": "^6.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^7.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/npm-package-arg/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-packlist": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-10.0.3.tgz", + "integrity": "sha512-zPukTwJMOu5X5uvm0fztwS5Zxyvmk38H/LfidkOMt3gbZVCyro2cD/ETzwzVPcWZA3JOyPznfUN/nkyFiyUbxg==", + "dev": true, + "license": "ISC", + "dependencies": { + "ignore-walk": "^8.0.0", + "proc-log": "^6.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/npm-pick-manifest": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-11.0.3.tgz", + "integrity": "sha512-buzyCfeoGY/PxKqmBqn1IUJrZnUi1VVJTdSSRPGI60tJdUhUoSQFhs0zycJokDdOznQentgrpf8LayEHyyYlqQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "npm-install-checks": "^8.0.0", + "npm-normalize-package-bin": "^5.0.0", + "npm-package-arg": "^13.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/npm-pick-manifest/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-registry-fetch": { + "version": "19.1.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-19.1.1.tgz", + "integrity": "sha512-TakBap6OM1w0H73VZVDf44iFXsOS3h+L4wVMXmbWOQroZgFhMch0juN6XSzBNlD965yIKvWg2dfu7NSiaYLxtw==", "dev": true, - "license": "MIT", - "peer": true + "license": "ISC", + "dependencies": { + "@npmcli/redact": "^4.0.0", + "jsonparse": "^1.3.1", + "make-fetch-happen": "^15.0.0", + "minipass": "^7.0.2", + "minipass-fetch": "^5.0.0", + "minizlib": "^3.0.1", + "npm-package-arg": "^13.0.0", + "proc-log": "^6.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } }, "node_modules/npm-run-path": { "version": "5.3.0", @@ -5224,77 +6574,6 @@ "dev": true, "license": "MIT" }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-is": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", - "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/omggif": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", @@ -5325,6 +6604,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true, + "license": "(WTFPL OR MIT)", + "bin": { + "opener": "bin/opener-bin.js" + } + }, "node_modules/opentype.js": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/opentype.js/-/opentype.js-1.3.4.tgz", @@ -5359,24 +6648,6 @@ "node": ">= 0.8.0" } }, - "node_modules/own-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", - "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.6", - "object-keys": "^1.1.1", - "safe-push-apply": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -5409,6 +6680,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-map": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.4.tgz", + "integrity": "sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/package-json": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/package-json/-/package-json-10.0.1.tgz", @@ -5426,6 +6710,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, "node_modules/package-json/node_modules/semver": { "version": "7.7.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", @@ -5437,6 +6728,38 @@ "node": ">=10" } }, + "node_modules/pacote": { + "version": "21.1.0", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-21.1.0.tgz", + "integrity": "sha512-WF/PwrImIIVaLmtuCeO5L7n6DA0ZGCqmDPO/XbNjZgNUX+2O5z4f4Wdmu6erBWNICkl3ftKJvit2eIVcpegRRw==", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^7.0.0", + "@npmcli/installed-package-contents": "^4.0.0", + "@npmcli/package-json": "^7.0.0", + "@npmcli/promise-spawn": "^9.0.0", + "@npmcli/run-script": "^10.0.0", + "cacache": "^20.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^7.0.2", + "npm-package-arg": "^13.0.0", + "npm-packlist": "^10.0.1", + "npm-pick-manifest": "^11.0.1", + "npm-registry-fetch": "^19.0.0", + "proc-log": "^6.0.0", + "promise-retry": "^2.0.1", + "sigstore": "^4.0.0", + "ssri": "^13.0.0", + "tar": "^7.4.3" + }, + "bin": { + "pacote": "bin/index.js" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, "node_modules/pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", @@ -5474,16 +6797,6 @@ "xml2js": "^0.5.0" } }, - "node_modules/parse-ms": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-1.0.1.tgz", - "integrity": "sha512-LpH1Cf5EYuVjkBvCDBYvkUPh+iv2bk3FHflxHkpCYT0/FZ1d3N3uJaLiHr4yGuMcFUhv6eAivitTvWZI4B/chg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/parse5": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", @@ -5497,6 +6810,16 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, + "node_modules/patch-console": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/patch-console/-/patch-console-2.0.0.tgz", + "integrity": "sha512-0YNdUceMdaQwoKce1gatDScmMo5pu/tfABfnzEqeG0gtTmd7mh/WcwgUjtAeOU7N8nFFlbQBnFK2gXW5fGvmMA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -5527,12 +6850,32 @@ "node": ">=8" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "node_modules/path-scurry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", "dev": true, - "license": "MIT" + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", + "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } }, "node_modules/peek-readable": { "version": "4.1.0", @@ -5580,6 +6923,16 @@ "node": ">=0.10" } }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, "node_modules/pixelmatch": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-5.3.0.tgz", @@ -5599,16 +6952,6 @@ "node": ">=12.13.0" } }, - "node_modules/plur": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/plur/-/plur-1.0.0.tgz", - "integrity": "sha512-qSnKBSZeDY8ApxwhfVIwKwF36KVJqb1/9nzYYq3j3vdwocULCXT8f8fQGkiw1Nk9BGfxiDagEe/pwakA+bOBqw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/pngjs": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-7.0.0.tgz", @@ -5617,14 +6960,17 @@ "node": ">=14.19.0" } }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "node_modules/polite-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/polite-json/-/polite-json-5.0.0.tgz", + "integrity": "sha512-OLS/0XeUAcE8a2fdwemNja+udKgXNnY6yKVIXqAD2zVRx1KvY6Ato/rZ2vdzbxqYwPW0u6SCNC/bAMPNzpzxbw==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/prelude-ls": { @@ -5666,19 +7012,42 @@ "node": ">=6.0.0" } }, - "node_modules/pretty-ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-2.1.0.tgz", - "integrity": "sha512-H2enpsxzDhuzRl3zeSQpQMirn8dB0Z/gxW96j06tMfTviUWvX14gjKb7qd1gtkUyYhDPuoNe00K5PqNvy2oQNg==", + "node_modules/prismjs": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", + "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", "dev": true, "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/prismjs-terminal": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/prismjs-terminal/-/prismjs-terminal-1.2.4.tgz", + "integrity": "sha512-S2nsjy6s2x2jF4uTW8ulX19rvmRfe9R1wmnNwI5wmBgQEErB0vuKueVPMzN6KsFRCCJ2IQrWUS0BqhcNsrR9xg==", + "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "is-finite": "^1.0.1", - "parse-ms": "^1.0.0", - "plur": "^1.0.0" + "chalk": "^5.2.0", + "prismjs": "^1.30.0", + "string-length": "^6.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/proc-log": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", + "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/process": { @@ -5689,12 +7058,32 @@ "node": ">= 0.6.0" } }, - "node_modules/process-nextick-args": { + "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/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } }, "node_modules/proto-list": { "version": "1.2.4", @@ -5793,20 +7182,72 @@ "node": ">=0.10.0" } }, - "node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-element-to-jsx-string": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/react-element-to-jsx-string/-/react-element-to-jsx-string-15.0.0.tgz", + "integrity": "sha512-UDg4lXB6BzlobN60P8fHWVPX3Kyw8ORrTeBtClmIlGdkOOE+GYQSFvmEU5iLLpwp/6v42DINwNcwOhOLfQ//FQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@base2/pretty-print-object": "1.0.1", + "is-plain-object": "5.0.0", + "react-is": "18.1.0" + }, + "peerDependencies": { + "react": "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0", + "react-dom": "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0" + } + }, + "node_modules/react-is": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", + "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", + "dev": true, + "license": "MIT" + }, + "node_modules/react-reconciler": { + "version": "0.29.2", + "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.29.2.tgz", + "integrity": "sha512-zZQqIiYgDCTP/f1N/mAR10nJGrPD2ZR+jDSEsKWJHYC7Cm2wodlwbR3upZRdC3cjIjSlTLNVyO7Iu0Yy7t2AYg==", "dev": true, "license": "MIT", "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "react": "^18.3.1" } }, "node_modules/readable-web-to-node-stream": { @@ -5866,48 +7307,18 @@ "safe-buffer": "~5.2.0" } }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", - "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.1", - "which-builtin-type": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", - "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "dev": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "set-function-name": "^2.0.2" - }, "engines": { - "node": ">= 0.4" + "node": ">= 14.18.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, "node_modules/registry-auth-token": { @@ -5952,32 +7363,65 @@ "dev": true, "license": "MIT" }, - "node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-import": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/resolve-import/-/resolve-import-2.1.1.tgz", + "integrity": "sha512-pgTo41KMWjSZNNA4Ptgs+AtB+/w+a2/MDm6VzZiEnt2op2rXHYK/EYdRYhBsPlGN1naYMogJopBoJxtHgGTHEA==", + "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" + "glob": "^13.0.0", + "walk-up-path": "^4.0.0" }, - "bin": { - "resolve": "bin/resolve" + "engines": { + "node": "20 || >=22" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/resolve-import/node_modules/glob": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", + "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "node_modules/resolve-import/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", "dev": true, - "license": "MIT", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, "engines": { - "node": ">=4" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/restore-cursor": { @@ -6013,17 +7457,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/restore-cursor/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true, - "license": "ISC", + "license": "MIT", "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">= 4" } }, "node_modules/reusify": { @@ -6044,6 +7485,60 @@ "dev": true, "license": "MIT" }, + "node_modules/rimraf": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.2.tgz", + "integrity": "sha512-cFCkPslJv7BAXJsYlK1dZsbP8/ZNLkCAQ0bi1hf5EKX2QHegmDFEFA6QhuYJlk7UDdc+02JjO80YSOrWPpw06g==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "glob": "^13.0.0", + "package-json-from-dist": "^1.0.1" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", + "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/rrweb-cssom": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", @@ -6075,82 +7570,6 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/safe-array-concat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", - "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "has-symbols": "^1.1.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-array-concat/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/safe-push-apply": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", - "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-push-apply/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -6176,6 +7595,16 @@ "node": ">=v12.22.7" } }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, "node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -6186,55 +7615,6 @@ "semver": "bin/semver.js" } }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", - "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -6258,80 +7638,35 @@ "node": ">=8" } }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, + "license": "ISC", "engines": { - "node": ">= 0.4" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "node_modules/sigstore": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-4.1.0.tgz", + "integrity": "sha512-/fUgUhYghuLzVT/gaJoeVehLCgZiUxPCPMcyVNY0lIf/cTCz58K/WTI7PefDarXxp9nUKpEwg1yyz3eSBMTtgA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" + "@sigstore/bundle": "^4.0.0", + "@sigstore/core": "^3.1.0", + "@sigstore/protobuf-specs": "^0.5.0", + "@sigstore/sign": "^4.1.0", + "@sigstore/tuf": "^4.0.1", + "@sigstore/verify": "^3.1.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/simple-xml-to-json": { @@ -6367,73 +7702,200 @@ "dev": true, "license": "BSD-3-Clause", "engines": { - "node": ">=0.3.1" + "node": ">=0.3.1" + } + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", + "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ip-address": "^10.0.1", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "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", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true, + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.22", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz", + "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/ssri": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-13.0.0.tgz", + "integrity": "sha512-yizwGBpbCn4YomB2lzhZqrHLJoqFGXihNbib3ozhqF/cIp5ue+xSmOQrjNasEE62hFxsCcg/V/z23t4n8jMEng==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" } }, - "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/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" + "escape-string-regexp": "^2.0.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "node": ">=10" } }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "node_modules/string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", "dev": true, - "license": "BSD-3-Clause" + "license": "MIT", + "engines": { + "node": ">=0.6.19" + } }, - "node_modules/stop-iteration-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", - "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "node_modules/string-length": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-6.0.0.tgz", + "integrity": "sha512-1U361pxZHEQ+FeSjzqRpV+cu2vTzYeWeafXFLykiFlv4Vc0n3njgU8HrMbyik5uwm77naWMuVG8fhEF+Ovb1Kg==", "dev": true, "license": "MIT", "dependencies": { - "es-errors": "^1.3.0", - "internal-slot": "^1.1.0" + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/string-length/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/string-argv": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", - "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "node_modules/string-length/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", "dev": true, "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, "engines": { - "node": ">=0.6.19" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/string-width": { @@ -6453,6 +7915,39 @@ "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/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/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/node_modules/ansi-regex": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", @@ -6486,69 +7981,24 @@ "integrity": "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==", "license": "MIT" }, - "node_modules/string.prototype.trim": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-data-property": "^1.1.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-object-atoms": "^1.0.0", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, + "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==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/strip-ansi": { + "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" @@ -6617,19 +8067,6 @@ "node": ">=8" } }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -6637,188 +8074,187 @@ "dev": true, "license": "MIT" }, - "node_modules/synckit": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", - "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", + "node_modules/sync-content": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/sync-content/-/sync-content-2.0.3.tgz", + "integrity": "sha512-gKE1q9t4qBDkWqJElji6HSM2OBLK6QooA0LjYg5TYJLE7rca95u2/RKpMZ15WfW9Ri3qbFJRfiS0zbSQqvlf4w==", "dev": true, - "license": "MIT", + "license": "BlueOak-1.0.0", "dependencies": { - "@pkgr/core": "^0.2.9" + "glob": "^13.0.0", + "mkdirp": "^3.0.1", + "path-scurry": "^2.0.0", + "rimraf": "^6.0.0", + "tshy": "^3.1.0" + }, + "bin": { + "sync-content": "dist/esm/bin.mjs" }, "engines": { - "node": "^14.18.0 || >=16.0.0" + "node": "20 || >=22" }, "funding": { - "url": "https://opencollective.com/synckit" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/tap-diff": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/tap-diff/-/tap-diff-0.1.1.tgz", - "integrity": "sha512-/CVa3F1UPQh9sZQqkyMPa1zggv0sT6IepS/WJjAlljJp9fy9xVgCEREllKdy7rrJTG8StKxXhdE3lbyyhCJC8Q==", + "node_modules/sync-content/node_modules/glob": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", + "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", "dev": true, - "license": "MIT", + "license": "BlueOak-1.0.0", "dependencies": { - "chalk": "^1.1.1", - "diff": "^2.2.1", - "duplexer": "^0.1.1", - "figures": "^1.4.0", - "pretty-ms": "^2.1.0", - "tap-parser": "^1.2.2", - "through2": "^2.0.0" + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" }, - "bin": { - "tap-diff": "distributions/cli.js" - } - }, - "node_modules/tap-diff/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tap-diff/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true, - "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/tap-diff/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/sync-content/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", "dev": true, - "license": "MIT", + "license": "BlueOak-1.0.0", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "@isaacs/brace-expansion": "^5.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tap-diff/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/tap-diff/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/synckit": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", + "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "@pkgr/core": "^0.2.9" }, "engines": { - "node": ">=0.10.0" + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" } }, - "node_modules/tap-diff/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true, - "license": "MIT", + "node_modules/tap": { + "version": "21.5.0", + "resolved": "https://registry.npmjs.org/tap/-/tap-21.5.0.tgz", + "integrity": "sha512-nCTEk5fle5DaI9LV+PjA2r8g0o7HNg9w7Acv8PT1y3S4qZzX858nImeARVaRo3NSdXMhkMj4twhoaG9DXjt50g==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@tapjs/after": "3.3.0", + "@tapjs/after-each": "4.3.0", + "@tapjs/asserts": "4.3.0", + "@tapjs/before": "4.3.0", + "@tapjs/before-each": "4.3.0", + "@tapjs/chdir": "3.3.0", + "@tapjs/core": "4.4.0", + "@tapjs/filter": "4.3.0", + "@tapjs/fixture": "4.3.0", + "@tapjs/intercept": "4.3.0", + "@tapjs/mock": "4.3.0", + "@tapjs/node-serialize": "4.3.0", + "@tapjs/run": "4.4.0", + "@tapjs/snapshot": "4.3.0", + "@tapjs/spawn": "4.3.0", + "@tapjs/stdin": "4.3.0", + "@tapjs/test": "4.3.0", + "@tapjs/typescript": "3.5.0", + "@tapjs/worker": "4.3.0", + "resolve-import": "^2.1.1" + }, + "bin": { + "tap": "dist/esm/run.mjs" + }, "engines": { - "node": ">=0.8.0" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/tap-parser": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-1.3.2.tgz", - "integrity": "sha512-DvP7UJFCyqFPVTWrX51mqQPHAA7vvm77bUsIGGtaLSpHVVvfP6c4Xej5ymt0dVLngE5NouPwCsDzOVW9Bnobuw==", + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-18.3.0.tgz", + "integrity": "sha512-sa0M18e6RARfO0Lrm1zbQvb+7G4G/ThkFIJFvjeH1DKenl4xwyUgpRUCb5Jq64Xe086p4auiLvRzfpRjGd3Zow==", "dev": true, - "license": "MIT", + "license": "BlueOak-1.0.0", "dependencies": { - "events-to-array": "^1.0.1", - "inherits": "~2.0.1", - "js-yaml": "^3.2.7" + "events-to-array": "^2.0.3", + "tap-yaml": "4.3.0" }, "bin": { - "tap-parser": "bin/cmd.js" + "tap-parser": "bin/cmd.cjs" }, - "optionalDependencies": { - "readable-stream": "^2" + "engines": { + "node": "20 || >=22" } }, - "node_modules/tap-parser/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "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==", "dev": true, - "license": "MIT", + "license": "BlueOak-1.0.0", "dependencies": { - "sprintf-js": "~1.0.2" + "yaml": "^2.8.1", + "yaml-types": "^0.4.0" + }, + "engines": { + "node": "20 || >=22" } }, - "node_modules/tap-parser/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "node_modules/tar": { + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.7.tgz", + "integrity": "sha512-fov56fJiRuThVFXD6o6/Q354S7pnWMJIVlDBYijsTNx6jKSE4pvrDTs6lUnmGvNyfJwFQQwWy3owKz1ucIhveQ==", "dev": true, - "license": "MIT", + "license": "BlueOak-1.0.0", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.1.0", + "yallist": "^5.0.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=18" } }, - "node_modules/tape": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/tape/-/tape-5.9.0.tgz", - "integrity": "sha512-czbGgxSVwRlbB3Ly/aqQrNwrDAzKHDW/kVXegp4hSFmR2c8qqm3hCgZbUy1+3QAQFGhPDG7J56UsV1uNilBFCA==", + "node_modules/tar/node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", "dev": true, - "license": "MIT", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/tcompare": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-9.3.0.tgz", + "integrity": "sha512-6kFTU2xlXNFU88/DAAIQvjBu5znTGx8QPnFtaKiLin2OtspHXyevSu0iUTZt4UrSfuRC6fIahRCqaQIhXlsTVQ==", + "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "@ljharb/resumer": "^0.1.3", - "@ljharb/through": "^2.3.13", - "array.prototype.every": "^1.1.6", - "call-bind": "^1.0.7", - "deep-equal": "^2.2.3", - "defined": "^1.0.1", - "dotignore": "^0.1.2", - "for-each": "^0.3.3", - "get-package-type": "^0.1.0", - "glob": "^7.2.3", - "has-dynamic-import": "^2.1.0", - "hasown": "^2.0.2", - "inherits": "^2.0.4", - "is-regex": "^1.1.4", - "minimist": "^1.2.8", - "mock-property": "^1.1.0", - "object-inspect": "^1.13.2", - "object-is": "^1.1.6", - "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "resolve": "^2.0.0-next.5", - "string.prototype.trim": "^1.2.9" - }, - "bin": { - "tape": "bin/tape" + "diff": "^8.0.2", + "react-element-to-jsx-string": "^15.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "20 || >=22" } }, "node_modules/test-exclude": { @@ -6836,17 +8272,6 @@ "node": ">=8" } }, - "node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, "node_modules/tiny-inflate": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", @@ -6858,6 +8283,54 @@ "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==" }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -6926,6 +8399,73 @@ "node": ">=18" } }, + "node_modules/trivial-deferred": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trivial-deferred/-/trivial-deferred-2.0.0.tgz", + "integrity": "sha512-iGbM7X2slv9ORDVj2y2FFUq3cP/ypbtu2nQ8S38ufjL0glBABvmR9pTdsib1XtS2LUhhLMbelaBUaf/s5J3dSw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 8" + } + }, + "node_modules/tshy": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tshy/-/tshy-3.1.0.tgz", + "integrity": "sha512-DPBaaJSqcKFLSHTiqm3Xl2Phl7m1RtLNMe7J8qyoYO+tb2EW+txRp2NHR746GcrVicUUcNzfpm0yU1suQHRIwQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "chalk": "^5.6.2", + "chokidar": "^4.0.3", + "foreground-child": "^3.3.1", + "minimatch": "^10.0.3", + "mkdirp": "^3.0.1", + "polite-json": "^5.0.0", + "resolve-import": "^2.0.0", + "rimraf": "^6.0.1", + "sync-content": "^2.0.1", + "typescript": "^5.9.3", + "walk-up-path": "^4.0.0" + }, + "bin": { + "tshy": "dist/esm/index.js" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/tshy/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/tuf-js": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-4.1.0.tgz", + "integrity": "sha512-50QV99kCKH5P/Vs4E2Gzp7BopNV+KzTXqWeaxrfu5IQJBOULRsTIS9seSsOVT8ZnGXzCyx55nYWAi4qJzpZKEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tufjs/models": "4.1.0", + "debug": "^4.4.3", + "make-fetch-happen": "^15.0.1" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -6960,82 +8500,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", - "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", - "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.15", - "reflect.getprototypeof": "^1.0.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", - "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0", - "reflect.getprototypeof": "^1.0.6" + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=14.17" } }, "node_modules/uglify-js": { @@ -7050,23 +8526,30 @@ "node": ">=0.8.0" } }, - "node_modules/unbox-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "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": "MIT", + "license": "ISC", "dependencies": { - "call-bound": "^1.0.3", - "has-bigints": "^1.0.2", - "has-symbols": "^1.1.0", - "which-boxed-primitive": "^1.1.1" + "unique-slug": "^6.0.0" }, "engines": { - "node": ">= 0.4" + "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" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/universalify": { @@ -7173,10 +8656,20 @@ "pako": "^1.0.11" } }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", "dev": true, "license": "MIT" }, @@ -7195,6 +8688,27 @@ "node": ">=10.12.0" } }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validate-npm-package-name": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-7.0.2.tgz", + "integrity": "sha512-hVDIBwsRruT73PbK7uP5ebUt+ezEtCmzZz3F59BSr2F6OVFnJ/6h8liuvdLrQ88Xmnk6/+xGGuq+pG9WwTuy3A==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, "node_modules/w3c-xmlserializer": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", @@ -7208,6 +8722,16 @@ "node": ">=18" } }, + "node_modules/walk-up-path": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-4.0.0.tgz", + "integrity": "sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A==", + "dev": true, + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, "node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", @@ -7276,146 +8800,117 @@ "node": ">= 8" } }, - "node_modules/which-boxed-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", - "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "dev": true, - "license": "MIT", + "node_modules/widest-line": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-5.0.0.tgz", + "integrity": "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==", "dependencies": { - "is-bigint": "^1.1.0", - "is-boolean-object": "^1.2.1", - "is-number-object": "^1.1.1", - "is-string": "^1.1.1", - "is-symbol": "^1.1.1" + "string-width": "^7.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/which-builtin-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", - "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", - "is-async-function": "^2.0.0", - "is-date-object": "^1.1.0", - "is-finalizationregistry": "^1.1.0", - "is-generator-function": "^1.0.10", - "is-regex": "^1.2.1", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.1.0", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.16" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/which-builtin-type/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" }, - "node_modules/which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, + "node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", "license": "MIT", "dependencies": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "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": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/widest-line": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-5.0.0.tgz", - "integrity": "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==", + "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": { - "string-width": "^7.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=18" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "node_modules/wrap-ansi-cjs/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/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": ">=0.10.0" + "node": ">=8" } }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" - }, - "node_modules/wrap-ansi": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", - "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "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": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">=8" } }, "node_modules/wrap-ansi/node_modules/ansi-regex": { @@ -7531,16 +9026,6 @@ "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==" }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4" - } - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -7560,16 +9045,33 @@ "peer": true }, "node_modules/yaml": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.1.tgz", - "integrity": "sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==", + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", + "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", "dev": true, "license": "ISC", "bin": { "yaml": "bin.mjs" }, "engines": { - "node": ">= 14" + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, + "node_modules/yaml-types": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/yaml-types/-/yaml-types-0.4.0.tgz", + "integrity": "sha512-XfbA30NUg4/LWUiplMbiufUiwYhgB9jvBhTWel7XQqjV+GaB79c2tROu/8/Tu7jO0HvDvnKWtBk5ksWRrhQ/0g==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 16", + "npm": ">= 7" + }, + "peerDependencies": { + "yaml": "^2.3.0" } }, "node_modules/yargs": { @@ -7646,6 +9148,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/yoga-layout": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/yoga-layout/-/yoga-layout-3.2.1.tgz", + "integrity": "sha512-0LPOt3AxKqMdFBZA3HBAt/t/8vIKq7VaQYbuA8WxCgung+p9TVyKRYdpvCb80HcdTN2NkbIKbhNwKUfm3tQywQ==", + "dev": true, + "license": "MIT" + }, "node_modules/zod": { "version": "3.25.76", "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", diff --git a/package.json b/package.json index 8d937d0e..8be85a94 100644 --- a/package.json +++ b/package.json @@ -32,9 +32,9 @@ "./blitsFileConverter": "./src/lib/blitsfileconverter/blitsfileconverter.js" }, "scripts": { - "test": "c8 node scripts/runTests.js", + "test": "tape -r global-jsdom \"{src,scripts}/**/*.test.js\" | faucet", "test:ci": "c8 npm run test:run", - "test:run": "node -r global-jsdom/register ./node_modules/.bin/tape '{,!(node_modules|packages)/**/}*.test.js' | tap-diff", + "test:run": "node -r global-jsdom/register ./node_modules/.bin/tape '{,!(node_modules|packages)/**/}*.test.js'", "lint": "node scripts/lint.js", "lint:fix": "node scripts/lint.js fix", "prepublishOnly": "node scripts/prepublishOnly.js", @@ -69,8 +69,7 @@ "lint-staged": "^15.5.0", "prettier": "^3.6.2", "sinon": "^21.0.0", - "tap-diff": "^0.1.1", - "tape": "^5.5.0" + "tap": "^21.5.0" }, "dependencies": { "@lightningjs/msdf-generator": "^1.2.0", diff --git a/scripts/prepublishOnly.test.js b/scripts/prepublishOnly.test.js index 2158de16..7d79f1f4 100644 --- a/scripts/prepublishOnly.test.js +++ b/scripts/prepublishOnly.test.js @@ -15,7 +15,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import test from 'tape' +import { test } from 'tap' import sinon from 'sinon' import path from 'path' import fs from 'fs' diff --git a/src/announcer/announcer.test.js b/src/announcer/announcer.test.js index bbbf9caa..64765417 100644 --- a/src/announcer/announcer.test.js +++ b/src/announcer/announcer.test.js @@ -15,7 +15,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import test from 'tape' +import { test } from 'tap' import announcer from './announcer.js' import { initLog } from '../lib/log.js' diff --git a/src/component.test.js b/src/component.test.js index c4866c20..43fd37d2 100644 --- a/src/component.test.js +++ b/src/component.test.js @@ -15,7 +15,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import test from 'tape' +import { test } from 'tap' import Component from './component.js' import { initLog } from './lib/log.js' import symbols from './lib/symbols.js' diff --git a/src/component/base/methods.test.js b/src/component/base/methods.test.js index db4d7094..66fda7cf 100644 --- a/src/component/base/methods.test.js +++ b/src/component/base/methods.test.js @@ -1,4 +1,4 @@ -import test from 'tape' +import { test } from 'tap' import methods from './methods.js' import symbols from '../../lib/symbols.js' import Settings from '../../settings.js' diff --git a/src/component/base/timeouts_intervals.test.js b/src/component/base/timeouts_intervals.test.js index 0ec2552c..3bae1b09 100644 --- a/src/component/base/timeouts_intervals.test.js +++ b/src/component/base/timeouts_intervals.test.js @@ -15,7 +15,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import test from 'tape' +import { test } from 'tap' import timeoutsIntervals from './timeouts_intervals.js' import symbols from '../../lib/symbols.js' diff --git a/src/component/base/utils.test.js b/src/component/base/utils.test.js index 2b107c7e..a03509c9 100644 --- a/src/component/base/utils.test.js +++ b/src/component/base/utils.test.js @@ -15,7 +15,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import test from 'tape' +import { test } from 'tap' import utils from './utils.js' import symbols from '../../lib/symbols.js' diff --git a/src/component/setup/computed.test.js b/src/component/setup/computed.test.js index c8fb80f8..8ac0f029 100644 --- a/src/component/setup/computed.test.js +++ b/src/component/setup/computed.test.js @@ -1,4 +1,4 @@ -import test from 'tape' +import { test } from 'tap' import computedFn from './computed.js' import symbols from '../../lib/symbols.js' diff --git a/src/component/setup/props.test.js b/src/component/setup/props.test.js index ea22f7ee..d352d2f7 100644 --- a/src/component/setup/props.test.js +++ b/src/component/setup/props.test.js @@ -15,7 +15,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import test from 'tape' +import { test } from 'tap' import propsFn from './props.js' import { initLog } from '../../lib/log.js' import Settings from '../../settings.js' diff --git a/src/component/setup/routes.test.js b/src/component/setup/routes.test.js index 71ed0b46..a0bcb02b 100644 --- a/src/component/setup/routes.test.js +++ b/src/component/setup/routes.test.js @@ -1,4 +1,4 @@ -import test from 'tape' +import { test } from 'tap' import routes from './routes.js' import symbols from '../../lib/symbols.js' diff --git a/src/components/Sprite.test.js b/src/components/Sprite.test.js index 8361626b..a6362ddb 100644 --- a/src/components/Sprite.test.js +++ b/src/components/Sprite.test.js @@ -1,4 +1,4 @@ -import test from 'tape' +import { test } from 'tap' import Sprite from './Sprite.js' import symbols from '../lib/symbols.js' import { initLog } from '../lib/log.js' diff --git a/src/engines/L3/element.test.js b/src/engines/L3/element.test.js index 7dcae6c6..ebc23abe 100644 --- a/src/engines/L3/element.test.js +++ b/src/engines/L3/element.test.js @@ -15,7 +15,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import test from 'tape' +import { test } from 'tap' import element from './element.js' import { renderer } from './launch.js' import { EventEmitter } from 'node:events' diff --git a/src/focus.test.js b/src/focus.test.js index 9b2b8733..d71efbef 100644 --- a/src/focus.test.js +++ b/src/focus.test.js @@ -15,7 +15,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import test from 'tape' +import { test } from 'tap' import Focus from './focus.js' import Component from './component.js' import { stage } from './launch.js' diff --git a/src/helpers/deepEqualArray.test.js b/src/helpers/deepEqualArray.test.js index 060240e4..933fe326 100644 --- a/src/helpers/deepEqualArray.test.js +++ b/src/helpers/deepEqualArray.test.js @@ -15,7 +15,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import test from 'tape' +import { test } from 'tap' import deepEqual from './deepEqualArray.js' test('Type', (assert) => { diff --git a/src/lib/codegenerator/generator.test.js b/src/lib/codegenerator/generator.test.js index c61cf0c8..64624523 100644 --- a/src/lib/codegenerator/generator.test.js +++ b/src/lib/codegenerator/generator.test.js @@ -15,7 +15,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import test from 'tape' +import { test } from 'tap' import generator from './generator.js' const normalize = (str) => { diff --git a/src/lib/colors/colors.test.js b/src/lib/colors/colors.test.js index 2611b451..5cacf8b4 100644 --- a/src/lib/colors/colors.test.js +++ b/src/lib/colors/colors.test.js @@ -15,7 +15,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import test from 'tape' +import { test } from 'tap' import colors from './colors.js' test('Object', (assert) => { diff --git a/src/lib/componentId.test.js b/src/lib/componentId.test.js index fde48708..5658fe25 100644 --- a/src/lib/componentId.test.js +++ b/src/lib/componentId.test.js @@ -15,7 +15,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import test from 'tape' +import { test } from 'tap' import { createHumanReadableId, createInternalId, resetCounter } from './componentId.js' test('Type createHumandReadableId', (assert) => { diff --git a/src/lib/eventListeners.test.js b/src/lib/eventListeners.test.js index feb5898c..535df751 100644 --- a/src/lib/eventListeners.test.js +++ b/src/lib/eventListeners.test.js @@ -15,7 +15,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import test from 'tape' +import { test } from 'tap' import eventListener from './eventListeners.js' const resetModule = () => { diff --git a/src/lib/reactivity/effect.test.js b/src/lib/reactivity/effect.test.js index 52cc0e19..5988bc6e 100644 --- a/src/lib/reactivity/effect.test.js +++ b/src/lib/reactivity/effect.test.js @@ -15,7 +15,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import test from 'tape' +import { test } from 'tap' import { trigger, track, effect } from './effect.js' test('Trigger - type', (assert) => { diff --git a/src/lib/reactivity/reactive.test.js b/src/lib/reactivity/reactive.test.js index 7e87a152..8affb6c9 100644 --- a/src/lib/reactivity/reactive.test.js +++ b/src/lib/reactivity/reactive.test.js @@ -15,7 +15,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import test from 'tape' +import { test } from 'tap' import { reactive } from './reactive.js' import { effect, pauseTracking, resumeTracking } from './effect.js' import symbols from '../symbols.js' diff --git a/src/lib/templateparser/parser.test.js b/src/lib/templateparser/parser.test.js index ad398530..e2b82c9a 100644 --- a/src/lib/templateparser/parser.test.js +++ b/src/lib/templateparser/parser.test.js @@ -15,7 +15,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import test from 'tape' +import { test } from 'tap' import parser from './parser.js' import symbols from '../symbols.js' const { componentType } = symbols diff --git a/src/plugin.test.js b/src/plugin.test.js index 24dbb2e4..9f12d85b 100644 --- a/src/plugin.test.js +++ b/src/plugin.test.js @@ -1,4 +1,4 @@ -import test from 'tape' +import { test } from 'tap' import registerPlugin, { plugins } from './plugin.js' test('Function plugin registration', (assert) => { diff --git a/src/plugins/storage/localCookie.test.js b/src/plugins/storage/localCookie.test.js index 704f3bfb..8f1b70d6 100644 --- a/src/plugins/storage/localCookie.test.js +++ b/src/plugins/storage/localCookie.test.js @@ -1,4 +1,4 @@ -import test from 'tape' +import { test } from 'tap' import Storage from './localCookie.js' const ls = new Storage() diff --git a/src/plugins/storage/storage.test.js b/src/plugins/storage/storage.test.js index 8921a9e4..26e97cac 100644 --- a/src/plugins/storage/storage.test.js +++ b/src/plugins/storage/storage.test.js @@ -15,7 +15,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import test from 'tape' +import { test } from 'tap' import storagePlugin from './storage.js' const storage = storagePlugin.plugin() diff --git a/src/plugins/theme.test.js b/src/plugins/theme.test.js index 3c143861..4beadb0e 100644 --- a/src/plugins/theme.test.js +++ b/src/plugins/theme.test.js @@ -15,7 +15,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import test from 'tape' +import { test } from 'tap' import themePlugin from './theme.js' test('Empty Theme creation', (assert) => { diff --git a/src/router/router.test.js b/src/router/router.test.js index e37428f8..ff0bd10c 100644 --- a/src/router/router.test.js +++ b/src/router/router.test.js @@ -15,7 +15,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import test from 'tape' +import { test } from 'tap' import { matchHash, getHash, to, navigate, state } from './router.js' import { stage } from '../launch.js' import Component from '../component.js' diff --git a/src/settings.test.js b/src/settings.test.js index 01201370..365d513d 100644 --- a/src/settings.test.js +++ b/src/settings.test.js @@ -15,7 +15,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import test from 'tape' +import { test } from 'tap' import settings from './settings.js' test('Settings - Set a new key ', (assert) => { From 657277dee39454d41f1433769e56bc33d6786e90 Mon Sep 17 00:00:00 2001 From: Miles Nash Date: Thu, 29 Jan 2026 21:48:19 +0000 Subject: [PATCH 03/28] fix: deepEqual -> same --- src/component/base/methods.test.js | 6 +-- src/component/setup/routes.test.js | 4 +- src/engines/L3/element.test.js | 2 +- src/lib/colors/colors.test.js | 34 +++++---------- src/lib/reactivity/reactive.test.js | 4 +- src/lib/templateparser/parser.test.js | 60 +++++++++++++-------------- src/plugin.test.js | 2 +- src/plugins/storage/storage.test.js | 2 +- src/router/router.test.js | 32 +++++++------- 9 files changed, 65 insertions(+), 81 deletions(-) diff --git a/src/component/base/methods.test.js b/src/component/base/methods.test.js index 66fda7cf..6ad1e58c 100644 --- a/src/component/base/methods.test.js +++ b/src/component/base/methods.test.js @@ -288,8 +288,8 @@ test('Methods - Validate destroy method behavior', (assert) => { // Following properties can still exists in component instance but with reset/cleared values assert.equal(component.eol, true, 'Component should be marked as end of life') - assert.deepEqual(component.lifecycle, {}, 'Lifecycle state should be destroy') - assert.deepEqual(component[symbols.state], {}, 'symbol state should be deleted') + assert.same(component.lifecycle, {}, 'Lifecycle state should be destroy') + assert.same(component[symbols.state], {}, 'symbol state should be deleted') assert.equal( component[symbols.rendererEventListeners], null, @@ -297,7 +297,7 @@ test('Methods - Validate destroy method behavior', (assert) => { ) assert.equal(component[symbols.timeouts].length, 0, 'All timeouts should be cleared') assert.equal(component[symbols.intervals].length, 0, 'All intervals should be cleared') - assert.deepEqual(component[symbols.props], {}, 'symbol props should be cleared') + assert.same(component[symbols.props], {}, 'symbol props should be cleared') // Following properties should be deleted from component instance assert.equal(component[symbols.effects], undefined, 'symbol effects should be deleted') diff --git a/src/component/setup/routes.test.js b/src/component/setup/routes.test.js index a0bcb02b..9f575cf1 100644 --- a/src/component/setup/routes.test.js +++ b/src/component/setup/routes.test.js @@ -20,12 +20,12 @@ test('Array routes with default options', (assert) => { routes(component, routeData) assert.equal(component[symbols.routes].length, 2, 'Should set correct number of routes') - assert.deepEqual( + assert.same( component[symbols.routes][0].options, { inHistory: true }, 'Should apply default options when none specified' ) - assert.deepEqual( + assert.same( component[symbols.routes][1].options, { inHistory: false }, 'Should override default options when specified' diff --git a/src/engines/L3/element.test.js b/src/engines/L3/element.test.js index ebc23abe..b2790032 100644 --- a/src/engines/L3/element.test.js +++ b/src/engines/L3/element.test.js @@ -88,7 +88,7 @@ test('Children', (assert) => { const result = el.children assert.equal(result.length, 2, 'Children amount should be correct') - assert.deepEqual( + assert.same( result.map((c) => c.id), [1, 4], 'Children should be correct' diff --git a/src/lib/colors/colors.test.js b/src/lib/colors/colors.test.js index 5cacf8b4..750f0b5a 100644 --- a/src/lib/colors/colors.test.js +++ b/src/lib/colors/colors.test.js @@ -54,7 +54,7 @@ test('6 character hex', (assert) => { const actual = input.map(colors.normalize) - assert.deepEqual( + assert.same( actual, expected, 'A 6 character hex code should return the correct color in rgba format' @@ -75,7 +75,7 @@ test('3 character hex', (assert) => { const actual = input.map(colors.normalize) - assert.deepEqual( + assert.same( actual, expected, 'A 3 character hex code should return the correct color in rgba format' @@ -111,7 +111,7 @@ test('8 character hex (rgba)', (assert) => { const actual = input.map(colors.normalize) - assert.deepEqual( + assert.same( actual, expected, 'A 8 character hex (rgba) code should return the correct color in rgba format' @@ -149,11 +149,7 @@ test('Invalid hex values', (assert) => { const actual = input.map((color) => colors.normalize(color)) - assert.deepEqual( - actual, - expected, - 'Invalid hex values should return white color as the default color' - ) + assert.same(actual, expected, 'Invalid hex values should return white color as the default color') assert.end() }) @@ -169,7 +165,7 @@ test('RGB colors', (assert) => { const actual = input.map(colors.normalize) - assert.deepEqual(actual, expected, 'RGB codes should return the correct color in rgba format') + assert.same(actual, expected, 'RGB codes should return the correct color in rgba format') assert.end() }) @@ -185,7 +181,7 @@ test('Invalid RGB colors', (assert) => { const actual = input.map((color) => colors.normalize(color)) - assert.deepEqual(actual, expected, 'Invalid RGB codes should return white color in rgba format') + assert.same(actual, expected, 'Invalid RGB codes should return white color in rgba format') assert.end() }) @@ -211,7 +207,7 @@ test('RGBA colors', (assert) => { const actual = input.map(colors.normalize) - assert.deepEqual(actual, expected, 'RGBA codes should return the correct color in rgba format') + assert.same(actual, expected, 'RGBA codes should return the correct color in rgba format') assert.end() }) @@ -237,7 +233,7 @@ test('Invalid RGBA colors', (assert) => { const actual = input.map((color) => colors.normalize(color)) - assert.deepEqual(actual, expected, 'Invalid RGBA codes should return white color in rgba format') + assert.same(actual, expected, 'Invalid RGBA codes should return white color in rgba format') assert.end() }) @@ -247,11 +243,7 @@ test('HTML colors', (assert) => { const actual = input.map(colors.normalize) - assert.deepEqual( - actual, - expected, - 'HTML color codes should return the correct color in rgba format' - ) + assert.same(actual, expected, 'HTML color codes should return the correct color in rgba format') assert.end() }) @@ -261,11 +253,7 @@ test('Invalid HTML colors', (assert) => { const actual = input.map((color) => colors.normalize(color)) - assert.deepEqual( - actual, - expected, - 'Invalid HTML color codes should return white color in rgba format' - ) + assert.same(actual, expected, 'Invalid HTML color codes should return white color in rgba format') assert.end() }) @@ -281,7 +269,7 @@ test('Invalid HTML colors', (assert) => { // const actual = input.map(colors.normalize) -// assert.deepEqual(actual, expected, 'A hsl code should return the correct color in rgba format') +// assert.same(actual, expected, 'A hsl code should return the correct color in rgba format') // assert.end() // }) diff --git a/src/lib/reactivity/reactive.test.js b/src/lib/reactivity/reactive.test.js index 8affb6c9..f6820593 100644 --- a/src/lib/reactivity/reactive.test.js +++ b/src/lib/reactivity/reactive.test.js @@ -247,7 +247,7 @@ test('Reactive - Get raw object from proxy', (assert) => { const originalObj = { a: 100, b: 200 } const proxiedObj = reactive(originalObj) - assert.deepEqual( + assert.same( proxiedObj[symbols.raw], originalObj, 'Should return the original object from the proxy using the raw symbol' @@ -260,7 +260,7 @@ test('Reactive - Get raw object from proxy', (assert) => { test('Reactive - Check reactive object is a proxy or not', (assert) => { const proxiedObj = reactive({ a: 100, b: 200 }) - assert.deepEqual(proxiedObj[symbols.isProxy], true, 'Reactive object should be a proxy') + assert.same(proxiedObj[symbols.isProxy], true, 'Reactive object should be a proxy') assert.end() }) diff --git a/src/lib/templateparser/parser.test.js b/src/lib/templateparser/parser.test.js index e2b82c9a..322c4fdc 100644 --- a/src/lib/templateparser/parser.test.js +++ b/src/lib/templateparser/parser.test.js @@ -53,7 +53,7 @@ test('Parse simple single tag', (assert) => { } const actual = parser(template) - assert.deepEqual(actual, expected, 'Parser should return object representation of template') + assert.same(actual, expected, 'Parser should return object representation of template') assert.end() }) @@ -74,7 +74,7 @@ test('Parse simple tag and simple nested tag', (assert) => { } const actual = parser(template) - assert.deepEqual(actual, expected, 'Parser should return object representation of template') + assert.same(actual, expected, 'Parser should return object representation of template') assert.end() }) @@ -92,7 +92,7 @@ test('Parse simple single tag with static attributes', (assert) => { } const actual = parser(template) - assert.deepEqual(actual, expected, 'Parser should return object representation of template') + assert.same(actual, expected, 'Parser should return object representation of template') assert.end() }) @@ -117,7 +117,7 @@ test('Parse tag with attributes and nested tag with attributes', (assert) => { } const actual = parser(template) - assert.deepEqual(actual, expected, 'Parser should return object representation of template') + assert.same(actual, expected, 'Parser should return object representation of template') assert.end() }) @@ -153,7 +153,7 @@ test('Parse tag with attributes and 2 nested tags with attributes', (assert) => } const actual = parser(template) - assert.deepEqual(actual, expected, 'Parser should return object representation of template') + assert.same(actual, expected, 'Parser should return object representation of template') assert.end() }) @@ -202,7 +202,7 @@ test('Parse tag with attributes and deep nested tag with attributes', (assert) = } const actual = parser(template) - assert.deepEqual(actual, expected, 'Parser should return object representation of template') + assert.same(actual, expected, 'Parser should return object representation of template') assert.end() }) @@ -220,7 +220,7 @@ test('Parse simple single tag with dynamic attributes', (assert) => { } const actual = parser(template) - assert.deepEqual(actual, expected, 'Parser should return object representation of template') + assert.same(actual, expected, 'Parser should return object representation of template') assert.end() }) @@ -241,7 +241,7 @@ test('Parse tag with attributes and reactive attributes', (assert) => { } const actual = parser(template) - assert.deepEqual(actual, expected, 'Parser should return object representation of template') + assert.same(actual, expected, 'Parser should return object representation of template') assert.end() }) @@ -260,7 +260,7 @@ test("Parse simple single tag where one of the attributes has a dash in it's nam } const actual = parser(template) - assert.deepEqual(actual, expected, 'Parser should return object representation of template') + assert.same(actual, expected, 'Parser should return object representation of template') assert.end() }) @@ -281,7 +281,7 @@ test('Parse nested self closing tag', (assert) => { } const actual = parser(template) - assert.deepEqual(actual, expected, 'Parser should return object representation of template') + assert.same(actual, expected, 'Parser should return object representation of template') assert.end() }) @@ -308,7 +308,7 @@ test('Parse multiple nested self closing tags', (assert) => { } const actual = parser(template) - assert.deepEqual(actual, expected, 'Parser should return object representation of template') + assert.same(actual, expected, 'Parser should return object representation of template') assert.end() }) @@ -325,7 +325,7 @@ test('Parse attributes which values have spaces in it', (assert) => { } const actual = parser(template) - assert.deepEqual(actual, expected, 'Parser should return object representation of template') + assert.same(actual, expected, 'Parser should return object representation of template') assert.end() }) @@ -353,7 +353,7 @@ test('Parse attributes with an expression in it', (assert) => { } const actual = parser(template) - assert.deepEqual(actual, expected, 'Parser should return object representation of template') + assert.same(actual, expected, 'Parser should return object representation of template') assert.end() }) @@ -392,7 +392,7 @@ test('Parse template with commented tag (and skip it)', (assert) => { } const actual = parser(template) - assert.deepEqual(actual, expected, 'Parser should return object representation of template') + assert.same(actual, expected, 'Parser should return object representation of template') assert.end() }) @@ -425,7 +425,7 @@ test('Parse template with comment spanned across multiple tags (and skip it)', ( } const actual = parser(template) - assert.deepEqual(actual, expected, 'Parser should return object representation of template') + assert.same(actual, expected, 'Parser should return object representation of template') assert.end() }) @@ -466,7 +466,7 @@ test('Parse template with enclosing comment (and skip it)', (assert) => { } const actual = parser(template) - assert.deepEqual(actual, expected, 'Parser should return object representation of template') + assert.same(actual, expected, 'Parser should return object representation of template') assert.end() }) @@ -491,7 +491,7 @@ test('Parse template with for loop', (assert) => { } const actual = parser(template) - assert.deepEqual(actual, expected, 'Parser should return object representation of template') + assert.same(actual, expected, 'Parser should return object representation of template') assert.end() }) @@ -522,7 +522,7 @@ test('Parse template with a conditional (if-statement)', (assert) => { } const actual = parser(template) - assert.deepEqual(actual, expected, 'Parser should return object representation of template') + assert.same(actual, expected, 'Parser should return object representation of template') assert.end() }) @@ -559,7 +559,7 @@ test('Parse template with a visibility toggle (show-statement)', (assert) => { } const actual = parser(template) - assert.deepEqual(actual, expected, 'Parser should return object representation of template') + assert.same(actual, expected, 'Parser should return object representation of template') assert.end() }) @@ -594,7 +594,7 @@ test('Parse template with a nameless tag', (assert) => { } const actual = parser(template) - assert.deepEqual(actual, expected, 'Parser should return object representation of template') + assert.same(actual, expected, 'Parser should return object representation of template') assert.end() }) @@ -614,7 +614,7 @@ test('Parse template with a transition argument (single value)', (assert) => { } const actual = parser(template) - assert.deepEqual(actual, expected, 'Parser should return object representation of template') + assert.same(actual, expected, 'Parser should return object representation of template') assert.end() }) @@ -634,7 +634,7 @@ test('Parse template with a transition argument (object)', (assert) => { } const actual = parser(template) - assert.deepEqual(actual, expected, 'Parser should return object representation of template') + assert.same(actual, expected, 'Parser should return object representation of template') assert.end() }) @@ -654,7 +654,7 @@ test('Parse template with a different modifier', (assert) => { } const actual = parser(template) - assert.deepEqual(actual, expected, 'Parser should return object representation of template') + assert.same(actual, expected, 'Parser should return object representation of template') assert.end() }) @@ -674,7 +674,7 @@ test('Parse template with a full transition object (without the transition modif } const actual = parser(template) - assert.deepEqual(actual, expected, 'Parser should return object representation of template') + assert.same(actual, expected, 'Parser should return object representation of template') assert.end() }) @@ -731,7 +731,7 @@ test('Parse template with attributes with values spread over multiple lines', (a const actual = parser(template) - assert.deepEqual(actual, expected, 'Parser should return object representation of template') + assert.same(actual, expected, 'Parser should return object representation of template') assert.end() }) @@ -762,7 +762,7 @@ test('Parse template with inline text between tags', (assert) => { const actual = parser(template) - assert.deepEqual(actual, expected, 'Parser should return object representation of template') + assert.same(actual, expected, 'Parser should return object representation of template') assert.end() }) @@ -823,7 +823,7 @@ test('Parse template with multiple inline texts between different tags', (assert const actual = parser(template) - assert.deepEqual(actual, expected, 'Parser should return object representation of template') + assert.same(actual, expected, 'Parser should return object representation of template') assert.end() }) @@ -854,7 +854,7 @@ test('Parse template with attribute name starts with @ character', (assert) => { const actual = parser(template) - assert.deepEqual(actual, expected, 'Parser should return object representation of template') + assert.same(actual, expected, 'Parser should return object representation of template') assert.end() }) @@ -911,7 +911,7 @@ test('Parse template with attribute values with delimited either single or doubl const actual = parser(template) - assert.deepEqual(actual, expected, 'Parser should return object representation of template') + assert.same(actual, expected, 'Parser should return object representation of template') assert.end() }) @@ -1381,7 +1381,7 @@ test('Parse template with color and effects attributes and parsing should conver const actual = parser(template) - assert.deepEqual( + assert.same( actual, expected, 'Parser should return object representation of template with color values converted' diff --git a/src/plugin.test.js b/src/plugin.test.js index 9f12d85b..75a0613a 100644 --- a/src/plugin.test.js +++ b/src/plugin.test.js @@ -15,7 +15,7 @@ test('Function plugin registration', (assert) => { ) registerPlugin(mockPlugin, 'testPluginWithOptions', options) - assert.deepEqual( + assert.same( plugins.testPluginWithOptions.options, options, 'Function plugin registered with custom options' diff --git a/src/plugins/storage/storage.test.js b/src/plugins/storage/storage.test.js index 26e97cac..7f389f6e 100644 --- a/src/plugins/storage/storage.test.js +++ b/src/plugins/storage/storage.test.js @@ -58,7 +58,7 @@ test('Storage - get existing key', (assert) => { const expected = value const actual = storage.get(key) - assert.deepEqual(actual, expected, 'Get should return the correct value for existing key') + assert.same(actual, expected, 'Get should return the correct value for existing key') assert.end() }) diff --git a/src/router/router.test.js b/src/router/router.test.js index ff0bd10c..353aeb69 100644 --- a/src/router/router.test.js +++ b/src/router/router.test.js @@ -197,7 +197,7 @@ test('Match paths with a wildcard asterix', (assert) => { test('Add params to route for dynamic route matches', (assert) => { const match1 = matchHash({ path: '/tv/simpsons/seasons/first' }, routes) - assert.deepEqual( + assert.same( match1.params, { show: 'simpsons', @@ -207,7 +207,7 @@ test('Add params to route for dynamic route matches', (assert) => { ) const match2 = matchHash({ path: '/movies/avengers-endgame' }, routes) - assert.deepEqual( + assert.same( match2.params, { name: 'avengers-endgame', @@ -216,7 +216,7 @@ test('Add params to route for dynamic route matches', (assert) => { ) const match3 = matchHash({ path: '/dutchmovies/1' }, routes) - assert.deepEqual( + assert.same( match3.params, { id: '1', @@ -229,20 +229,20 @@ test('Add params to route for dynamic route matches', (assert) => { test('Add remaining path as param for wild card routes', (assert) => { const match1 = matchHash({ path: '/examples/example1' }, routes) - assert.deepEqual(match1.params, { path: 'example1' }, 'Should return the correct route object') + assert.same(match1.params, { path: 'example1' }, 'Should return the correct route object') const match2 = matchHash({ path: '/examples/example1/subexample/and-another-page' }, routes) - assert.deepEqual( + assert.same( match2.params, { path: 'example1/subexample/and-another-page' }, 'Should return the correct params object' ) const match3 = matchHash({ path: '/404' }, routes) - assert.deepEqual(match3.params, { path: '404' }, 'Should return the correct params object') + assert.same(match3.params, { path: '404' }, 'Should return the correct params object') const match4 = matchHash({ path: '/page1/subpage1/i-dont-exist' }, routes) - assert.deepEqual( + assert.same( match4.params, { path: 'page1/subpage1/i-dont-exist' }, 'Should return the correct params object' @@ -348,7 +348,7 @@ test('Match routes case insensitive', (assert) => { test('Match routes case insensitive, but pass props with original casing', (assert) => { const match1 = matchHash({ path: '/Tv/SimpsonS/Seasons/First' }, routes) - assert.deepEqual( + assert.same( match1.params, { show: 'SimpsonS', @@ -358,7 +358,7 @@ test('Match routes case insensitive, but pass props with original casing', (asse ) const match2 = matchHash({ path: '/Movies/Avengers-Endgame' }, routes) - assert.deepEqual( + assert.same( match2.params, { name: 'Avengers-Endgame', @@ -367,7 +367,7 @@ test('Match routes case insensitive, but pass props with original casing', (asse ) const match3 = matchHash({ path: '/DutchMovies/ID_123' }, routes) - assert.deepEqual( + assert.same( match3.params, { id: 'ID_123', @@ -489,7 +489,7 @@ test('Get route object from Match hash when navigating using to() method', (asse 'The results object should contain the default options object' ) - assert.deepEqual( + assert.same( Object.entries(result.options), [ ['inHistory', true], @@ -594,8 +594,8 @@ test('Router updates state.path, state.params, and state.data correctly', async // Assertions directly against router.js `state` assert.equal(state.path, '/cap/:id', 'state.path matches route definition') - assert.deepEqual(state.params, { id: '123' }, 'state.params extracted correctly') - assert.deepEqual( + assert.same(state.params, { id: '123' }, 'state.params extracted correctly') + assert.same( state.data, { title: 'Test', dynamic: true, lang: 'en' }, 'state.data merged correctly (route + navigation + query)' @@ -675,10 +675,6 @@ test('BeforeEach hook route object redirect', async (assert) => { test('Route meta data is accessible in route object', async (assert) => { const route = { path: '/test', meta: { auth: true, role: 'admin' } } - assert.deepEqual( - route.meta, - { auth: true, role: 'admin' }, - 'Should have access to route meta data' - ) + assert.same(route.meta, { auth: true, role: 'admin' }, 'Should have access to route meta data') assert.end() }) From 7cd1f51f78299029477d6f8be1835f34872d95c7 Mon Sep 17 00:00:00 2001 From: Miles Nash Date: Thu, 29 Jan 2026 21:48:46 +0000 Subject: [PATCH 04/28] fix: failing test in prepublishOnly.test.js --- scripts/prepublishOnly.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/prepublishOnly.test.js b/scripts/prepublishOnly.test.js index 7d79f1f4..65e9c043 100644 --- a/scripts/prepublishOnly.test.js +++ b/scripts/prepublishOnly.test.js @@ -233,7 +233,7 @@ test('processDirectory - should handle empty directory', (assert) => { test('processFile - should create backup with .orig.js extension', (assert) => { const filePath = path.resolve(process.cwd(), 'src', 'component.js') - const expectedBackup = path.resolve(process.cwd(), 'Component.orig.js') + const expectedBackup = path.resolve(process.cwd(), 'src', 'component.orig.js') const readStub = sinon.stub(fs, 'readFileSync').returns('const test = "code"') const writeStub = sinon.stub(fs, 'writeFileSync') const copyStub = sinon.stub(fs, 'copyFileSync') From 57e992d86ff9a7c08e82b91887c645c6238fb382 Mon Sep 17 00:00:00 2001 From: Miles Nash Date: Thu, 29 Jan 2026 22:05:25 +0000 Subject: [PATCH 05/28] fix: move keyMap to own file to allow method.js tests to run Prior to this change, the import tree branching from method.test.js would cause keyMap to be accessed before instantiation --- src/application.js | 12 +++--------- src/component/base/methods.js | 7 +++++-- src/keymap.js | 14 ++++++++++++++ 3 files changed, 22 insertions(+), 11 deletions(-) create mode 100644 src/keymap.js diff --git a/src/application.js b/src/application.js index c6a9758d..e9c78a14 100644 --- a/src/application.js +++ b/src/application.js @@ -15,6 +15,7 @@ * SPDX-License-Identifier: Apache-2.0 */ +import keyMap from './keymap.js' import Component from './component.js' import { default as Focus, keyUpCallbacks } from './focus.js' import Settings from './settings.js' @@ -22,13 +23,6 @@ import Settings from './settings.js' import symbols from './lib/symbols.js' import { DEFAULT_HOLD_TIMEOUT_MS, DEFAULT_KEYMAP } from './constants.js' -/** - * Merged keyMap (default + custom settings). - * Initialized once during application init. - * @type {Object} - */ -export let keyMap = {} - const Application = (config) => { config.hooks = config.hooks || {} @@ -52,7 +46,7 @@ const Application = (config) => { this.$announcer.configure(announcerOptions) } // Initialize merged keyMap once during application init - keyMap = { ...DEFAULT_KEYMAP, ...Settings.get('keymap', {}) } + const appKeyMap = keyMap.set({ ...DEFAULT_KEYMAP, ...Settings.get('keymap', {}) }) /** @type {number} Input throttle time in milliseconds (0 = disabled) */ const throttleMs = Settings.get('inputThrottle', 0) @@ -60,7 +54,7 @@ const Application = (config) => { keyDownHandler = async (e) => { const currentTime = performance.now() - const key = keyMap[e.key] || keyMap[e.keyCode] || e.key || e.keyCode + const key = appKeyMap[e.key] || appKeyMap[e.keyCode] || e.key || String(e.keyCode) const sameKey = lastInputKey === key lastInputKey = key // execute immediately when no throttle is specified or event is internal (bubbled up by focus manager) diff --git a/src/component/base/methods.js b/src/component/base/methods.js index 6e14853a..0da17d4c 100644 --- a/src/component/base/methods.js +++ b/src/component/base/methods.js @@ -23,7 +23,7 @@ import { trigger } from '../../lib/reactivity/effect.js' import { Log } from '../../lib/log.js' import { removeGlobalEffects } from '../../lib/reactivity/effect.js' import { renderer } from '../../launch.js' -import { keyMap } from '../../application.js' +import keyMap from '../../keymap.js' export default { focus: { @@ -64,7 +64,10 @@ export default { if (event === null || event === undefined || event instanceof KeyboardEvent === false) return false - const key = keyMap[event.key] || keyMap[event.keyCode] || event.key || event.keyCode + const appKeyMap = keyMap.get() + + const key = + appKeyMap[event.key] || appKeyMap[event.keyCode] || event.key || String(event.keyCode) const componentWithInputEvent = getComponentWithInputEvent(this, key) if (componentWithInputEvent === null) return false diff --git a/src/keymap.js b/src/keymap.js new file mode 100644 index 00000000..9f6790e1 --- /dev/null +++ b/src/keymap.js @@ -0,0 +1,14 @@ +/** + * Merged keyMap (default + custom settings). + * Initialized once during application init. + * @type {Object} + */ +let keyMap = {} + +export default { + get: () => keyMap, + set: (newKeyMap) => { + keyMap = newKeyMap + return keyMap + }, +} From 5f2e3bd0b03373cb249d38373c0ae4944d3c0e51 Mon Sep 17 00:00:00 2001 From: Miles Nash Date: Thu, 29 Jan 2026 22:30:25 +0000 Subject: [PATCH 06/28] fix: component.test.js Tests were failing in this file due to component accessing props of Log before it was initialised. Also, use of non-existent assert.equals --- src/component.test.js | 68 +++++++++++++++++++++++-------------------- 1 file changed, 36 insertions(+), 32 deletions(-) diff --git a/src/component.test.js b/src/component.test.js index 43fd37d2..14c769c3 100644 --- a/src/component.test.js +++ b/src/component.test.js @@ -15,7 +15,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { test } from 'tap' +import t from 'tap' import Component from './component.js' import { initLog } from './lib/log.js' import symbols from './lib/symbols.js' @@ -23,7 +23,11 @@ import util from 'node:util' import Settings from './settings.js' import { renderer, stage } from './launch.js' -test('Type', (assert) => { +t.beforeEach(() => { + initLog() +}) + +t.test('Type', (assert) => { const expected = 'function' const actual = typeof Component @@ -31,7 +35,7 @@ test('Type', (assert) => { assert.end() }) -test('Component - Factory function', (assert) => { +t.test('Component - Factory function', (assert) => { const expected = 'function' const actual = typeof Component('my component', {}) @@ -39,7 +43,7 @@ test('Component - Factory function', (assert) => { assert.end() }) -test('Component - Factory requires a name to be passed', (assert) => { +t.test('Component - Factory requires a name to be passed', (assert) => { assert.throws(() => { Component() }, 'Throw an error when no name argument has been passed') @@ -47,7 +51,7 @@ test('Component - Factory requires a name to be passed', (assert) => { assert.end() }) -test('Component - Factory requires a config to be passed', (assert) => { +t.test('Component - Factory requires a config to be passed', (assert) => { assert.throws(() => { Component('Foo') }, 'Throw an error when no config argument has been passed') @@ -55,7 +59,7 @@ test('Component - Factory requires a config to be passed', (assert) => { assert.end() }) -test('Component - Instance should create internal id', (assert) => { +t.test('Component - Instance should create internal id', (assert) => { const button = Component('Button', {})() const heading = Component('Heading', {})() @@ -64,7 +68,7 @@ test('Component - Instance should create internal id', (assert) => { assert.end() }) -test('Component - Instance should create component Id', (assert) => { +t.test('Component - Instance should create component Id', (assert) => { const foo = Component('Foo', {}) const bar = Component('Bar', {}) const fooInstance0 = foo() @@ -89,7 +93,7 @@ test('Component - Instance should create component Id', (assert) => { assert.end() }) -test('Component - Instance should initiate lifecycle object', (assert) => { +t.test('Component - Instance should initiate lifecycle object', (assert) => { const foo = Component('Foo', {})() assert.ok(foo.lifecycle, 'Lifecycle object should be initialized') @@ -107,7 +111,7 @@ test('Component - Instance should initiate lifecycle object', (assert) => { assert.end() }) -test('Component - Instance should set a parent reference', (assert) => { +t.test('Component - Instance should set a parent reference', (assert) => { const parentElement = {} const parentComponent = {} @@ -126,7 +130,7 @@ test('Component - Instance should set a parent reference', (assert) => { assert.end() }) -test('Component - Instance should set a root reference', (assert) => { +t.test('Component - Instance should set a root reference', (assert) => { const root = {} const foo = Component('Foo', {})({}, {}, {}, root) @@ -139,7 +143,7 @@ test('Component - Instance should set a root reference', (assert) => { assert.end() }) -test('Component - Instance should initialize reactive props', (assert) => { +t.test('Component - Instance should initialize reactive props', (assert) => { const foo = Component( 'Foo', {} @@ -155,7 +159,7 @@ test('Component - Instance should initialize reactive props', (assert) => { assert.end() }) -test('Component - Instance should initialize timeouts array', (assert) => { +t.test('Component - Instance should initialize timeouts array', (assert) => { const foo = Component('Foo', {})() const timeouts = foo[symbols.timeouts] @@ -164,7 +168,7 @@ test('Component - Instance should initialize timeouts array', (assert) => { assert.end() }) -test('Component - Instance should initialize intervals array', (assert) => { +t.test('Component - Instance should initialize intervals array', (assert) => { const foo = Component('Foo', {})() const intervals = foo[symbols.intervals] @@ -173,7 +177,7 @@ test('Component - Instance should initialize intervals array', (assert) => { assert.end() }) -test('Component - Instance should initialize originalState', (assert) => { +t.test('Component - Instance should initialize originalState', (assert) => { const config = { state() { return { @@ -190,7 +194,7 @@ test('Component - Instance should initialize originalState', (assert) => { assert.end() }) -test('Component - Instance should initialize reactive state', (assert) => { +t.test('Component - Instance should initialize reactive state', (assert) => { const config = { state() { return { @@ -208,7 +212,7 @@ test('Component - Instance should initialize reactive state', (assert) => { assert.end() }) -test('Component - Instance should initialize children', (assert) => { +t.test('Component - Instance should initialize children', (assert) => { const parent = {} const expected = [] const config = { @@ -242,7 +246,7 @@ test('Component - Instance should initialize children', (assert) => { assert.end() }) -test('Component - Instance should initialize wrapper', (assert) => { +t.test('Component - Instance should initialize wrapper', (assert) => { const expected = {} const config = { code: { @@ -260,7 +264,7 @@ test('Component - Instance should initialize wrapper', (assert) => { assert.end() }) -test('Component - Instance should initialize slots', (assert) => { +t.test('Component - Instance should initialize slots', (assert) => { const expected = { [symbols.isSlot]: true, } @@ -281,7 +285,7 @@ test('Component - Instance should initialize slots', (assert) => { assert.end() }) -test.skip('Component - Instance should initialize hook events', (assert) => { +t.skip('Component - Instance should initialize hook events', (assert) => { const wrapper = { node: { on() {}, @@ -338,7 +342,7 @@ test.skip('Component - Instance should initialize hook events', (assert) => { assert.end() }) -test('Component - Instance should execute all side effects', (assert) => { +t.test('Component - Instance should execute all side effects', (assert) => { const root = {} const capture = assert.captureFn(() => {}) const children = [] @@ -354,17 +358,17 @@ test('Component - Instance should execute all side effects', (assert) => { const calls = capture.calls[0] // todo: look into this - // assert.equals(calls.receiver, stage, 'Effect`s receiver should be the stage object') - assert.equals(calls.args[0], foo, 'Effect should be invoked with foo component instance') - assert.equals(calls.args[1], children, 'Effect should be invoked with component`s children') - assert.equals(calls.args[2], config, 'Effect should be invoked with config object') + // assert.equal(calls.receiver, stage, 'Effect`s receiver should be the stage object') + assert.equal(calls.args[0], foo, 'Effect should be invoked with foo component instance') + assert.equal(calls.args[1], children, 'Effect should be invoked with component`s children') + assert.equal(calls.args[2], config, 'Effect should be invoked with config object') assert.ok(calls.args[3].Sprite, 'Effect should be invoked with global components object') - assert.equals(calls.args[4], root, 'Effect should be invoked with root component') + assert.equal(calls.args[4], root, 'Effect should be invoked with root component') assert.ok(typeof calls.args[5] === 'function', 'Effect should be invoked with effect function') assert.end() }) -test('Component - Instance should have all symbols configured', (assert) => { +t.test('Component - Instance should have all symbols configured', (assert) => { const config = { state() { return { @@ -385,7 +389,7 @@ test('Component - Instance should have all symbols configured', (assert) => { assert.end() }) -test('Component - Instance should have ready state after the next process tick', (assert) => { +t.test('Component - Instance should have ready state after the next process tick', (assert) => { assert.plan(1) const foo = Component('Foo', {})() @@ -399,7 +403,7 @@ test('Component - Instance should have ready state after the next process tick', }) }) -test('Component - Configure input events', (assert) => { +t.test('Component - Configure input events', (assert) => { const config = { input: { up() {}, @@ -414,7 +418,7 @@ test('Component - Configure input events', (assert) => { assert.end() }) -test('Component - Warn non-function input events', (assert) => { +t.test('Component - Warn non-function input events', (assert) => { initLogTest(assert) const capture = assert.capture(console, 'warn') @@ -443,7 +447,7 @@ test('Component - Warn non-function input events', (assert) => { assert.end() }) -test('Component - Configure methods', (assert) => { +t.test('Component - Configure methods', (assert) => { const config = { methods: { foo() {}, @@ -465,7 +469,7 @@ test('Component - Configure methods', (assert) => { assert.end() }) -test('Component - Warn non-function methods', (assert) => { +t.test('Component - Warn non-function methods', (assert) => { initLogTest(assert) const capture = assert.capture(console, 'warn') @@ -495,7 +499,7 @@ test('Component - Warn non-function methods', (assert) => { assert.end() }) -test('Component - Warn when method name matches prop name', (assert) => { +t.test('Component - Warn when method name matches prop name', (assert) => { initLogTest(assert) const capture = assert.capture(console, 'error') From 6b23cc4c134e948cb2122df1b8dbf6cefa6acc7f Mon Sep 17 00:00:00 2001 From: Miles Nash Date: Thu, 29 Jan 2026 22:34:37 +0000 Subject: [PATCH 07/28] fix: computed.test.js - initLog + deepEqual -> same --- src/component.test.js | 4 +--- src/component/setup/computed.test.js | 33 ++++++++++++---------------- 2 files changed, 15 insertions(+), 22 deletions(-) diff --git a/src/component.test.js b/src/component.test.js index 14c769c3..b430998a 100644 --- a/src/component.test.js +++ b/src/component.test.js @@ -23,9 +23,7 @@ import util from 'node:util' import Settings from './settings.js' import { renderer, stage } from './launch.js' -t.beforeEach(() => { - initLog() -}) +t.beforeEach(initLog) t.test('Type', (assert) => { const expected = 'function' diff --git a/src/component/setup/computed.test.js b/src/component/setup/computed.test.js index 8ac0f029..56b600a7 100644 --- a/src/component/setup/computed.test.js +++ b/src/component/setup/computed.test.js @@ -1,6 +1,7 @@ -import { test } from 'tap' +import t from 'tap' import computedFn from './computed.js' import symbols from '../../lib/symbols.js' +import { initLog } from '../../lib/log.js' // --- Helpers --- const setup = (computeds = {}, values = {}) => { @@ -16,9 +17,11 @@ const assertComputed = (t, component, keyValues) => { } } +t.beforeEach(initLog) + // --- Tests --- -test('Basic computed functionality', (t) => { +t.test('Basic computed functionality', (t) => { const component = setup( { fullName() { @@ -31,16 +34,12 @@ test('Basic computed functionality', (t) => { { firstName: 'John', lastName: 'Doe', age: 25 } ) - t.deepEqual( - component[symbols.computedKeys], - ['fullName', 'isAdult'], - 'Should store computed keys' - ) + t.same(component[symbols.computedKeys], ['fullName', 'isAdult'], 'Should store computed keys') assertComputed(t, component, { fullName: 'John Doe', isAdult: true }) t.end() }) -test('Conflict detection', (t) => { +t.test('Conflict detection', (t) => { const component = setup( { name() { @@ -63,16 +62,12 @@ test('Conflict detection', (t) => { } ) - t.deepEqual( - component[symbols.computedKeys], - ['validComputed'], - 'Only non-conflicting computed added' - ) + t.same(component[symbols.computedKeys], ['validComputed'], 'Only non-conflicting computed added') t.equal(component.validComputed, 'works', 'Valid computed works') t.end() }) -test('Non-function computeds', (t) => { +t.test('Non-function computeds', (t) => { const component = setup({ validFunction() { return 'valid' @@ -81,7 +76,7 @@ test('Non-function computeds', (t) => { invalidNumber: 42, }) - t.deepEqual( + t.same( component[symbols.computedKeys].sort(), ['validFunction', 'invalidNumber', 'invalidString'].sort(), 'All keys should be included' @@ -90,7 +85,7 @@ test('Non-function computeds', (t) => { t.end() }) -test('Edge cases & empty', (t) => { +t.test('Edge cases & empty', (t) => { const emptyComp = setup({}) const singleComp = setup({ testComputed() { @@ -98,13 +93,13 @@ test('Edge cases & empty', (t) => { }, }) - t.deepEqual(emptyComp[symbols.computedKeys], [], 'Empty computeds produce empty keys') - t.deepEqual(singleComp[symbols.computedKeys], ['testComputed'], 'Single computed added') + t.same(emptyComp[symbols.computedKeys], [], 'Empty computeds produce empty keys') + t.same(singleComp[symbols.computedKeys], ['testComputed'], 'Single computed added') t.equal(singleComp.testComputed, 'test', 'Computed works correctly') t.end() }) -test('Dynamic updates', (t) => { +t.test('Dynamic updates', (t) => { const component = setup( { fullName() { From 112f7b10aebf64a486e221d39d70d175a6225359 Mon Sep 17 00:00:00 2001 From: Miles Nash Date: Thu, 29 Jan 2026 22:40:03 +0000 Subject: [PATCH 08/28] fix: timeout_intervals.test.js - assert.false -> assert.equal --- src/component/base/timeouts_intervals.test.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/component/base/timeouts_intervals.test.js b/src/component/base/timeouts_intervals.test.js index 3bae1b09..703878d6 100644 --- a/src/component/base/timeouts_intervals.test.js +++ b/src/component/base/timeouts_intervals.test.js @@ -69,7 +69,7 @@ test('$clearTimeout method', (assert) => { assert.equal(component[symbols.timeouts].length, 0, 'Removes timeout from array') setTimeout(() => { - assert.false(called, 'Timeout does not execute after clear') + assert.equal(called, false, 'Timeout does not execute after clear') assert.end() }, 100) }) @@ -98,8 +98,8 @@ test('$clearTimeouts method', (assert) => { assert.equal(component[symbols.timeouts].length, 0, 'Clears all timeouts from array') setTimeout(() => { - assert.false(called1, 'First timeout does not execute') - assert.false(called2, 'Second timeout does not execute') + assert.equal(called1, false, 'First timeout does not execute') + assert.equal(called2, false, 'Second timeout does not execute') assert.end() }, 100) }) @@ -149,7 +149,7 @@ test('$clearInterval method', (assert) => { assert.equal(component[symbols.intervals].length, 0, 'Removes interval from array') setTimeout(() => { - assert.false(called, 'Interval does not execute after clear') + assert.equal(called, false, 'Interval does not execute after clear') assert.end() }, 150) }) @@ -178,8 +178,8 @@ test('$clearIntervals method', (assert) => { assert.equal(component[symbols.intervals].length, 0, 'Clears all intervals from array') setTimeout(() => { - assert.false(called1, 'First interval does not execute') - assert.false(called2, 'Second interval does not execute') + assert.equal(called1, false, 'First interval does not execute') + assert.equal(called2, false, 'Second interval does not execute') assert.end() }, 150) }) From 6f4659fcbf492fe19660cdde1fbb45a0d5fca3d1 Mon Sep 17 00:00:00 2001 From: Miles Nash Date: Thu, 29 Jan 2026 22:44:22 +0000 Subject: [PATCH 09/28] fix: assert.notEqual -> assert.not --- src/announcer/announcer.test.js | 6 +++--- src/lib/reactivity/reactive.test.js | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/announcer/announcer.test.js b/src/announcer/announcer.test.js index 64765417..bbad5c40 100644 --- a/src/announcer/announcer.test.js +++ b/src/announcer/announcer.test.js @@ -61,8 +61,8 @@ test('Announcer disable/enable/toggle', (assert) => { const enabled1 = announcer.speak('enabled msg 1') const enabled2 = announcer.speak('enabled msg 2') - assert.notEqual(enabled1, disabled1, 'Enabled returns real promise, not noop') - assert.notEqual(enabled1, enabled2, 'Each enabled message gets unique promise') + assert.not(enabled1, disabled1, 'Enabled returns real promise, not noop') + assert.not(enabled1, enabled2, 'Each enabled message gets unique promise') enabled1.then(() => { enabledProcessed = true @@ -76,7 +76,7 @@ test('Announcer disable/enable/toggle', (assert) => { // Test toggle on announcer.toggle(true) const toggledOn = announcer.speak('toggled on msg') - assert.notEqual(toggledOn, disabled1, 'Toggle on returns real promise') + assert.not(toggledOn, disabled1, 'Toggle on returns real promise') // Verify processing behavior after a delay setTimeout(() => { diff --git a/src/lib/reactivity/reactive.test.js b/src/lib/reactivity/reactive.test.js index f6820593..ff2e8860 100644 --- a/src/lib/reactivity/reactive.test.js +++ b/src/lib/reactivity/reactive.test.js @@ -253,7 +253,7 @@ test('Reactive - Get raw object from proxy', (assert) => { 'Should return the original object from the proxy using the raw symbol' ) - assert.notEqual(originalObj, proxiedObj, 'Original object should not be equal to proxied object') + assert.not(originalObj, proxiedObj, 'Original object should not be equal to proxied object') assert.end() }) From 864f993c2c81eddcce0b098d83a0c119f790d8ea Mon Sep 17 00:00:00 2001 From: Miles Nash Date: Fri, 30 Jan 2026 08:36:05 +0000 Subject: [PATCH 10/28] fix: true|false -> equal --- src/announcer/announcer.test.js | 2 +- src/helpers/deepEqualArray.test.js | 39 ++++++++++++++++++++++-------- 2 files changed, 30 insertions(+), 11 deletions(-) diff --git a/src/announcer/announcer.test.js b/src/announcer/announcer.test.js index bbad5c40..6e9a7015 100644 --- a/src/announcer/announcer.test.js +++ b/src/announcer/announcer.test.js @@ -80,7 +80,7 @@ test('Announcer disable/enable/toggle', (assert) => { // Verify processing behavior after a delay setTimeout(() => { - assert.false(disabledProcessed, 'Disabled messages are NOT processed') + assert.equal(disabledProcessed, false, 'Disabled messages are NOT processed') assert.ok(enabledProcessed || enabled1, 'Enabled messages are queued for processing') // Clean up diff --git a/src/helpers/deepEqualArray.test.js b/src/helpers/deepEqualArray.test.js index 933fe326..cc84db50 100644 --- a/src/helpers/deepEqualArray.test.js +++ b/src/helpers/deepEqualArray.test.js @@ -29,7 +29,8 @@ test('Type', (assert) => { test('The same arrays', (assert) => { const val1 = ['hello', 'world'] - assert.true( + assert.equal( + true, deepEqual(val1, val1), 'deepEqual should return true if the values are the same reference' ) @@ -40,7 +41,11 @@ test('Equal simple arrays', (assert) => { const val1 = ['hello', 'world'] const val2 = ['hello', 'world'] - assert.true(deepEqual(val1, val2), 'deepEqual should return true if simple arrays are equal') + assert.equal( + true, + deepEqual(val1, val2), + 'deepEqual should return true if simple arrays are equal' + ) assert.end() }) @@ -48,7 +53,8 @@ test('Not equal simple arrays', (assert) => { const val1 = ['hello', 'world'] const val2 = ['world', 'hello'] - assert.false( + assert.equal( + false, deepEqual(val1, val2), 'deepEqual should return false if simple arrays are not equal' ) @@ -59,7 +65,11 @@ test('Not Equal simple arrays (different length)', (assert) => { const val1 = ['hello', 'world'] const val2 = ['hello', 'world', '!'] - assert.false(deepEqual(val1, val2), 'deepEqual should return false if simple arrays are equal') + assert.equal( + false, + deepEqual(val1, val2), + 'deepEqual should return false if simple arrays are equal' + ) assert.end() }) @@ -67,7 +77,11 @@ test('Equal nested arrays', (assert) => { const val1 = ['hello', ['world', '!']] const val2 = ['hello', ['world', '!']] - assert.true(deepEqual(val1, val2), 'deepEqual should return true if nested arrays are equal') + assert.equal( + true, + deepEqual(val1, val2), + 'deepEqual should return true if nested arrays are equal' + ) assert.end() }) @@ -75,7 +89,8 @@ test('Not equal nested arrays', (assert) => { const val1 = ['hello', ['world', '!']] const val2 = ['hello', ['world', '!', '?']] - assert.false( + assert.equal( + false, deepEqual(val1, val2), 'deepEqual should return false if nested arrays are not equal' ) @@ -86,7 +101,8 @@ test('Equal arrays with objects', (assert) => { const val1 = [{ foo: 'bar', bar: 'foo' }, { hello: 'world' }] const val2 = [{ foo: 'bar', bar: 'foo' }, { hello: 'world' }] - assert.true( + assert.equal( + true, deepEqual(val1, val2), 'deepEqual should return true if arrays with objects are equal' ) @@ -97,7 +113,8 @@ test('Not equal arrays with objects (keys', (assert) => { const val1 = [{ foo: 'bar', bar: 'foo' }, { test: 'bla' }] const val2 = [{ foo2: 'bar', bar2: 'foo' }, { test: 'bla' }] - assert.false( + assert.equal( + false, deepEqual(val1, val2), 'deepEqual should return false if arrays with objects are not equal' ) @@ -108,7 +125,8 @@ test('Equal arrays with mixed values', (assert) => { const val1 = ['foo', { foo: 'bar', bar: 'foo' }, ['hello', 'world', ['this', 'is', { level: 2 }]]] const val2 = ['foo', { foo: 'bar', bar: 'foo' }, ['hello', 'world', ['this', 'is', { level: 2 }]]] - assert.true( + assert.equal( + true, deepEqual(val1, val2), 'deepEqual should return true if arrays with mixed values are equal' ) @@ -119,7 +137,8 @@ test('Not Equal arrays with mixed values', (assert) => { const val1 = ['foo', { foo: 'bar', bar: 'foo' }, ['hello', 'world', ['this', 'is', { level: 2 }]]] const val2 = ['foo', { foo: 'bar', bar: 'foo' }, ['hello', 'world', ['this', 'is', { level: 3 }]]] - assert.false( + assert.equal( + false, deepEqual(val1, val2), 'deepEqual should return true if arrays with mixed values are not equal' ) From cab7ccf47fa3a25695f25d229a2673e0b4cf287c Mon Sep 17 00:00:00 2001 From: Miles Nash Date: Fri, 30 Jan 2026 08:58:38 +0000 Subject: [PATCH 11/28] fix: props.test.js --- src/component/setup/props.test.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/component/setup/props.test.js b/src/component/setup/props.test.js index d352d2f7..4d2c0cf2 100644 --- a/src/component/setup/props.test.js +++ b/src/component/setup/props.test.js @@ -34,7 +34,7 @@ test('Has correct symbols', (assert) => { const props = ['index', 'img', 'url'] propsFn(component, props) /* eslint-disable */ - assert.true(component[symbols.propKeys], 'Component should have a propKey symbol') + assert.type(component[symbols.propKeys], 'Array', 'Component should have a propKey symbol') assert.end() }) @@ -47,7 +47,7 @@ test('Pass props as an array', (assert) => { assert.equal(props.length, props.map(prop => component[symbols.propKeys].indexOf(prop) > -1).filter(prop => prop === true).length, 'All passed props should be stored on propKeys') props.forEach((prop) => { - assert.true(typeof Object.getOwnPropertyDescriptor(component, prop).get === 'function', `A getter should have been created for property ${prop}`) + assert.equal(true, typeof Object.getOwnPropertyDescriptor(component, prop).get === 'function', `A getter should have been created for property ${prop}`) }) assert.end() @@ -86,14 +86,14 @@ test('Get value of props', (assert) => { test('Passing props as an object', (assert) => { const component = new Function() - const props = [{key: 'index'}, {key: 'img'}, {key: 'url'}] + const props = [{ key: 'index' }, { key: 'img' }, { key: 'url' }] propsFn(component, props) assert.equal(props.length, component[symbols.propKeys].length, 'All passed props should be stored on propKeys') assert.equal(props.length, props.map(prop => component[symbols.propKeys].indexOf(typeof prop === 'object' ? prop.key : prop) > -1).filter(prop => prop === true).length, 'All passed props should be stored on propKeys') props.forEach((prop) => { - assert.true(typeof Object.getOwnPropertyDescriptor(component, typeof prop === 'object' ? prop.key : prop).get === 'function', `A getter should have been created for property ${prop}`) + assert.equal(true, typeof Object.getOwnPropertyDescriptor(component, typeof prop === 'object' ? prop.key : prop).get === 'function', `A getter should have been created for property ${prop}`) }) assert.end() @@ -102,14 +102,14 @@ test('Passing props as an object', (assert) => { test('Passing props as an object mixed with single keys', (assert) => { const component = new Function() - const props = [{key: 'index'}, 'img', {key: 'url'}] + const props = [{ key: 'index' }, 'img', { key: 'url' }] propsFn(component, props) assert.equal(props.length, component[symbols.propKeys].length, 'All passed props should be stored on propKeys') assert.equal(props.length, props.map(prop => component[symbols.propKeys].indexOf(typeof prop === 'object' ? prop.key : prop) > -1).filter(prop => prop === true).length, 'All passed props should be stored on propKeys') props.forEach((prop) => { - assert.true(typeof Object.getOwnPropertyDescriptor(component, typeof prop === 'object' ? prop.key : prop).get === 'function', `A getter should have been created for property ${prop}`) + assert.equal(true, typeof Object.getOwnPropertyDescriptor(component, typeof prop === 'object' ? prop.key : prop).get === 'function', `A getter should have been created for property ${prop}`) }) assert.end() @@ -135,7 +135,7 @@ test('Casting props to a type', (assert) => { }, { key: 'boolean', cast: Boolean - },{ + }, { key: 'image', cast(v) { return `http://localhost/${v}` @@ -146,7 +146,7 @@ test('Casting props to a type', (assert) => { assert.equal(typeof componentInstance.number, 'number', 'Should cast prop value to a Number') assert.equal(typeof componentInstance.string, 'string', 'Should cast prop value to a String') assert.equal(typeof componentInstance.boolean, 'boolean', 'Should cast prop value to a Boolean') - assert.equal(componentInstance.image, 'http://localhost/my_image.jpg','Should cast according to a custom function') + assert.equal(componentInstance.image, 'http://localhost/my_image.jpg', 'Should cast according to a custom function') assert.end() }) @@ -162,7 +162,7 @@ test('Setting default value for undefined props', (assert) => { }] propsFn(component, props) - assert.equal(componentInstance.missing, 'I am missing','Should return default prop value when undefined') + assert.equal(componentInstance.missing, 'I am missing', 'Should return default prop value when undefined') assert.end() }) From 25bb538c319f73bebb4641007b24ebde902d8428 Mon Sep 17 00:00:00 2001 From: Miles Nash Date: Fri, 30 Jan 2026 09:01:22 +0000 Subject: [PATCH 12/28] fix: element.test.js --- src/engines/L3/element.test.js | 134 ++++++++++++++++----------------- 1 file changed, 67 insertions(+), 67 deletions(-) diff --git a/src/engines/L3/element.test.js b/src/engines/L3/element.test.js index b2790032..80683df2 100644 --- a/src/engines/L3/element.test.js +++ b/src/engines/L3/element.test.js @@ -25,6 +25,73 @@ import sinon from 'sinon' initLog() +class CustomNode extends EventEmitter { + constructor() { + super() + // setting initial props of renderer node + this.width = 0 + this.x = 0 + this.height = 0 + this.y = 0 + + // setting children to empty [] + this.children = [] + + const loadedTimeout = setTimeout(() => { + this.emit('loaded', this, { type: '', dimensions: { width: 100, height: 100 } }) + clearTimeout(loadedTimeout) + }, 0) + } + + animate(props, transObj) { + const animationEmitter = new CustomAnimator(this, props, transObj) + return animationEmitter + } + + destroy() {} + fail() { + this.emit('failed') + } + + addChildren(el) { + this.children.push(el) + } +} + +class CustomAnimator extends EventEmitter { + constructor(node, props, transObj) { + super() + this.node = node + this.props = props + this.transObj = transObj + this.state = 'init' + } + + start() { + this.state = 'scheduled' + this.emit('animating') + + let elapsed = 0 + const tickInterval = this.transObj.duration / 10 + const propsKeys = Object.keys(this.props) + const valueChunk = this.props[propsKeys[0]] / 10 + let valueCounter = 0 + const tickTimer = setInterval(() => { + elapsed += tickInterval + valueCounter++ + this.emit('tick', {}, { progress: valueChunk * valueCounter }) + if (elapsed >= this.transObj.duration) { + clearInterval(tickTimer) + this.node[propsKeys[0]] = this.props[propsKeys[0]] + this.emit('stopped') + } + }, tickInterval) + } + stop() { + this.state = 'stopped' + } +} + let elementRef test('Type', (assert) => { @@ -953,73 +1020,6 @@ test('Element - Element with loaded callback', (assert) => { assert.end() }) -class CustomAnimator extends EventEmitter { - constructor(node, props, transObj) { - super() - this.node = node - this.props = props - this.transObj = transObj - this.state = 'init' - } - - start() { - this.state = 'scheduled' - this.emit('animating') - - let elapsed = 0 - const tickInterval = this.transObj.duration / 10 - const propsKeys = Object.keys(this.props) - const valueChunk = this.props[propsKeys[0]] / 10 - let valueCounter = 0 - const tickTimer = setInterval(() => { - elapsed += tickInterval - valueCounter++ - this.emit('tick', {}, { progress: valueChunk * valueCounter }) - if (elapsed >= this.transObj.duration) { - clearInterval(tickTimer) - this.node[propsKeys[0]] = this.props[propsKeys[0]] - this.emit('stopped') - } - }, tickInterval) - } - stop() { - this.state = 'stopped' - } -} - -class CustomNode extends EventEmitter { - constructor() { - super() - // setting initial props of renderer node - this.width = 0 - this.x = 0 - this.height = 0 - this.y = 0 - - // setting children to empty [] - this.children = [] - - const loadedTimeout = setTimeout(() => { - this.emit('loaded', this, { type: '', dimensions: { width: 100, height: 100 } }) - clearTimeout(loadedTimeout) - }, 0) - } - - animate(props, transObj) { - const animationEmitter = new CustomAnimator(this, props, transObj) - return animationEmitter - } - - destroy() {} - fail() { - this.emit('failed') - } - - addChildren(el) { - this.children.push(el) - } -} - function createElement(props = {}) { const el = element({ parent: { node: { width: 1920, height: 1080 } } }, {}) const data = { From 17669f78b0be6fe9f91bf686bdf0a72b61c8983f Mon Sep 17 00:00:00 2001 From: Miles Nash Date: Fri, 30 Jan 2026 09:03:07 +0000 Subject: [PATCH 13/28] fix: focus.test.js --- src/focus.test.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/focus.test.js b/src/focus.test.js index d71efbef..2528d690 100644 --- a/src/focus.test.js +++ b/src/focus.test.js @@ -17,8 +17,9 @@ import { test } from 'tap' import Focus from './focus.js' -import Component from './component.js' -import { stage } from './launch.js' +import { initLog } from './lib/log.js' + +initLog() test('Focus type', (assert) => { const expected = 'object' @@ -29,9 +30,9 @@ test('Focus type', (assert) => { }) test('Public methods on focus object', (assert) => { - assert.true(typeof Focus.get === 'function', 'Focus should have a get method') - assert.true(typeof Focus.set === 'function', 'Focus should have a set method') - assert.true(typeof Focus.input === 'function', 'Focus should have an input method') + assert.equal(true, typeof Focus.get === 'function', 'Focus should have a get method') + assert.equal(true, typeof Focus.set === 'function', 'Focus should have a set method') + assert.equal(true, typeof Focus.input === 'function', 'Focus should have an input method') assert.end() }) From dfd58da985b8cd233bf972a0fd13e1efdb5f9f02 Mon Sep 17 00:00:00 2001 From: Miles Nash Date: Fri, 30 Jan 2026 09:04:13 +0000 Subject: [PATCH 14/28] fix: eventListeners.test.js --- src/lib/eventListeners.test.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lib/eventListeners.test.js b/src/lib/eventListeners.test.js index 535df751..40562eec 100644 --- a/src/lib/eventListeners.test.js +++ b/src/lib/eventListeners.test.js @@ -101,7 +101,7 @@ test('executeListeners - priority order', (t) => { eventListener.registerListener(component, event, cb3, 2) eventListener.executeListeners(event) - t.deepEqual(order, [2, 3, 1], 'Should execute callbacks in priority order') + t.same(order, [2, 3, 1], 'Should execute callbacks in priority order') t.end() }) @@ -223,14 +223,14 @@ test('cache invalidation', (t) => { eventListener.registerListener(component, event, cb2, 1) eventListener.executeListeners(event) - t.deepEqual(callOrder, [1, 2, 1], 'Should invalidate cache when new listener is added') + t.same(callOrder, [1, 2, 1], 'Should invalidate cache when new listener is added') callOrder = [] eventListener.removeListeners(component) eventListener.registerListener(component, event, cb1) eventListener.executeListeners(event) - t.deepEqual(callOrder, [1], 'Should invalidate cache when listeners are removed') + t.same(callOrder, [1], 'Should invalidate cache when listeners are removed') t.end() }) From 967a13aceb4e47a9645c3477bc9fba088e4936fb Mon Sep 17 00:00:00 2001 From: Miles Nash Date: Fri, 30 Jan 2026 09:05:32 +0000 Subject: [PATCH 15/28] fix: router.test.js --- src/router/router.test.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/router/router.test.js b/src/router/router.test.js index 353aeb69..e512f539 100644 --- a/src/router/router.test.js +++ b/src/router/router.test.js @@ -20,6 +20,9 @@ import { matchHash, getHash, to, navigate, state } from './router.js' import { stage } from '../launch.js' import Component from '../component.js' import symbols from '../lib/symbols.js' +import { initLog } from '../lib/log.js' + +initLog() const mockComponents = { Home: () => {}, From ca57cce3f7c631b94969e3a5eb8124ea9bd952cb Mon Sep 17 00:00:00 2001 From: Miles Nash Date: Fri, 30 Jan 2026 09:21:10 +0000 Subject: [PATCH 16/28] fix: parser.test.js --- src/lib/templateparser/parser.test.js | 612 ++++++++++++++------------ 1 file changed, 320 insertions(+), 292 deletions(-) diff --git a/src/lib/templateparser/parser.test.js b/src/lib/templateparser/parser.test.js index 322c4fdc..522ebe12 100644 --- a/src/lib/templateparser/parser.test.js +++ b/src/lib/templateparser/parser.test.js @@ -15,14 +15,14 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { test } from 'tap' +import t from 'tap' import parser from './parser.js' import symbols from '../symbols.js' const { componentType } = symbols import { initLog } from '../log.js' initLog() -test('Type', (assert) => { +t.test('Type', (assert) => { const expected = 'function' const actual = typeof parser @@ -30,7 +30,7 @@ test('Type', (assert) => { assert.end() }) -test('Returns an object', (assert) => { +t.test('Returns an object', (assert) => { const result = parser() const expected = 'object' const actual = typeof result @@ -41,7 +41,7 @@ test('Returns an object', (assert) => { assert.end() }) -test('Parse simple single tag', (assert) => { +t.test('Parse simple single tag', (assert) => { const template = '' const expected = { @@ -57,7 +57,7 @@ test('Parse simple single tag', (assert) => { assert.end() }) -test('Parse simple tag and simple nested tag', (assert) => { +t.test('Parse simple tag and simple nested tag', (assert) => { const template = '' const expected = { @@ -78,7 +78,7 @@ test('Parse simple tag and simple nested tag', (assert) => { assert.end() }) -test('Parse simple single tag with static attributes', (assert) => { +t.test('Parse simple single tag with static attributes', (assert) => { const template = '' const expected = { @@ -96,7 +96,7 @@ test('Parse simple single tag with static attributes', (assert) => { assert.end() }) -test('Parse tag with attributes and nested tag with attributes', (assert) => { +t.test('Parse tag with attributes and nested tag with attributes', (assert) => { const template = '' const expected = { @@ -121,7 +121,7 @@ test('Parse tag with attributes and nested tag with attributes', (assert) => { assert.end() }) -test('Parse tag with attributes and 2 nested tags with attributes', (assert) => { +t.test('Parse tag with attributes and 2 nested tags with attributes', (assert) => { const template = ` @@ -157,7 +157,7 @@ test('Parse tag with attributes and 2 nested tags with attributes', (assert) => assert.end() }) -test('Parse tag with attributes and deep nested tag with attributes', (assert) => { +t.test('Parse tag with attributes and deep nested tag with attributes', (assert) => { const template = ` @@ -206,7 +206,7 @@ test('Parse tag with attributes and deep nested tag with attributes', (assert) = assert.end() }) -test('Parse simple single tag with dynamic attributes', (assert) => { +t.test('Parse simple single tag with dynamic attributes', (assert) => { const template = '' const expected = { @@ -224,7 +224,7 @@ test('Parse simple single tag with dynamic attributes', (assert) => { assert.end() }) -test('Parse tag with attributes and reactive attributes', (assert) => { +t.test('Parse tag with attributes and reactive attributes', (assert) => { const template = '' const expected = { @@ -245,7 +245,7 @@ test('Parse tag with attributes and reactive attributes', (assert) => { assert.end() }) -test("Parse simple single tag where one of the attributes has a dash in it's name", (assert) => { +t.test("Parse simple single tag where one of the attributes has a dash in it's name", (assert) => { const template = '' const expected = { @@ -264,7 +264,7 @@ test("Parse simple single tag where one of the attributes has a dash in it's nam assert.end() }) -test('Parse nested self closing tag', (assert) => { +t.test('Parse nested self closing tag', (assert) => { const template = '' const expected = { @@ -285,7 +285,7 @@ test('Parse nested self closing tag', (assert) => { assert.end() }) -test('Parse multiple nested self closing tags', (assert) => { +t.test('Parse multiple nested self closing tags', (assert) => { const template = '' const expected = { @@ -312,7 +312,7 @@ test('Parse multiple nested self closing tags', (assert) => { assert.end() }) -test('Parse attributes which values have spaces in it', (assert) => { +t.test('Parse attributes which values have spaces in it', (assert) => { const template = '' const expected = { @@ -329,7 +329,7 @@ test('Parse attributes which values have spaces in it', (assert) => { assert.end() }) -test('Parse attributes with an expression in it', (assert) => { +t.test('Parse attributes with an expression in it', (assert) => { const template = ` { assert.end() }) -test('Parse template with commented tag (and skip it)', (assert) => { +t.test('Parse template with commented tag (and skip it)', (assert) => { const template = ` @@ -396,7 +396,7 @@ test('Parse template with commented tag (and skip it)', (assert) => { assert.end() }) -test('Parse template with comment spanned across multiple tags (and skip it)', (assert) => { +t.test('Parse template with comment spanned across multiple tags (and skip it)', (assert) => { const template = ` @@ -429,7 +429,7 @@ test('Parse template with comment spanned across multiple tags (and skip it)', ( assert.end() }) -test('Parse template with enclosing comment (and skip it)', (assert) => { +t.test('Parse template with enclosing comment (and skip it)', (assert) => { const template = ` @@ -470,7 +470,7 @@ test('Parse template with enclosing comment (and skip it)', (assert) => { assert.end() }) -test('Parse template with for loop', (assert) => { +t.test('Parse template with for loop', (assert) => { const template = ` @@ -495,7 +495,7 @@ test('Parse template with for loop', (assert) => { assert.end() }) -test('Parse template with a conditional (if-statement)', (assert) => { +t.test('Parse template with a conditional (if-statement)', (assert) => { const template = ` @@ -526,7 +526,7 @@ test('Parse template with a conditional (if-statement)', (assert) => { assert.end() }) -test('Parse template with a visibility toggle (show-statement)', (assert) => { +t.test('Parse template with a visibility toggle (show-statement)', (assert) => { const template = `