diff --git a/package-lock.json b/package-lock.json index 1f915c9c..3e8a9aa9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,6 +25,7 @@ "@semantic-release/changelog": "6.0.3", "@semantic-release/git": "10.0.1", "@types/is-glob": "4.0.4", + "@types/node": "25.0.1", "@types/semver": "7.7.1", "@types/validate-npm-package-name": "4.0.2", "eslint": "10.4.0", @@ -33,10 +34,8 @@ "json-schema-to-typescript": "15.0.4", "npm-run-all2": "9.0.1", "prettier": "3.8.3", - "rimraf": "6.1.3", "semantic-release": "25.0.3", "stoppable": "1.1.0", - "tap": "21.7.4", "typescript": "6.0.3" } }, @@ -89,46 +88,6 @@ "dev": true, "license": "MIT" }, - "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/@alcalzone/ansi-tokenize/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@alcalzone/ansi-tokenize/node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@apidevtools/json-schema-ref-parser": { "version": "11.9.3", "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-11.9.3.tgz", @@ -449,23 +408,6 @@ "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": "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/@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", @@ -477,30 +419,6 @@ "node": ">=0.1.90" } }, - "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/@e18e/eslint-plugin": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/@e18e/eslint-plugin/-/eslint-plugin-0.5.0.tgz", @@ -822,16 +740,6 @@ "ipaddr.js": "^2.1.0" } }, - "node_modules/@gar/promise-retry": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@gar/promise-retry/-/promise-retry-1.0.3.tgz", - "integrity": "sha512-GmzA9ckNokPypTg10pgpeHNQe7ph+iIKKmhKu3Ob9ANkswreCx7R3cKmY781K8QK3AqVL3xVh9A42JvIAbkkSA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, "node_modules/@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", @@ -884,113 +792,6 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@isaacs/cliui": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz", - "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "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/@isaacs/which": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@isaacs/which/-/which-7.0.4.tgz", - "integrity": "sha512-qXToWZFY9CKvWsveV3R5VHNJLQkHTIJXO9J4Xa1UgNwVCRA2LEsmvWC84MIdnezFLsjn2Q+GzbL/8yVF1/ozJw==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^4.0.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@isaacs/which/node_modules/isexe": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", - "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=20" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.6.tgz", - "integrity": "sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", @@ -1021,6 +822,7 @@ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=6.0.0" } @@ -1030,7 +832,8 @@ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.31", @@ -1038,6 +841,7 @@ "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -1050,392 +854,120 @@ "dev": true, "license": "MIT" }, - "node_modules/@npmcli/agent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-4.0.0.tgz", - "integrity": "sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA==", + "node_modules/@octokit/auth-token": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-6.0.0.tgz", + "integrity": "sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==", "dev": true, - "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" - }, + "license": "MIT", "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">= 20" } }, - "node_modules/@npmcli/agent/node_modules/lru-cache": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.0.tgz", - "integrity": "sha512-5YgH9UJd7wVb9hIouI2adWpgqrrICkt070Dnj8EUY1+B4B2P9eRLPAkAAo6NICA7CEhOIeBHl46u9zSNpNu7zA==", + "node_modules/@octokit/core": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-7.0.6.tgz", + "integrity": "sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q==", "dev": true, - "license": "BlueOak-1.0.0", + "license": "MIT", + "dependencies": { + "@octokit/auth-token": "^6.0.0", + "@octokit/graphql": "^9.0.3", + "@octokit/request": "^10.0.6", + "@octokit/request-error": "^7.0.2", + "@octokit/types": "^16.0.0", + "before-after-hook": "^4.0.0", + "universal-user-agent": "^7.0.0" + }, "engines": { - "node": "20 || >=22" + "node": ">= 20" } }, - "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==", + "node_modules/@octokit/endpoint": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.2.tgz", + "integrity": "sha512-4zCpzP1fWc7QlqunZ5bSEjxc6yLAlRTnDwKtgXfcI/FxxGoqedDG8V2+xJ60bV2kODqcGB+nATdtap/XYq2NZQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "semver": "^7.3.5" + "@octokit/types": "^16.0.0", + "universal-user-agent": "^7.0.2" }, "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">= 20" } }, - "node_modules/@npmcli/git": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-7.0.2.tgz", - "integrity": "sha512-oeolHDjExNAJAnlYP2qzNjMX/Xi9bmu78C9dIGr4xjobrSKbuMYCph8lTzn4vnW3NjIqVmw/f8BCfouqyJXlRg==", + "node_modules/@octokit/graphql": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-9.0.3.tgz", + "integrity": "sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "@gar/promise-retry": "^1.0.0", - "@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", - "semver": "^7.3.5", - "which": "^6.0.0" + "@octokit/request": "^10.0.6", + "@octokit/types": "^16.0.0", + "universal-user-agent": "^7.0.0" }, "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">= 20" } }, - "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==", + "node_modules/@octokit/openapi-types": { + "version": "27.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-27.0.0.tgz", + "integrity": "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==", "dev": true, - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } + "license": "MIT" }, - "node_modules/@npmcli/git/node_modules/isexe": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", - "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", + "node_modules/@octokit/plugin-paginate-rest": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-14.0.0.tgz", + "integrity": "sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw==", "dev": true, - "license": "BlueOak-1.0.0", + "license": "MIT", + "dependencies": { + "@octokit/types": "^16.0.0" + }, "engines": { - "node": ">=20" + "node": ">= 20" + }, + "peerDependencies": { + "@octokit/core": ">=6" } }, - "node_modules/@npmcli/git/node_modules/lru-cache": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.0.tgz", - "integrity": "sha512-5YgH9UJd7wVb9hIouI2adWpgqrrICkt070Dnj8EUY1+B4B2P9eRLPAkAAo6NICA7CEhOIeBHl46u9zSNpNu7zA==", + "node_modules/@octokit/plugin-retry": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-8.0.3.tgz", + "integrity": "sha512-vKGx1i3MC0za53IzYBSBXcrhmd+daQDzuZfYDd52X5S0M2otf3kVZTVP8bLA3EkU0lTvd1WEC2OlNNa4G+dohA==", "dev": true, - "license": "BlueOak-1.0.0", + "license": "MIT", + "dependencies": { + "@octokit/request-error": "^7.0.2", + "@octokit/types": "^16.0.0", + "bottleneck": "^2.15.3" + }, "engines": { - "node": "20 || >=22" + "node": ">= 20" + }, + "peerDependencies": { + "@octokit/core": ">=7" } }, - "node_modules/@npmcli/git/node_modules/which": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", - "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", + "node_modules/@octokit/plugin-throttling": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-11.0.3.tgz", + "integrity": "sha512-34eE0RkFCKycLl2D2kq7W+LovheM/ex3AwZCYN8udpi6bxsyjZidb2McXs69hZhLmJlDqTSP8cH+jSRpiaijBg==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "isexe": "^4.0.0" - }, - "bin": { - "node-which": "bin/which.js" + "@octokit/types": "^16.0.0", + "bottleneck": "^2.15.3" }, "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/installed-package-contents/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/@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.5", - "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-7.0.5.tgz", - "integrity": "sha512-iVuTlG3ORq2iaVa1IWUxAO/jIp77tUKBhoMjuzYW2kL4MLN1bi/ofqkZ7D7OOwh8coAx1/S2ge0rMdGv8sLSOQ==", - "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", - "spdx-expression-parse": "^4.0.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/package-json/node_modules/hosted-git-info": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-9.0.3.tgz", - "integrity": "sha512-Hc+ghLoSt6QaYZUv0WBiIvmMDZuZZ7oaDvdH8MbfOO4lOsxdXLEvuC6ePoGs9H1X9oCLyq6+NVN0MKqD+ydxyg==", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^11.1.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/package-json/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/@npmcli/package-json/node_modules/lru-cache": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.0.tgz", - "integrity": "sha512-5YgH9UJd7wVb9hIouI2adWpgqrrICkt070Dnj8EUY1+B4B2P9eRLPAkAAo6NICA7CEhOIeBHl46u9zSNpNu7zA==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@npmcli/package-json/node_modules/spdx-expression-parse": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", - "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "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": "4.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", - "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=20" - } - }, - "node_modules/@npmcli/promise-spawn/node_modules/which": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", - "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^4.0.0" - }, - "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.4", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-10.0.4.tgz", - "integrity": "sha512-mGUWr1uMnf0le2TwfOZY4SFxZGXGfm4Jtay/nwAa2FLNAKXUoUwaGwBMNH36UHPtinWfTSJ3nqFQr0091CxVGg==", - "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" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@octokit/auth-token": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-6.0.0.tgz", - "integrity": "sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 20" - } - }, - "node_modules/@octokit/core": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-7.0.6.tgz", - "integrity": "sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/auth-token": "^6.0.0", - "@octokit/graphql": "^9.0.3", - "@octokit/request": "^10.0.6", - "@octokit/request-error": "^7.0.2", - "@octokit/types": "^16.0.0", - "before-after-hook": "^4.0.0", - "universal-user-agent": "^7.0.0" - }, - "engines": { - "node": ">= 20" - } - }, - "node_modules/@octokit/endpoint": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.2.tgz", - "integrity": "sha512-4zCpzP1fWc7QlqunZ5bSEjxc6yLAlRTnDwKtgXfcI/FxxGoqedDG8V2+xJ60bV2kODqcGB+nATdtap/XYq2NZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^16.0.0", - "universal-user-agent": "^7.0.2" - }, - "engines": { - "node": ">= 20" - } - }, - "node_modules/@octokit/graphql": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-9.0.3.tgz", - "integrity": "sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/request": "^10.0.6", - "@octokit/types": "^16.0.0", - "universal-user-agent": "^7.0.0" - }, - "engines": { - "node": ">= 20" - } - }, - "node_modules/@octokit/openapi-types": { - "version": "27.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-27.0.0.tgz", - "integrity": "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@octokit/plugin-paginate-rest": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-14.0.0.tgz", - "integrity": "sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^16.0.0" - }, - "engines": { - "node": ">= 20" - }, - "peerDependencies": { - "@octokit/core": ">=6" - } - }, - "node_modules/@octokit/plugin-retry": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-8.0.3.tgz", - "integrity": "sha512-vKGx1i3MC0za53IzYBSBXcrhmd+daQDzuZfYDd52X5S0M2otf3kVZTVP8bLA3EkU0lTvd1WEC2OlNNa4G+dohA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/request-error": "^7.0.2", - "@octokit/types": "^16.0.0", - "bottleneck": "^2.15.3" - }, - "engines": { - "node": ">= 20" - }, - "peerDependencies": { - "@octokit/core": ">=7" - } - }, - "node_modules/@octokit/plugin-throttling": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-11.0.3.tgz", - "integrity": "sha512-34eE0RkFCKycLl2D2kq7W+LovheM/ex3AwZCYN8udpi6bxsyjZidb2McXs69hZhLmJlDqTSP8cH+jSRpiaijBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^16.0.0", - "bottleneck": "^2.15.3" - }, - "engines": { - "node": ">= 20" - }, - "peerDependencies": { - "@octokit/core": "^7.0.0" + "node": ">= 20" + }, + "peerDependencies": { + "@octokit/core": "^7.0.0" } }, "node_modules/@octokit/request": { @@ -1485,17 +1017,6 @@ "dev": true, "license": "MIT" }, - "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", @@ -2107,747 +1628,30 @@ "semantic-release": ">=20.1.0" } }, - "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.2.1", - "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-3.2.1.tgz", - "integrity": "sha512-qRsxPnCrbC/puegGxKuynfnxgLiHqWStrSjxkoB4YKqq3Z3s4cyZyj42ZdWFAEblNP65C+rBH8EuREHIXoi83g==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@sigstore/protobuf-specs": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.5.1.tgz", - "integrity": "sha512-/ScWUhhoFasJsSRGTVBwId1loQjjnjAfE4djL6ZhrXRpNCmPTnUKF5Jokd58ILseOMjzET3UrMOtJPS9sYeI0g==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/@sigstore/sign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-4.1.1.tgz", - "integrity": "sha512-Hf4xglukg0XXQ2RiD5vSoLjdPe8OBUPA8XeVjUObheuDcWdYWrnH/BNmxZCzkAy68MzmNCxXLeurJvs6hcP2OQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@gar/promise-retry": "^1.0.2", - "@sigstore/bundle": "^4.0.0", - "@sigstore/core": "^3.2.0", - "@sigstore/protobuf-specs": "^0.5.0", - "make-fetch-happen": "^15.0.4", - "proc-log": "^6.1.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@sigstore/tuf": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-4.0.2.tgz", - "integrity": "sha512-TCAzTy0xzdP79EnxSjq9KQ3eaR7+FmudLC6eRKknVKZbV7ZNlGLClAAQb/HMNJ5n2OBNk2GT1tEmU0xuPr+SLQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@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.1", - "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-3.1.1.tgz", - "integrity": "sha512-qv7+G3J2cc6wwFj3yKvXOamzqhMwSk1ogPGmhpS8iXllcPrJaIIBA+4HbttlHVu1pqWTdmaCH/WE7UOC51kdoA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/bundle": "^4.0.0", - "@sigstore/core": "^3.2.1", - "@sigstore/protobuf-specs": "^0.5.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" - } - }, - "node_modules/@sindresorhus/merge-streams": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", - "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@tapjs/after": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/@tapjs/after/-/after-3.3.10.tgz", - "integrity": "sha512-zAeZAUZ9Su5PgTvczJLzlbUObpAMSFqnd+mIVp1TpgVn6Hc/elPEzZ9oe1hWdz8bInKdisdcx0LK0sv2qJO/dQ==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "is-actual-promise": "^1.0.1" - }, - "engines": { - "node": "20 || >=22" - }, - "peerDependencies": { - "@tapjs/core": "4.5.8" - } - }, - "node_modules/@tapjs/after-each": { - "version": "4.3.10", - "resolved": "https://registry.npmjs.org/@tapjs/after-each/-/after-each-4.3.10.tgz", - "integrity": "sha512-KxcIPOOQ9NtH84kiKfT1bFvRH5b3mJxjv7YP4f5hDxMp5Vqw2BzRW/Rq1StpXKCa+simwEUAu+8wINHXhRSOCQ==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "function-loop": "^4.0.0" - }, - "engines": { - "node": "20 || >=22" - }, - "peerDependencies": { - "@tapjs/core": "4.5.8" - } - }, - "node_modules/@tapjs/asserts": { - "version": "4.3.10", - "resolved": "https://registry.npmjs.org/@tapjs/asserts/-/asserts-4.3.10.tgz", - "integrity": "sha512-3MkErdpu7U6AdFzHVChOu0oaN+1ZmbPXOhpangZEdtMtSxYVV9H2Nxc8b4VDCImOgwexBs8LBrOOz58/x3JmUg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@tapjs/stack": "4.3.3", - "is-actual-promise": "^1.0.1", - "tcompare": "9.3.2", - "trivial-deferred": "^2.0.0" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "peerDependencies": { - "@tapjs/core": "4.5.8" - } - }, - "node_modules/@tapjs/before": { - "version": "4.3.10", - "resolved": "https://registry.npmjs.org/@tapjs/before/-/before-4.3.10.tgz", - "integrity": "sha512-PEdVsfd8kmihyhgTN2YAAysdw1ZVFszQEClc66dyxN+0OSh9KvVxHFWITEj6JfMPi64ciiS+eyk7SKHfdRp08Q==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "is-actual-promise": "^1.0.1" - }, - "engines": { - "node": "20 || >=22" - }, - "peerDependencies": { - "@tapjs/core": "4.5.8" - } - }, - "node_modules/@tapjs/before-each": { - "version": "4.3.10", - "resolved": "https://registry.npmjs.org/@tapjs/before-each/-/before-each-4.3.10.tgz", - "integrity": "sha512-ND90VdYmN4jURtcNXC+BuH+hXr4tFecXHrJq8yM6/ns6Qa4jsBvkQdUv4Ct19rqOAzGidie41ro3Kq0V/KTonw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "function-loop": "^4.0.0" - }, - "engines": { - "node": "20 || >=22" - }, - "peerDependencies": { - "@tapjs/core": "4.5.8" - } - }, - "node_modules/@tapjs/chdir": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/@tapjs/chdir/-/chdir-3.3.10.tgz", - "integrity": "sha512-taCFaRSlIZzs9b0HYGstsukl/mn5In6XBoaX3XssIivGMR0fPzjb3CKB7fA+tYUYTn+BZ14OJxwWb2FGx9sOGA==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - }, - "peerDependencies": { - "@tapjs/core": "4.5.8" - } - }, - "node_modules/@tapjs/config": { - "version": "5.6.4", - "resolved": "https://registry.npmjs.org/@tapjs/config/-/config-5.6.4.tgz", - "integrity": "sha512-mLUpuW4rtPYoLXGBxd8SoUQRVvNmudL+8FlZXV2N1pVPjEt9xDZNtqslDGcueVYMzT8nM5xZlSOeCJL0WUf5mg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@tapjs/core": "4.5.8", - "@tapjs/test": "4.4.8", - "chalk": "^5.6.2", - "jackspeak": "^4.2.3", - "polite-json": "^5.0.0", - "tap-yaml": "4.4.2", - "walk-up-path": "^4.0.0" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "peerDependencies": { - "@tapjs/core": "4.5.8", - "@tapjs/test": "4.4.8" - } - }, - "node_modules/@tapjs/config/node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@tapjs/core": { - "version": "4.5.8", - "resolved": "https://registry.npmjs.org/@tapjs/core/-/core-4.5.8.tgz", - "integrity": "sha512-A6RTyqbkpYAZoJkmg3T8mgaHe6hx0ROjomfAGkjjRcvASInzN0dCG0Ynu1rP2YWGGSFGXV8UqWUMIVGBrtQTqw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@tapjs/processinfo": "^3.1.12", - "@tapjs/stack": "4.3.3", - "@tapjs/test": "4.4.8", - "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.4", - "tap-yaml": "4.4.2", - "tcompare": "9.3.2", - "trivial-deferred": "^2.0.0" - }, - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@tapjs/core/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/@tapjs/error-serdes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@tapjs/error-serdes/-/error-serdes-4.3.2.tgz", - "integrity": "sha512-NNJTvozk0rY4Vhf94SECEYSO38/eQvbZvZSrmzrmD2cj5YYx7l+7qQC0fcgYpIzwlA31kciesbhnV8rINiKejg==", - "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.10", - "resolved": "https://registry.npmjs.org/@tapjs/filter/-/filter-4.3.10.tgz", - "integrity": "sha512-89tnzQDXrsKGxKozQ4IzX8XwqaBoINnapky8YFjmiYBEFXo3kYZJtr3m/ppEaDkzgJyb3kUFyF7ZqJQjlbg2CQ==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "peerDependencies": { - "@tapjs/core": "4.5.8" - } - }, - "node_modules/@tapjs/fixture": { - "version": "4.3.10", - "resolved": "https://registry.npmjs.org/@tapjs/fixture/-/fixture-4.3.10.tgz", - "integrity": "sha512-5DelAGzyrOci4Axaqo846+53EANoTgyPXAu2eO8qGNN/RSQeerWpH0x6H/vd3s0QevusWTw1X+KzGzx7pyusgg==", - "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.5.8" - } - }, - "node_modules/@tapjs/intercept": { - "version": "4.3.10", - "resolved": "https://registry.npmjs.org/@tapjs/intercept/-/intercept-4.3.10.tgz", - "integrity": "sha512-99uzsc6VRpsUbbwsuWv9HjMF2QAce+daKbCrKg8Z8JvZ5Mg1bBR9PNXjG12NnZjljlTA3k+aJ+bs8umdu6kEUg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@tapjs/after": "3.3.10", - "@tapjs/stack": "4.3.3" - }, - "engines": { - "node": "20 || >=22" - }, - "peerDependencies": { - "@tapjs/core": "4.5.8" - } - }, - "node_modules/@tapjs/mock": { - "version": "4.4.8", - "resolved": "https://registry.npmjs.org/@tapjs/mock/-/mock-4.4.8.tgz", - "integrity": "sha512-MRxOLJYGKQ0dyONymPZS7i7Z/re5vz+OO/Ik44lUGx82VWZ2J3I1ldquEKGm7aq4RGIjf666jgHa9wrgUmhJiA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@tapjs/after": "3.3.10", - "@tapjs/stack": "4.3.3", - "resolve-import": "^2.4.0", - "walk-up-path": "^4.0.0" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "peerDependencies": { - "@tapjs/core": "4.5.8" - } - }, - "node_modules/@tapjs/node-serialize": { - "version": "4.3.10", - "resolved": "https://registry.npmjs.org/@tapjs/node-serialize/-/node-serialize-4.3.10.tgz", - "integrity": "sha512-obAwYrhwqMR1szqctPFF3bpkw/1jBXU2A7F2a8MLirII3+/VcyR4cEb8nSCUSCjNvzPHX1vhmQ8lUADB0+1Xxg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@tapjs/error-serdes": "4.3.2", - "@tapjs/stack": "4.3.3", - "tap-parser": "18.3.4" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "peerDependencies": { - "@tapjs/core": "4.5.8" - } - }, - "node_modules/@tapjs/processinfo": { - "version": "3.1.12", - "resolved": "https://registry.npmjs.org/@tapjs/processinfo/-/processinfo-3.1.12.tgz", - "integrity": "sha512-ZkYxCTEDL2ZEvvPHyZK1kvqm1t5mjRrwaGKRGFAhKh/qqaSSklk7fasqpX6fE4XLYpGf4J01C/sMztz+DkY0dg==", - "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": "^14.0.0" - }, - "engines": { - "node": ">=16.17" - } - }, - "node_modules/@tapjs/processinfo/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/@tapjs/reporter": { - "version": "4.4.10", - "resolved": "https://registry.npmjs.org/@tapjs/reporter/-/reporter-4.4.10.tgz", - "integrity": "sha512-E3Xtk5e3k76woEOvAUayfXLZUN+u2rErwBI0RXHpAUyx97cH4rFdtOgNU6spFJD4w4TDhuJrnoCsEpHC9P7sGA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@tapjs/config": "5.6.4", - "@tapjs/stack": "4.3.3", - "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.4", - "tap-yaml": "4.4.2", - "tcompare": "9.3.2" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "peerDependencies": { - "@tapjs/core": "4.5.8" - } - }, - "node_modules/@tapjs/reporter/node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", "dev": true, "license": "MIT", "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@tapjs/run": { - "version": "4.5.8", - "resolved": "https://registry.npmjs.org/@tapjs/run/-/run-4.5.8.tgz", - "integrity": "sha512-CZFa9qBEcMjZIbDX12rbuGFGQ3Ct7N/Bn7Lk3/kQWe9tR/l05oFvp7zn/2YyjkRvZv2a5YxvhHZ7Hv3Mk5tr0w==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/which": "^7.0.4", - "@tapjs/after": "3.3.10", - "@tapjs/before": "4.3.10", - "@tapjs/config": "5.6.4", - "@tapjs/processinfo": "^3.1.12", - "@tapjs/reporter": "4.4.10", - "@tapjs/spawn": "4.3.10", - "@tapjs/stdin": "4.3.10", - "@tapjs/test": "4.4.8", - "c8": "^10.1.3", - "chalk": "^5.6.2", - "chokidar": "^4.0.2", - "foreground-child": "^4.0.0", - "glob": "^13.0.2", - "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.4.0", - "rimraf": "^6.0.0", - "semver": "^7.7.2", - "signal-exit": "^4.1.0", - "tap-parser": "18.3.4", - "tap-yaml": "4.4.2", - "tcompare": "9.3.2", - "trivial-deferred": "^2.0.0" - }, - "bin": { - "tap-run": "dist/esm/index.js" - }, - "engines": { - "node": "20 || >=22" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "peerDependencies": { - "@tapjs/core": "4.5.8" + "url": "https://github.com/sindresorhus/is?sponsor=1" } }, - "node_modules/@tapjs/run/node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", "dev": true, "license": "MIT", "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@tapjs/run/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/@tapjs/snapshot": { - "version": "4.3.10", - "resolved": "https://registry.npmjs.org/@tapjs/snapshot/-/snapshot-4.3.10.tgz", - "integrity": "sha512-N08scJXaqX5WG6lWgw2bieVprcavSO+MAfnvCkP/G5wPOFgvzgbMh1/EFRpJvIlvwCXmdvqsU79Ka5fjkkVtLA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "is-actual-promise": "^1.0.1", - "tcompare": "9.3.2", - "trivial-deferred": "^2.0.0" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "peerDependencies": { - "@tapjs/core": "4.5.8" - } - }, - "node_modules/@tapjs/spawn": { - "version": "4.3.10", - "resolved": "https://registry.npmjs.org/@tapjs/spawn/-/spawn-4.3.10.tgz", - "integrity": "sha512-xXQJ5H7xNYwYUcho6c9ErBuQLTQ2KFjEkn5fuMs/1IKKqf8JJ9zZQlPzNhfytendw6Bv14PxS9kjVrvvozbnSA==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - }, - "peerDependencies": { - "@tapjs/core": "4.5.8" - } - }, - "node_modules/@tapjs/stack": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@tapjs/stack/-/stack-4.3.3.tgz", - "integrity": "sha512-7T64b+OIyU0WitBzu8ksfwt+EvtSrh6aHYhQD0lImrDqxw2Jdwvd43F6sEFXiAA+sO/d0ERUn+OJW3zYNpygTg==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@tapjs/stdin": { - "version": "4.3.10", - "resolved": "https://registry.npmjs.org/@tapjs/stdin/-/stdin-4.3.10.tgz", - "integrity": "sha512-vip3JDKW6BumPL9LTE25pMiw4sbsNHMvhSUK4T4SfEbZ/7mmRudtSMrozSiqUzcQKNyNR9A8bQM2pOe8uWwXmQ==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - }, - "peerDependencies": { - "@tapjs/core": "4.5.8" - } - }, - "node_modules/@tapjs/test": { - "version": "4.4.8", - "resolved": "https://registry.npmjs.org/@tapjs/test/-/test-4.4.8.tgz", - "integrity": "sha512-h9VUaICX+bo3KBHCf5Ky6buo3OaGS+HrUghjMcXB//m24MKfKBd00EOWznhIqwmppDWoapVJ0BZuL6KnyKPGjg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/ts-node-temp-fork-for-pr-2009": "^10.9.7", - "@tapjs/after": "3.3.10", - "@tapjs/after-each": "4.3.10", - "@tapjs/asserts": "4.3.10", - "@tapjs/before": "4.3.10", - "@tapjs/before-each": "4.3.10", - "@tapjs/chdir": "3.3.10", - "@tapjs/filter": "4.3.10", - "@tapjs/fixture": "4.3.10", - "@tapjs/intercept": "4.3.10", - "@tapjs/mock": "4.4.8", - "@tapjs/node-serialize": "4.3.10", - "@tapjs/snapshot": "4.3.10", - "@tapjs/spawn": "4.3.10", - "@tapjs/stdin": "4.3.10", - "@tapjs/typescript": "3.5.10", - "@tapjs/worker": "4.3.10", - "glob": "^13.0.2", - "jackspeak": "^4.2.3", - "mkdirp": "^3.0.0", - "package-json-from-dist": "^1.0.0", - "resolve-import": "^2.4.0", - "rimraf": "^6.0.0", - "sync-content": "^2.0.4", - "tap-parser": "18.3.4", - "tshy": "^3.3.2", - "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.5.8" - } - }, - "node_modules/@tapjs/test/node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/@tapjs/typescript": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/@tapjs/typescript/-/typescript-3.5.10.tgz", - "integrity": "sha512-Z6abXH2P+WSXTWXCtqc6ly3SzwTwFSFsUlLCmOGIiaVvVluABK5/Ylz4HkKJw+2yWLZN0pVrx+inpt3Hjjm2oQ==", - "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.5.8" - } - }, - "node_modules/@tapjs/worker": { - "version": "4.3.10", - "resolved": "https://registry.npmjs.org/@tapjs/worker/-/worker-4.3.10.tgz", - "integrity": "sha512-rp3n35xbO34xo/hSrWOs2Dsb2nxDrSdVzGvJEa7/KCA+X59+Vjb/lS8W6lSDLPtgH5LVNMxyJ1URG71K1+b33Q==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - }, - "peerDependencies": { - "@tapjs/core": "4.5.8" - } - }, - "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.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node20/-/node20-20.1.9.tgz", - "integrity": "sha512-IjlTv1RsvnPtUcjTqtVsZExKVq+KQx4g5pCP5tI7rAs6Xesl2qFwSz/tPDBC4JajkL/MlezBu3gPUwqRHl+RIg==", - "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" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@types/esrecurse": { @@ -2871,13 +1675,6 @@ "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" - }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -2893,14 +1690,13 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.9.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.1.tgz", - "integrity": "sha512-xfrlY7UD5rMJk3ZVJP8BNzS28J36YJg+xp+LPXV1TdWxr8uMH5A860QNxYDGQe/ylDSgjxE52Q9VnO7p75tJxg==", + "version": "25.0.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.1.tgz", + "integrity": "sha512-czWPzKIAXucn9PtsttxmumiQ9N0ok9FrBwgRWrwmVLlp86BrMExzvXRLFYRJ+Ex3g6yqj+KuaxfX1JTgV2lpfg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "undici-types": ">=7.24.0 <7.24.7" + "undici-types": "~7.16.0" } }, "node_modules/@types/normalize-package-data": { @@ -2924,157 +1720,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@typescript/native-preview": { - "version": "7.0.0-dev.20260527.1", - "resolved": "https://registry.npmjs.org/@typescript/native-preview/-/native-preview-7.0.0-dev.20260527.1.tgz", - "integrity": "sha512-j81qKiwCPgMEjtk8uDLP+TDW60l6mugoJ7SNzfHWv1PJ6bUjIAHuag4P1jSLm1IpKuMuB3TTi4f61n7TJi8Jog==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsgo": "bin/tsgo.js" - }, - "engines": { - "node": ">=16.20.0" - }, - "optionalDependencies": { - "@typescript/native-preview-darwin-arm64": "7.0.0-dev.20260527.1", - "@typescript/native-preview-darwin-x64": "7.0.0-dev.20260527.1", - "@typescript/native-preview-linux-arm": "7.0.0-dev.20260527.1", - "@typescript/native-preview-linux-arm64": "7.0.0-dev.20260527.1", - "@typescript/native-preview-linux-x64": "7.0.0-dev.20260527.1", - "@typescript/native-preview-win32-arm64": "7.0.0-dev.20260527.1", - "@typescript/native-preview-win32-x64": "7.0.0-dev.20260527.1" - } - }, - "node_modules/@typescript/native-preview-darwin-arm64": { - "version": "7.0.0-dev.20260527.1", - "resolved": "https://registry.npmjs.org/@typescript/native-preview-darwin-arm64/-/native-preview-darwin-arm64-7.0.0-dev.20260527.1.tgz", - "integrity": "sha512-bDi6FJ644n3uKdp/ZI7j50ChVyGOsrJrkwihQb6x3yByFQkTINLu3e6ZkY+HveQ2Zw2vy9SGN8E7b3A5iSOO0A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=16.20.0" - } - }, - "node_modules/@typescript/native-preview-darwin-x64": { - "version": "7.0.0-dev.20260527.1", - "resolved": "https://registry.npmjs.org/@typescript/native-preview-darwin-x64/-/native-preview-darwin-x64-7.0.0-dev.20260527.1.tgz", - "integrity": "sha512-r6GXrTdalXZu1/b5goMpAe+efZvOfwdE45gl8Tti3fckP9icK3xdiN+VnNi0RL2/c2L86RyN8nGxihaCHGCKbw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=16.20.0" - } - }, - "node_modules/@typescript/native-preview-linux-arm": { - "version": "7.0.0-dev.20260527.1", - "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-arm/-/native-preview-linux-arm-7.0.0-dev.20260527.1.tgz", - "integrity": "sha512-BlfQBatMkZHi3o+atxoUW0czGJNjo9cpO1BoQeB3gxZ7D/cDZHYHmKFSSRx8UxMktwP5k5lPxi0wgA3Ic2mQyQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=16.20.0" - } - }, - "node_modules/@typescript/native-preview-linux-arm64": { - "version": "7.0.0-dev.20260527.1", - "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-arm64/-/native-preview-linux-arm64-7.0.0-dev.20260527.1.tgz", - "integrity": "sha512-QJAFyPJgJqJVLbVPHl5xL7FCn3HNPLdpEm8l7KBgiYpltLhU1p/LJ3iN0XpFRAhq9ojWbZebo8t/h8MX35QjTQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=16.20.0" - } - }, - "node_modules/@typescript/native-preview-linux-x64": { - "version": "7.0.0-dev.20260527.1", - "resolved": "https://registry.npmjs.org/@typescript/native-preview-linux-x64/-/native-preview-linux-x64-7.0.0-dev.20260527.1.tgz", - "integrity": "sha512-UFB7ZdK2/vIIi62nfn3JhyGV7qR/qXjKPQaPVXwzCvaPieTZcsNsALjKU0W5WHThyi+5p3U7O3dGE7n6P4q4Yw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=16.20.0" - } - }, - "node_modules/@typescript/native-preview-win32-arm64": { - "version": "7.0.0-dev.20260527.1", - "resolved": "https://registry.npmjs.org/@typescript/native-preview-win32-arm64/-/native-preview-win32-arm64-7.0.0-dev.20260527.1.tgz", - "integrity": "sha512-rp/q9+9H77JQvepC/UpDP8CdeTGSGyhp9BVbmFwqUV2NhMHPldfys3ihY7OQdoVBgWIKQyxEHB+FTr8Z7kre1Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=16.20.0" - } - }, - "node_modules/@typescript/native-preview-win32-x64": { - "version": "7.0.0-dev.20260527.1", - "resolved": "https://registry.npmjs.org/@typescript/native-preview-win32-x64/-/native-preview-win32-x64-7.0.0-dev.20260527.1.tgz", - "integrity": "sha512-864Pq4qoDcacUJhs2/kQplyfwNO0APUmx1k8qUaJt2P9ZGF0Pu++afJi7OagImHMiEQcmigjmZPuOodOk5YmqQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=16.20.0" - } - }, - "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/abstract-logging": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz", @@ -3115,31 +1760,8 @@ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.5", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz", - "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14" + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/aggregate-error": { @@ -3241,13 +1863,6 @@ "dev": true, "license": "MIT" }, - "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", @@ -3269,16 +1884,6 @@ "dev": true, "license": "MIT" }, - "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": "ISC", - "engines": { - "node": ">=16" - } - }, "node_modules/atomic-sleep": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", @@ -3289,19 +1894,6 @@ "node": ">=8.0.0" } }, - "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", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/avvio": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/avvio/-/avvio-9.1.0.tgz", @@ -3313,13 +1905,6 @@ "fastq": "^1.17.1" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, "node_modules/baseline-browser-mapping": { "version": "2.9.2", "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.2.tgz", @@ -3451,154 +2036,6 @@ "node": ">= 0.8" } }, - "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/c8/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/c8/node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/c8/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/c8/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/c8/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/cacache": { - "version": "20.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-20.0.4.tgz", - "integrity": "sha512-M3Lab8NPYlZU2exsL3bMVvMrMqgwCnMWfdZbK28bn3pK6APT/Te/I8hjRPNu1uwORY9a1eEQoifXbKPQMfMTOA==", - "dev": true, - "license": "ISC", - "dependencies": { - "@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" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/cacache/node_modules/lru-cache": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.0.tgz", - "integrity": "sha512-5YgH9UJd7wVb9hIouI2adWpgqrrICkt070Dnj8EUY1+B4B2P9eRLPAkAAo6NICA7CEhOIeBHl46u9zSNpNu7zA==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } - }, "node_modules/call-bind-apply-helpers": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", @@ -3689,32 +2126,6 @@ "node": ">=10" } }, - "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/clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", @@ -3725,35 +2136,6 @@ "node": ">=6" } }, - "node_modules/cli-boxes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", - "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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": { - "restore-cursor": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/cli-highlight": { "version": "2.1.11", "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", @@ -3838,118 +2220,17 @@ "node_modules/cli-table3": { "version": "0.6.5", "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", - "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "string-width": "^4.2.0" - }, - "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" - } - }, - "node_modules/cli-truncate": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", - "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", - "dev": true, - "license": "MIT", - "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^7.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-truncate/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/cli-truncate/node_modules/emoji-regex": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", - "dev": true, - "license": "MIT" - }, - "node_modules/cli-truncate/node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-truncate/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/cli-truncate/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-truncate/node_modules/strip-ansi": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", - "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.2.2" + "string-width": "^4.2.0" }, "engines": { - "node": ">=12" + "node": "10.* || >= 12.*" }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "optionalDependencies": { + "@colors/colors": "1.5.0" } }, "node_modules/cliui": { @@ -4008,19 +2289,6 @@ "url": "https://github.com/chalk/strip-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", @@ -4163,17 +2431,8 @@ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true, - "license": "MIT" - }, - "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", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } + "peer": true }, "node_modules/cookie": { "version": "0.7.2", @@ -4354,16 +2613,6 @@ "node": ">=6" } }, - "node_modules/diff": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz", - "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -4415,13 +2664,6 @@ "readable-stream": "^2.0.2" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true, - "license": "MIT" - }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -4695,17 +2937,6 @@ "node": ">= 0.4" } }, - "node_modules/es-toolkit": { - "version": "1.47.0", - "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.47.0.tgz", - "integrity": "sha512-n1GuoD0WEQZMBk5tttoZSqwgyLx01oqa5XsBmCHwPyNe1S9jPBEmtR2pSgp2kJuWE3ciFZ6yRHmY4pM4C3OOkw==", - "dev": true, - "license": "MIT", - "workspaces": [ - "docs", - "benchmarks" - ] - }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -4969,16 +3200,6 @@ "node": ">= 0.6" } }, - "node_modules/events-to-array": { - "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", - "engines": { - "node": ">=12" - } - }, "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -5016,13 +3237,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "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/express": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", @@ -5360,35 +3574,6 @@ "dev": true, "license": "ISC" }, - "node_modules/foreground-child": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-4.0.3.tgz", - "integrity": "sha512-yeXZaNbCBGaT9giTpLPBdtedzjwhlJBUoL/R4BVQU5mn0TQXOHwVIl1Q2DMuBIdNno4ktA1abZ7dQFVxD6uHxw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "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/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -5409,27 +3594,6 @@ "node": ">= 0.8" } }, - "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.2", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", @@ -5445,19 +3609,6 @@ "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/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -5468,13 +3619,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "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": "ISC" - }, "node_modules/function-timeout": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/function-timeout/-/function-timeout-1.0.2.tgz", @@ -5586,24 +3730,6 @@ "through2": "~2.0.0" } }, - "node_modules/glob": { - "version": "13.0.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", - "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "minimatch": "^10.2.2", - "minipass": "^7.1.3", - "path-scurry": "^2.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -5751,20 +3877,6 @@ "dev": true, "license": "ISC" }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "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-errors": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", @@ -5786,34 +3898,6 @@ "url": "https://opencollective.com/express" } }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -5851,19 +3935,6 @@ "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/import-fresh": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", @@ -5944,153 +4015,14 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true, - "license": "ISC" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true, - "license": "ISC" - }, - "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": { - "@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": ">=18" - }, - "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/ink/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ink/node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/ink/node_modules/emoji-regex": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", - "dev": true, - "license": "MIT" - }, - "node_modules/ink/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/ink/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ink/node_modules/strip-ansi": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", - "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.2.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } + "license": "ISC" }, - "node_modules/ip-address": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.2.0.tgz", - "integrity": "sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==", + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 12" - } + "license": "ISC" }, "node_modules/ipaddr.js": { "version": "2.3.0", @@ -6102,13 +4034,6 @@ "node": ">= 10" } }, - "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": "BlueOak-1.0.0" - }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -6149,22 +4074,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-in-ci": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-in-ci/-/is-in-ci-1.0.0.tgz", - "integrity": "sha512-eUuAjybVTHMYWm/U+vBO1sY/JOCgoPCXRxzdju0K+K0BiGW0SChEL1MLC0PoCIR1OlPo5YAp8HuQoUlsWEICwg==", - "dev": true, - "license": "MIT", - "bin": { - "is-in-ci": "cli.js" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -6198,16 +4107,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "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.10.0" - } - }, "node_modules/is-promise": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", @@ -6272,61 +4171,6 @@ "node": "^18.17 || >=20.6.1" } }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", - "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jackspeak": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", - "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^9.0.0" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/java-properties": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", @@ -6466,15 +4310,6 @@ "node": ">=6" } }, - "node_modules/jsonc-simple-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-simple-parser/-/jsonc-simple-parser-3.0.0.tgz", - "integrity": "sha512-0qi9Kuj4JPar4/3b9wZteuPZrTeFzXsQyOZj7hksnReCZN3Vr17Doz7w/i3E9XH7vRkVTHhHES+r1h97I+hfww==", - "dev": true, - "dependencies": { - "reghex": "^3.0.2" - } - }, "node_modules/jsonfile": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", @@ -6488,16 +4323,6 @@ "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", @@ -6677,19 +4502,6 @@ "dev": true, "license": "MIT" }, - "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", @@ -6719,53 +4531,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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.6", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-15.0.6.tgz", - "integrity": "sha512-Je0fLJ0F5atA7F+eIlLzk+Wkcl57JDf4kf+EW8xiP5E31xOQxkIxTbgf1Oi1Lw9tRI9UEMRdI5Vz2xTzoNU1Jw==", - "dev": true, - "license": "ISC", - "dependencies": { - "@gar/promise-retry": "^1.0.0", - "@npmcli/agent": "^4.0.0", - "@npmcli/redact": "^4.0.0", - "cacache": "^20.0.1", - "http-cache-semantics": "^4.1.1", - "minipass": "^7.0.2", - "minipass-fetch": "^5.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^1.0.0", - "proc-log": "^6.0.0", - "ssri": "^13.0.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, "node_modules/marked": { "version": "15.0.12", "resolved": "https://registry.npmjs.org/marked/-/marked-15.0.12.tgz", @@ -6917,205 +4682,56 @@ }, "node_modules/mime-types": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", - "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", - "license": "MIT", - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "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": ">=6" - } - }, - "node_modules/minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.5" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", - "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", - "dev": true, - "license": "BlueOak-1.0.0", - "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.2", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-5.0.2.tgz", - "integrity": "sha512-2d0q2a8eCi2IRg/IGubCNRJoYbA1+YPXAzQVRFmB45gdGZafyivnZ5YSEfo3JikbjGxOdntGFvBQGqaSMXlAFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "minipass": "^7.0.3", - "minipass-sized": "^2.0.0", - "minizlib": "^3.0.1" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - }, - "optionalDependencies": { - "iconv-lite": "^0.7.2" - } - }, - "node_modules/minipass-flush": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.7.tgz", - "integrity": "sha512-TbqTz9cUwWyHS2Dy89P3ocAGUGxKjjLuR9z8w4WUTGAVgEj17/4nhgo2Du56i0Fm3Pm30g4iA8Lcqctc76jCzA==", - "dev": true, - "license": "BlueOak-1.0.0", - "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": "2.0.0", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-2.0.0.tgz", - "integrity": "sha512-zSsHhto5BcUVM2m1LurnXY6M//cGhVaegT71OfOXoprxT6o780GZd792ea6FfrQkuU4usHZIUczAQMRUE2plzA==", - "dev": true, - "license": "ISC", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "license": "MIT", "dependencies": { - "minipass": "^7.1.2" + "mime-db": "^1.54.0" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "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==", + "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", - "dependencies": { - "minipass": "^7.1.2" - }, "engines": { - "node": ">= 18" + "node": ">=6" } }, - "node_modules/mkdirp": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", - "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", "dev": true, - "license": "MIT", - "bin": { - "mkdirp": "dist/cjs/src/bin.js" + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" }, "engines": { - "node": ">=10" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/module-replacements": { "version": "3.0.0-beta.7", "resolved": "https://registry.npmjs.org/module-replacements/-/module-replacements-3.0.0-beta.7.tgz", @@ -7189,74 +4805,6 @@ "node": ">=18" } }, - "node_modules/node-gyp": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-12.3.0.tgz", - "integrity": "sha512-QNcUWM+HgJplcPzBvFBZ9VXacyGZ4+VTOb80PwWR+TlVzoHbRKULNEzpRsnaoxG3Wzr7Qh7BYxGDU3CbKib2Yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "env-paths": "^2.2.0", - "exponential-backoff": "^3.1.1", - "graceful-fs": "^4.2.6", - "nopt": "^9.0.0", - "proc-log": "^6.0.0", - "semver": "^7.3.5", - "tar": "^7.5.4", - "tinyglobby": "^0.2.12", - "undici": "^6.25.0", - "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": "4.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", - "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=20" - } - }, - "node_modules/node-gyp/node_modules/undici": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.26.0.tgz", - "integrity": "sha512-4yqz8a3n5HmGTlsbADNtr/dJlhkh/55Rq798G6ibiULcXbDtaLpTl1pvdqcbFfeoj3iSi52lePFM7h9H21cw/A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.17" - } - }, - "node_modules/node-gyp/node_modules/which": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", - "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^4.0.0" - }, - "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.27", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", @@ -7265,22 +4813,6 @@ "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/normalize-package-data": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", @@ -7403,220 +4935,75 @@ "@sigstore/tuf": "^4.0.1", "abbrev": "^4.0.0", "archy": "~1.0.0", - "cacache": "^20.0.3", - "chalk": "^5.6.2", - "ci-info": "^4.4.0", - "fastest-levenshtein": "^1.0.16", - "fs-minipass": "^3.0.3", - "glob": "^13.0.6", - "graceful-fs": "^4.2.11", - "hosted-git-info": "^9.0.2", - "ini": "^6.0.0", - "init-package-json": "^8.2.5", - "is-cidr": "^6.0.3", - "json-parse-even-better-errors": "^5.0.0", - "libnpmaccess": "^10.0.3", - "libnpmdiff": "^8.1.4", - "libnpmexec": "^10.2.4", - "libnpmfund": "^7.0.18", - "libnpmorg": "^8.0.1", - "libnpmpack": "^9.1.4", - "libnpmpublish": "^11.1.3", - "libnpmsearch": "^9.0.1", - "libnpmteam": "^8.0.2", - "libnpmversion": "^8.0.3", - "make-fetch-happen": "^15.0.4", - "minimatch": "^10.2.4", - "minipass": "^7.1.3", - "minipass-pipeline": "^1.2.4", - "ms": "^2.1.2", - "node-gyp": "^12.2.0", - "nopt": "^9.0.0", - "npm-audit-report": "^7.0.0", - "npm-install-checks": "^8.0.0", - "npm-package-arg": "^13.0.2", - "npm-pick-manifest": "^11.0.3", - "npm-profile": "^12.0.1", - "npm-registry-fetch": "^19.1.1", - "npm-user-validate": "^4.0.0", - "p-map": "^7.0.4", - "pacote": "^21.5.0", - "parse-conflict-json": "^5.0.1", - "proc-log": "^6.1.0", - "qrcode-terminal": "^0.12.0", - "read": "^5.0.1", - "semver": "^7.7.4", - "spdx-expression-parse": "^4.0.0", - "ssri": "^13.0.1", - "supports-color": "^10.2.2", - "tar": "^7.5.11", - "text-table": "~0.2.0", - "tiny-relative-date": "^2.0.2", - "treeverse": "^3.0.0", - "validate-npm-package-name": "^7.0.2", - "which": "^6.0.1" - }, - "bin": { - "npm": "bin/npm-cli.js", - "npx": "bin/npx-cli.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-bundled/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-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-normalize-package-bin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-6.0.0.tgz", - "integrity": "sha512-tdt4aFn9QamlhdN3HV2D2ccpBwO5/fyjjbXUxYA6uBjyekMZcZvDq0aSj9t5Jo+tih6AYFnt/cuIRn9013e0Uw==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^22.22.2 || ^24.15.0 || >=26.0.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/hosted-git-info": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-9.0.3.tgz", - "integrity": "sha512-Hc+ghLoSt6QaYZUv0WBiIvmMDZuZZ7oaDvdH8MbfOO4lOsxdXLEvuC6ePoGs9H1X9oCLyq6+NVN0MKqD+ydxyg==", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^11.1.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/npm-package-arg/node_modules/lru-cache": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.0.tgz", - "integrity": "sha512-5YgH9UJd7wVb9hIouI2adWpgqrrICkt070Dnj8EUY1+B4B2P9eRLPAkAAo6NICA7CEhOIeBHl46u9zSNpNu7zA==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/npm-package-arg/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/npm-packlist": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-10.0.4.tgz", - "integrity": "sha512-uMW73iajD8hiH4ZBxEV3HC+eTnppIqwakjOYuvgddnalIw2lJguKviK1pcUJDlIWm1wSJkchpDZDSVVsZEYRng==", - "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": { + "cacache": "^20.0.3", + "chalk": "^5.6.2", + "ci-info": "^4.4.0", + "fastest-levenshtein": "^1.0.16", + "fs-minipass": "^3.0.3", + "glob": "^13.0.6", + "graceful-fs": "^4.2.11", + "hosted-git-info": "^9.0.2", + "ini": "^6.0.0", + "init-package-json": "^8.2.5", + "is-cidr": "^6.0.3", + "json-parse-even-better-errors": "^5.0.0", + "libnpmaccess": "^10.0.3", + "libnpmdiff": "^8.1.4", + "libnpmexec": "^10.2.4", + "libnpmfund": "^7.0.18", + "libnpmorg": "^8.0.1", + "libnpmpack": "^9.1.4", + "libnpmpublish": "^11.1.3", + "libnpmsearch": "^9.0.1", + "libnpmteam": "^8.0.2", + "libnpmversion": "^8.0.3", + "make-fetch-happen": "^15.0.4", + "minimatch": "^10.2.4", + "minipass": "^7.1.3", + "minipass-pipeline": "^1.2.4", + "ms": "^2.1.2", + "node-gyp": "^12.2.0", + "nopt": "^9.0.0", + "npm-audit-report": "^7.0.0", "npm-install-checks": "^8.0.0", - "npm-normalize-package-bin": "^5.0.0", - "npm-package-arg": "^13.0.0", - "semver": "^7.3.5" + "npm-package-arg": "^13.0.2", + "npm-pick-manifest": "^11.0.3", + "npm-profile": "^12.0.1", + "npm-registry-fetch": "^19.1.1", + "npm-user-validate": "^4.0.0", + "p-map": "^7.0.4", + "pacote": "^21.5.0", + "parse-conflict-json": "^5.0.1", + "proc-log": "^6.1.0", + "qrcode-terminal": "^0.12.0", + "read": "^5.0.1", + "semver": "^7.7.4", + "spdx-expression-parse": "^4.0.0", + "ssri": "^13.0.1", + "supports-color": "^10.2.2", + "tar": "^7.5.11", + "text-table": "~0.2.0", + "tiny-relative-date": "^2.0.2", + "treeverse": "^3.0.0", + "validate-npm-package-name": "^7.0.2", + "which": "^6.0.1" + }, + "bin": { + "npm": "bin/npm-cli.js", + "npx": "bin/npx-cli.js" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/npm-pick-manifest/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-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==", + "node_modules/npm-normalize-package-bin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-6.0.0.tgz", + "integrity": "sha512-tdt4aFn9QamlhdN3HV2D2ccpBwO5/fyjjbXUxYA6uBjyekMZcZvDq0aSj9t5Jo+tih6AYFnt/cuIRn9013e0Uw==", "dev": 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": "^22.22.2 || ^24.15.0 || >=26.0.0" } }, "node_modules/npm-run-all2": { @@ -9617,16 +7004,6 @@ "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/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -9768,45 +7145,6 @@ "node": ">=4" } }, - "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/pacote": { - "version": "21.5.0", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-21.5.0.tgz", - "integrity": "sha512-VtZ0SB8mb5Tzw3dXDfVAIjhyVKUHZkS/ZH9/5mpKenwC9sFOXNI0JI7kEF7IMkwOnsWMFrvAZHzx1T5fmrp9FQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "@gar/promise-retry": "^1.0.0", - "@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", - "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/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -9885,16 +7223,6 @@ "node": ">= 0.8" } }, - "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", @@ -9915,33 +7243,6 @@ "node": ">=8" } }, - "node_modules/path-scurry": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", - "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "11.2.4", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", - "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } - }, "node_modules/path-to-regexp": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", @@ -10046,16 +7347,6 @@ "dev": true, "license": "MIT" }, - "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/pkg-conf": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", @@ -10133,19 +7424,6 @@ "node": ">=4" } }, - "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": "^14.17.0 || ^16.13.0 || >=18.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -10201,57 +7479,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "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": { - "chalk": "^5.2.0", - "prismjs": "^1.30.0", - "string-length": "^6.0.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/prismjs-terminal/node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "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-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -10259,19 +7486,6 @@ "dev": true, "license": "MIT" }, - "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/process-warning": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz", @@ -10370,107 +7584,39 @@ "dev": true, "license": "MIT", "dependencies": { - "bytes": "~3.1.2", - "http-errors": "~2.0.1", - "iconv-lite": "~0.7.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "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" + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.7.0", + "unpipe": "~1.0.0" }, - "peerDependencies": { - "react": "^18.3.1" + "engines": { + "node": ">= 0.10" } }, - "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==", + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, - "license": "MIT", + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", "dependencies": { - "@base2/pretty-print-object": "1.0.1", - "is-plain-object": "5.0.0", - "react-is": "18.1.0" + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, - "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" + "bin": { + "rc": "cli.js" } }, - "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==", + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "dev": true, "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.2" - }, "engines": { "node": ">=0.10.0" - }, - "peerDependencies": { - "react": "^18.3.1" } }, "node_modules/read-package-json-fast": { @@ -10548,20 +7694,6 @@ "dev": true, "license": "MIT" }, - "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", - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/real-require": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", @@ -10572,13 +7704,6 @@ "node": ">= 12.13.0" } }, - "node_modules/reghex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/reghex/-/reghex-3.0.2.tgz", - "integrity": "sha512-Zb9DJ5u6GhgqRSBnxV2QSnLqEwcKxHWFA1N2yUa4ZUAO1P8jlWKYtWZ6/ooV6yylspGXJX0O/uNzEv0xrCtwaA==", - "dev": true, - "license": "MIT" - }, "node_modules/registry-auth-token": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.1.0.tgz", @@ -10621,40 +7746,6 @@ "node": ">=4" } }, - "node_modules/resolve-import": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/resolve-import/-/resolve-import-2.4.0.tgz", - "integrity": "sha512-gLWKdA5tiv5j/D7ipR47u3ovbVfzFPrctTdw2Ulnpmr6PPVVSvPKGNWu09jXVNlOSLLAeD6CA13bjIelpWttSw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "glob": "^13.0.0", - "walk-up-path": "^4.0.0" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "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": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/ret": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/ret/-/ret-0.5.0.tgz", @@ -10683,26 +7774,6 @@ "dev": true, "license": "MIT" }, - "node_modules/rimraf": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.3.tgz", - "integrity": "sha512-LKg+Cr2ZF61fkcaK1UdkH2yEBBKnYjTyWzTJT6KNPcSPaiT7HSdhtMXQuN5wkTX0Xu72KQ1l8S42rlmexS2hSA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "glob": "^13.0.3", - "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/router": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", @@ -10757,16 +7828,6 @@ "dev": true, "license": "MIT" }, - "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/secure-json-parse": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-4.1.0.tgz", @@ -11471,24 +8532,6 @@ "node": ">=4" } }, - "node_modules/sigstore": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-4.1.1.tgz", - "integrity": "sha512-endqECJkfhozrXMK5ngu/UAA0xVcVEFdnHJCElGaExypjW+HK5i6zu3NteLoaX/iFbRUbC3+DjttQs0GARr+5w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/bundle": "^4.0.0", - "@sigstore/core": "^3.2.1", - "@sigstore/protobuf-specs": "^0.5.0", - "@sigstore/sign": "^4.1.1", - "@sigstore/tuf": "^4.0.2", - "@sigstore/verify": "^3.1.1" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, "node_modules/skin-tone": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz", @@ -11502,93 +8545,6 @@ "node": ">=8" } }, - "node_modules/slice-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz", - "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.1", - "is-fullwidth-code-point": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/slice-ansi/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": { - "get-east-asian-width": "^1.3.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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.9", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.9.tgz", - "integrity": "sha512-LJhUYUvItdQ0LkJTmPeaEObWXAqFyfmP85x0tch/ez9cahmhlBBLbIqDFnvBnUJGagb0JbIQrkBs1wJ+yRYpEw==", - "dev": true, - "license": "MIT", - "dependencies": { - "ip-address": "^10.1.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/sonic-boom": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.0.tgz", @@ -11662,42 +8618,6 @@ "node": ">= 10.x" } }, - "node_modules/ssri": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-13.0.1.tgz", - "integrity": "sha512-QUiRf1+u9wPTL/76GTYlKttDEBWV1ga9ZXW8BG6kfdeyyM8LGPix9gROyg9V2+P0xNyF3X2Go526xKFdMZrHSQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "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": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "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": ">=8" - } - }, "node_modules/statuses": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", @@ -11747,38 +8667,6 @@ "dev": true, "license": "MIT" }, - "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": { - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string-length/node_modules/strip-ansi": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", - "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.2.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -11794,55 +8682,15 @@ "node": ">=8" } }, - "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/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { "node": ">=8" } @@ -11925,443 +8773,88 @@ "url": "https://github.com/chalk/supports-hyperlinks?sponsor=1" } }, - "node_modules/sync-content": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/sync-content/-/sync-content-2.0.4.tgz", - "integrity": "sha512-w3ioiBmbaogob33WdLnuwFk+8tpePI58CTWKqtdAgEqc2hfGuSwP02gPETqNX/3PLS5skv5a1wQR0gbaa2W0XQ==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "glob": "^13.0.1", - "mkdirp": "^3.0.1", - "path-scurry": "^2.0.0", - "rimraf": "^6.0.0" - }, - "bin": { - "sync-content": "dist/esm/bin.mjs" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/synckit": { - "version": "0.11.12", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz", - "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@pkgr/core": "^0.2.9" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/synckit" - } - }, - "node_modules/tagged-tag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tagged-tag/-/tagged-tag-1.0.0.tgz", - "integrity": "sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/tap": { - "version": "21.7.4", - "resolved": "https://registry.npmjs.org/tap/-/tap-21.7.4.tgz", - "integrity": "sha512-Snv6jL5USfHTW9PmlEWuqaxoxVpmQYYOlFzUS/p1vOrNUeg6FCSWQFQuLNwljV1DYFy0jATq+gAy6vAVdXeR3A==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@tapjs/after": "3.3.10", - "@tapjs/after-each": "4.3.10", - "@tapjs/asserts": "4.3.10", - "@tapjs/before": "4.3.10", - "@tapjs/before-each": "4.3.10", - "@tapjs/chdir": "3.3.10", - "@tapjs/core": "4.5.8", - "@tapjs/filter": "4.3.10", - "@tapjs/fixture": "4.3.10", - "@tapjs/intercept": "4.3.10", - "@tapjs/mock": "4.4.8", - "@tapjs/node-serialize": "4.3.10", - "@tapjs/run": "4.5.8", - "@tapjs/snapshot": "4.3.10", - "@tapjs/spawn": "4.3.10", - "@tapjs/stdin": "4.3.10", - "@tapjs/test": "4.4.8", - "@tapjs/typescript": "3.5.10", - "@tapjs/worker": "4.3.10", - "resolve-import": "^2.4.0" - }, - "bin": { - "tap": "dist/esm/run.mjs" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/tap-parser": { - "version": "18.3.4", - "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-18.3.4.tgz", - "integrity": "sha512-CiqzdpWn2CvONcWp7UNMF9/rCPJwCz0es+qykkgJruu1Y/rAS8A5MEQujmjx9NErfst3dGiZJU3lDS2jBsgbPA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "events-to-array": "^2.0.3", - "tap-yaml": "4.4.2" - }, - "bin": { - "tap-parser": "bin/cmd.cjs" - }, - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/tap-yaml": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/tap-yaml/-/tap-yaml-4.4.2.tgz", - "integrity": "sha512-03mQI7QhfVZHJqGgFyxNTgUbgsG41ZzpWSb7k1Gangmf9hF71Jpb0Fczs7KtOdUDaHx+KxlPUdM2pQJaijebGA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "yaml": "^2.8.3", - "yaml-types": "^0.4.0" - }, - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/tar": { - "version": "7.5.15", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.15.tgz", - "integrity": "sha512-dzGK0boVlC4W5QFuQN1EFSl3bIDYsk7Tj40U6eIBnK2k/8ml7TZ5agbI5j5+qnoVcAA+rNtBml8SEiLxZpNqRQ==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/fs-minipass": "^4.0.0", - "chownr": "^3.0.0", - "minipass": "^7.1.2", - "minizlib": "^3.1.0", - "yallist": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "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": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/tcompare": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-9.3.2.tgz", - "integrity": "sha512-jSZmZPiMTBDZkV0Li/nNeOkCLtOViC/xgWdvzYheSU9RJt6F1EVUKZUJuH+QqN6tjVJrUXAeWpPNy+aLzfAjCQ==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "diff": "^8.0.2", - "react-element-to-jsx-string": "^15.0.0" - }, - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/temp-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", - "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.16" - } - }, - "node_modules/tempy": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.1.0.tgz", - "integrity": "sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-stream": "^3.0.0", - "temp-dir": "^3.0.0", - "type-fest": "^2.12.2", - "unique-string": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/tempy/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/tempy/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/test-exclude": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.2.tgz", - "integrity": "sha512-u9E6A+ZDYdp7a4WnarkXPZOx8Ilz46+kby6p1yZ8zsGTz9gYa6FIS7lj2oezzNKmtdyyJNNmmXDppga5GB7kSw==", - "dev": true, - "license": "ISC", - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^10.4.1", - "minimatch": "^10.2.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/test-exclude/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/test-exclude/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/test-exclude/node_modules/brace-expansion": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz", - "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/test-exclude/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/test-exclude/node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/test-exclude/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/test-exclude/node_modules/glob/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.2" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/test-exclude/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/test-exclude/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/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==", + "node_modules/synckit": { + "version": "0.11.12", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz", + "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==", "dev": true, - "license": "BlueOak-1.0.0", + "license": "MIT", "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + "@pkgr/core": "^0.2.9" }, "engines": { - "node": ">=16 || 14 >=14.18" + "node": "^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://opencollective.com/synckit" } }, - "node_modules/test-exclude/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/tagged-tag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tagged-tag/-/tagged-tag-1.0.0.tgz", + "integrity": "sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==", "dev": true, - "license": "ISC", + "license": "MIT", "engines": { - "node": ">=14" + "node": ">=20" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/test-exclude/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "node_modules/temp-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", + "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + } + }, + "node_modules/tempy": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.1.0.tgz", + "integrity": "sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==", "dev": true, "license": "MIT", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "is-stream": "^3.0.0", + "temp-dir": "^3.0.0", + "type-fest": "^2.12.2", + "unique-string": "^3.0.0" }, "engines": { - "node": ">=12" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/test-exclude/node_modules/strip-ansi": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", - "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "node_modules/tempy/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, "license": "MIT", - "dependencies": { - "ansi-regex": "^6.2.2" - }, "engines": { - "node": ">=12" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/test-exclude/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "node_modules/tempy/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=12" + "node": ">=12.20" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/thenify": { @@ -12515,86 +9008,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "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.3.2", - "resolved": "https://registry.npmjs.org/tshy/-/tshy-3.3.2.tgz", - "integrity": "sha512-vOIXkqMtBWNjKUR/c99+6N50LhWdnKG1xE3+5wf8IPdzxx2lcIFPvbGgFdBBgoTMbdNb8mz06MUm7hY+TFnJcw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@typescript/native-preview": "^7.0.0-dev.20260218.1", - "chalk": "^5.6.2", - "chokidar": "^4.0.3", - "foreground-child": "^4.0.0", - "jsonc-simple-parser": "^3.0.0", - "minimatch": "^10.0.3", - "mkdirp": "^3.0.1", - "polite-json": "^5.0.0", - "resolve-import": "^2.4.0", - "rimraf": "^6.1.2", - "sync-content": "^2.0.3", - "typescript": "^5.9.3", - "walk-up-path": "^4.0.0" - }, - "bin": { - "tshy": "dist/esm/bin-min.mjs" - }, - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/tshy/node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/tshy/node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/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/tunnel": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", @@ -12685,12 +9098,11 @@ } }, "node_modules/undici-types": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.24.6.tgz", - "integrity": "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/unicode-emoji-modifier-base": { "version": "1.0.0", @@ -12817,42 +9229,6 @@ "dev": true, "license": "MIT" }, - "node_modules/uuid": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-14.0.0.tgz", - "integrity": "sha512-Qo+uWgilfSmAhXCMav1uYFynlQO7fMFiMVZsQqZRMIXp0O7rR7qjkj+cPvBHLgBqi960QCoo/PH2/6ZtVqKvrg==", - "dev": true, - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist-node/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" - }, - "node_modules/v8-to-istanbul": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", - "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", - "dev": true, - "license": "ISC", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "engines": { - "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", @@ -12883,16 +9259,6 @@ "node": ">= 0.8" } }, - "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/web-worker": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.2.0.tgz", @@ -12916,63 +9282,6 @@ "node": ">= 8" } }, - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "string-width": "^7.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/widest-line/node_modules/emoji-regex": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", - "dev": true, - "license": "MIT" - }, - "node_modules/widest-line/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/widest-line/node_modules/strip-ansi": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", - "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.2.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", @@ -13008,25 +9317,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "6.2.3", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", @@ -13088,28 +9378,6 @@ "dev": true, "license": "ISC" }, - "node_modules/ws": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz", - "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -13138,36 +9406,6 @@ "license": "ISC", "peer": true }, - "node_modules/yaml": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz", - "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==", - "dev": true, - "license": "ISC", - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "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": { "version": "18.0.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz", @@ -13186,16 +9424,6 @@ "node": "^20.19.0 || ^22.12.0 || >=23" } }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, "node_modules/yargs/node_modules/emoji-regex": { "version": "10.6.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", @@ -13272,13 +9500,6 @@ "funding": { "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" } } } diff --git a/package.json b/package.json index 2ce02514..10f52dcb 100644 --- a/package.json +++ b/package.json @@ -12,19 +12,13 @@ "types", "eikjson.d.ts" ], - "tap": { - "exclude": [ - "test/**/*.d.ts", - "test/fixtures/**" - ] - }, "scripts": { - "clean": "rimraf .tap node_modules types", + "clean": "node -e \"['.tap', 'node_modules', 'types'].forEach(d => require('fs').rmSync(d, {recursive: true, force: true}))\"", "lint": "eslint .", "lint:fix": "eslint --fix .", "schema:types": "json2ts lib/schemas/eikjson.schema.json > eikjson.d.ts", "schema:outdated": "npm run schema:types && git diff --exit-code HEAD:eikjson.d.ts eikjson.d.ts", - "test": "tap --disable-coverage --allow-empty-coverage", + "test": "node --test 'test/**/*.test.js'", "types": "run-s types:module types:test", "types:module": "tsc", "types:test": "tsc --project tsconfig.test.json" @@ -54,6 +48,7 @@ "@eik/semantic-release-config": "1.0.17", "@eik/typescript-config": "1.0.2", "@eik/eslint-config": "2.0.6", + "@types/node": "25.0.1", "@semantic-release/changelog": "6.0.3", "@semantic-release/git": "10.0.1", "@types/is-glob": "4.0.4", @@ -65,10 +60,8 @@ "json-schema-to-typescript": "15.0.4", "npm-run-all2": "9.0.1", "prettier": "3.8.3", - "rimraf": "6.1.3", "semantic-release": "25.0.3", "stoppable": "1.1.0", - "tap": "21.7.4", "typescript": "6.0.3" } } diff --git a/test/classes/eik-config/cwd.test.js b/test/classes/eik-config/cwd.test.js index 0dd8abc5..4f71cd32 100644 --- a/test/classes/eik-config/cwd.test.js +++ b/test/classes/eik-config/cwd.test.js @@ -1,4 +1,5 @@ -import { test } from "tap"; +import { test } from "node:test"; +import assert from "node:assert/strict"; import EikConfig from "../../../lib/classes/eik-config.js"; const validEikConfig = { @@ -8,27 +9,29 @@ const validEikConfig = { version: "0.0.0", }; -test("EikConfig: .cwd set to /some/path", (t) => { +test("EikConfig: .cwd set to /some/path", () => { const config = new EikConfig(validEikConfig, [], "/some/path"); - t.equal(config.cwd, "/some/path", "should equal the given cwd"); - t.end(); + assert.strictEqual(config.cwd, "/some/path", "should equal the given cwd"); }); -test("EikConfig: .cwd set to /some/path/", (t) => { +test("EikConfig: .cwd set to /some/path/", () => { const config = new EikConfig(validEikConfig, [], "/some/path/"); - t.equal(config.cwd, "/some/path", "should normalize the given cwd"); - t.end(); + assert.strictEqual( + config.cwd, + "/some/path", + "should normalize the given cwd", + ); }); -test("EikConfig: .cwd set to invalid relative path some/path", (t) => { +test("EikConfig: .cwd set to invalid relative path some/path", () => { try { new EikConfig(validEikConfig, [], "some/path"); } catch (err) { - t.match( - err instanceof Error ? err.message : String(err), - '"configRootDir" must be an absolute path:', + assert.ok( + (err instanceof Error ? err.message : String(err)).includes( + '"configRootDir" must be an absolute path:', + ), "should throw expected error with message", ); } - t.end(); }); diff --git a/test/classes/eik-config/map.test.js b/test/classes/eik-config/map.test.js index 7471e98a..2092e875 100644 --- a/test/classes/eik-config/map.test.js +++ b/test/classes/eik-config/map.test.js @@ -1,4 +1,5 @@ -import { test } from "tap"; +import { test } from "node:test"; +import assert from "node:assert/strict"; import EikConfig from "../../../lib/classes/eik-config.js"; const validEikConfig = { @@ -8,24 +9,26 @@ const validEikConfig = { version: "0.0.0", }; -test("EikConfig: .map: set to string http://map", (t) => { +test("EikConfig: .map: set to string http://map", () => { const config = new EikConfig({ ...validEikConfig, "import-map": "http://map", }); - t.same(config.map, ["http://map"], "should be wrapped into an array"); - t.end(); + assert.deepStrictEqual( + config.map, + ["http://map"], + "should be wrapped into an array", + ); }); -test("EikConfig: .map: set to an array with two values", (t) => { +test("EikConfig: .map: set to an array with two values", () => { const config = new EikConfig({ ...validEikConfig, "import-map": ["http://map", "http://map"], }); - t.same( + assert.deepStrictEqual( config.map, ["http://map", "http://map"], "should remain the same as input", ); - t.end(); }); diff --git a/test/classes/eik-config/mappings.test.js b/test/classes/eik-config/mappings.test.js index fd2cc86b..bccc1adc 100644 --- a/test/classes/eik-config/mappings.test.js +++ b/test/classes/eik-config/mappings.test.js @@ -1,4 +1,5 @@ -import { test } from "tap"; +import { test } from "node:test"; +import assert from "node:assert/strict"; import { join, dirname } from "node:path"; import { fileURLToPath } from "node:url"; import FileMapping from "../../../lib/classes/file-mapping.js"; @@ -19,7 +20,7 @@ const validEikConfig = { const baseDir = join(__dirname, "../../fixtures"); -test("mappings - directory given", async (t) => { +test("mappings - directory given", async () => { const config = new EikConfig( { ...validEikConfig, @@ -30,32 +31,41 @@ test("mappings - directory given", async (t) => { ); const mappings = await config.mappings(); - t.equal(mappings.length, 2); - t.ok(mappings[0] instanceof FileMapping); - t.ok(mappings[0].source instanceof LocalFileLocation); - t.ok(mappings[0].destination instanceof RemoteFileLocation); - t.equal(mappings[0].source.relative, "client.js"); - t.match(mappings[0].source.basePath, "test/fixtures/folder"); - t.notMatch(mappings[0].source.basePath, "client.js"); - t.match(mappings[0].source.absolute, "test/fixtures/folder/client.js"); - t.equal(mappings[0].destination.packagePathname, "/pkg/pizza/0.0.0"); - t.equal(mappings[0].destination.filePathname, "/client.js"); - t.equal( + assert.strictEqual(mappings.length, 2); + assert.ok(mappings[0] instanceof FileMapping); + assert.ok(mappings[0].source instanceof LocalFileLocation); + assert.ok(mappings[0].destination instanceof RemoteFileLocation); + assert.strictEqual(mappings[0].source.relative, "client.js"); + assert.ok(mappings[0].source.basePath.includes("test/fixtures/folder")); + assert.ok(!mappings[0].source.basePath.includes("client.js")); + assert.ok( + mappings[0].source.absolute.includes("test/fixtures/folder/client.js"), + ); + assert.strictEqual( + mappings[0].destination.packagePathname, + "/pkg/pizza/0.0.0", + ); + assert.strictEqual(mappings[0].destination.filePathname, "/client.js"); + assert.strictEqual( mappings[0].destination.url.href, "http://server/pkg/pizza/0.0.0/client.js", ); - t.equal(mappings[1].source.relative, "styles.css"); - t.match(mappings[1].source.absolute, "test/fixtures/folder/styles.css"); - t.equal(mappings[1].destination.packagePathname, "/pkg/pizza/0.0.0"); - t.equal(mappings[1].destination.filePathname, "/styles.css"); - t.equal( + assert.strictEqual(mappings[1].source.relative, "styles.css"); + assert.ok( + mappings[1].source.absolute.includes("test/fixtures/folder/styles.css"), + ); + assert.strictEqual( + mappings[1].destination.packagePathname, + "/pkg/pizza/0.0.0", + ); + assert.strictEqual(mappings[1].destination.filePathname, "/styles.css"); + assert.strictEqual( mappings[1].destination.url.href, "http://server/pkg/pizza/0.0.0/styles.css", ); - t.end(); }); -test("mappings - directory given - prefixed by ./", async (t) => { +test("mappings - directory given - prefixed by ./", async () => { const config = new EikConfig( { ...validEikConfig, @@ -66,27 +76,36 @@ test("mappings - directory given - prefixed by ./", async (t) => { ); const mappings = await config.mappings(); - t.equal(mappings.length, 2); - t.equal(mappings[0].source.relative, "client.js"); - t.match(mappings[0].source.absolute, "test/fixtures/folder/client.js"); - t.equal(mappings[0].destination.packagePathname, "/pkg/pizza/0.0.0"); - t.equal(mappings[0].destination.filePathname, "/client.js"); - t.equal( + assert.strictEqual(mappings.length, 2); + assert.strictEqual(mappings[0].source.relative, "client.js"); + assert.ok( + mappings[0].source.absolute.includes("test/fixtures/folder/client.js"), + ); + assert.strictEqual( + mappings[0].destination.packagePathname, + "/pkg/pizza/0.0.0", + ); + assert.strictEqual(mappings[0].destination.filePathname, "/client.js"); + assert.strictEqual( mappings[0].destination.url.href, "http://server/pkg/pizza/0.0.0/client.js", ); - t.equal(mappings[1].source.relative, "styles.css"); - t.match(mappings[1].source.absolute, "test/fixtures/folder/styles.css"); - t.equal(mappings[1].destination.packagePathname, "/pkg/pizza/0.0.0"); - t.equal(mappings[1].destination.filePathname, "/styles.css"); - t.equal( + assert.strictEqual(mappings[1].source.relative, "styles.css"); + assert.ok( + mappings[1].source.absolute.includes("test/fixtures/folder/styles.css"), + ); + assert.strictEqual( + mappings[1].destination.packagePathname, + "/pkg/pizza/0.0.0", + ); + assert.strictEqual(mappings[1].destination.filePathname, "/styles.css"); + assert.strictEqual( mappings[1].destination.url.href, "http://server/pkg/pizza/0.0.0/styles.css", ); - t.end(); }); -test("mappings - directory given - trailing /", async (t) => { +test("mappings - directory given - trailing /", async () => { const config = new EikConfig( { ...validEikConfig, @@ -97,27 +116,36 @@ test("mappings - directory given - trailing /", async (t) => { ); const mappings = await config.mappings(); - t.equal(mappings.length, 2); - t.equal(mappings[0].source.relative, "client.js"); - t.match(mappings[0].source.absolute, "test/fixtures/folder/client.js"); - t.equal(mappings[0].destination.packagePathname, "/pkg/pizza/0.0.0"); - t.equal(mappings[0].destination.filePathname, "/client.js"); - t.equal( + assert.strictEqual(mappings.length, 2); + assert.strictEqual(mappings[0].source.relative, "client.js"); + assert.ok( + mappings[0].source.absolute.includes("test/fixtures/folder/client.js"), + ); + assert.strictEqual( + mappings[0].destination.packagePathname, + "/pkg/pizza/0.0.0", + ); + assert.strictEqual(mappings[0].destination.filePathname, "/client.js"); + assert.strictEqual( mappings[0].destination.url.href, "http://server/pkg/pizza/0.0.0/client.js", ); - t.equal(mappings[1].source.relative, "styles.css"); - t.match(mappings[1].source.absolute, "test/fixtures/folder/styles.css"); - t.equal(mappings[1].destination.packagePathname, "/pkg/pizza/0.0.0"); - t.equal(mappings[1].destination.filePathname, "/styles.css"); - t.equal( + assert.strictEqual(mappings[1].source.relative, "styles.css"); + assert.ok( + mappings[1].source.absolute.includes("test/fixtures/folder/styles.css"), + ); + assert.strictEqual( + mappings[1].destination.packagePathname, + "/pkg/pizza/0.0.0", + ); + assert.strictEqual(mappings[1].destination.filePathname, "/styles.css"); + assert.strictEqual( mappings[1].destination.url.href, "http://server/pkg/pizza/0.0.0/styles.css", ); - t.end(); }); -test("mappings - directory given - prefixed by ./", async (t) => { +test("mappings - directory given - prefixed by ./ (duplicate)", async () => { const config = new EikConfig( { ...validEikConfig, @@ -128,27 +156,36 @@ test("mappings - directory given - prefixed by ./", async (t) => { ); const mappings = await config.mappings(); - t.equal(mappings.length, 2); - t.equal(mappings[0].source.relative, "client.js"); - t.match(mappings[0].source.absolute, "test/fixtures/folder/client.js"); - t.equal(mappings[0].destination.packagePathname, "/pkg/pizza/0.0.0"); - t.equal(mappings[0].destination.filePathname, "/client.js"); - t.equal( + assert.strictEqual(mappings.length, 2); + assert.strictEqual(mappings[0].source.relative, "client.js"); + assert.ok( + mappings[0].source.absolute.includes("test/fixtures/folder/client.js"), + ); + assert.strictEqual( + mappings[0].destination.packagePathname, + "/pkg/pizza/0.0.0", + ); + assert.strictEqual(mappings[0].destination.filePathname, "/client.js"); + assert.strictEqual( mappings[0].destination.url.href, "http://server/pkg/pizza/0.0.0/client.js", ); - t.equal(mappings[1].source.relative, "styles.css"); - t.match(mappings[1].source.absolute, "test/fixtures/folder/styles.css"); - t.equal(mappings[1].destination.packagePathname, "/pkg/pizza/0.0.0"); - t.equal(mappings[1].destination.filePathname, "/styles.css"); - t.equal( + assert.strictEqual(mappings[1].source.relative, "styles.css"); + assert.ok( + mappings[1].source.absolute.includes("test/fixtures/folder/styles.css"), + ); + assert.strictEqual( + mappings[1].destination.packagePathname, + "/pkg/pizza/0.0.0", + ); + assert.strictEqual(mappings[1].destination.filePathname, "/styles.css"); + assert.strictEqual( mappings[1].destination.url.href, "http://server/pkg/pizza/0.0.0/styles.css", ); - t.end(); }); -test("mappings - recursive glob given", async (t) => { +test("mappings - recursive glob given", async () => { const config = new EikConfig( { ...validEikConfig, @@ -159,27 +196,36 @@ test("mappings - recursive glob given", async (t) => { ); const mappings = await config.mappings(); - t.equal(mappings.length, 2); - t.equal(mappings[0].source.relative, "client.js"); - t.match(mappings[0].source.absolute, "test/fixtures/folder/client.js"); - t.equal(mappings[0].destination.packagePathname, "/pkg/pizza/0.0.0"); - t.equal(mappings[0].destination.filePathname, "/client.js"); - t.equal( + assert.strictEqual(mappings.length, 2); + assert.strictEqual(mappings[0].source.relative, "client.js"); + assert.ok( + mappings[0].source.absolute.includes("test/fixtures/folder/client.js"), + ); + assert.strictEqual( + mappings[0].destination.packagePathname, + "/pkg/pizza/0.0.0", + ); + assert.strictEqual(mappings[0].destination.filePathname, "/client.js"); + assert.strictEqual( mappings[0].destination.url.href, "http://server/pkg/pizza/0.0.0/client.js", ); - t.equal(mappings[1].source.relative, "styles.css"); - t.match(mappings[1].source.absolute, "test/fixtures/folder/styles.css"); - t.equal(mappings[1].destination.packagePathname, "/pkg/pizza/0.0.0"); - t.equal(mappings[1].destination.filePathname, "/styles.css"); - t.equal( + assert.strictEqual(mappings[1].source.relative, "styles.css"); + assert.ok( + mappings[1].source.absolute.includes("test/fixtures/folder/styles.css"), + ); + assert.strictEqual( + mappings[1].destination.packagePathname, + "/pkg/pizza/0.0.0", + ); + assert.strictEqual(mappings[1].destination.filePathname, "/styles.css"); + assert.strictEqual( mappings[1].destination.url.href, "http://server/pkg/pizza/0.0.0/styles.css", ); - t.end(); }); -test("mappings - file given", async (t) => { +test("mappings - file given", async () => { const config = new EikConfig( { ...validEikConfig, @@ -190,19 +236,23 @@ test("mappings - file given", async (t) => { ); const mappings = await config.mappings(); - t.equal(mappings.length, 1); - t.equal(mappings[0].source.relative, "client.js"); - t.match(mappings[0].source.absolute, "test/fixtures/folder/client.js"); - t.equal(mappings[0].destination.packagePathname, "/pkg/pizza/0.0.0"); - t.equal(mappings[0].destination.filePathname, "/client.js"); - t.equal( + assert.strictEqual(mappings.length, 1); + assert.strictEqual(mappings[0].source.relative, "client.js"); + assert.ok( + mappings[0].source.absolute.includes("test/fixtures/folder/client.js"), + ); + assert.strictEqual( + mappings[0].destination.packagePathname, + "/pkg/pizza/0.0.0", + ); + assert.strictEqual(mappings[0].destination.filePathname, "/client.js"); + assert.strictEqual( mappings[0].destination.url.href, "http://server/pkg/pizza/0.0.0/client.js", ); - t.end(); }); -test("mappings - file given via glob", async (t) => { +test("mappings - file given via glob", async () => { const config = new EikConfig( { ...validEikConfig, @@ -213,19 +263,23 @@ test("mappings - file given via glob", async (t) => { ); const mappings = await config.mappings(); - t.equal(mappings.length, 1); - t.equal(mappings[0].source.relative, "client.js"); - t.match(mappings[0].source.absolute, "test/fixtures/folder/client.js"); - t.equal(mappings[0].destination.packagePathname, "/pkg/pizza/0.0.0"); - t.equal(mappings[0].destination.filePathname, "/client.js"); - t.equal( + assert.strictEqual(mappings.length, 1); + assert.strictEqual(mappings[0].source.relative, "client.js"); + assert.ok( + mappings[0].source.absolute.includes("test/fixtures/folder/client.js"), + ); + assert.strictEqual( + mappings[0].destination.packagePathname, + "/pkg/pizza/0.0.0", + ); + assert.strictEqual(mappings[0].destination.filePathname, "/client.js"); + assert.strictEqual( mappings[0].destination.url.href, "http://server/pkg/pizza/0.0.0/client.js", ); - t.end(); }); -test("mappings - files given via glob - nested directories", async (t) => { +test("mappings - files given via glob - nested directories", async () => { const config = new EikConfig( { ...validEikConfig, @@ -236,18 +290,22 @@ test("mappings - files given via glob - nested directories", async (t) => { ); const mappings = await config.mappings(); - t.equal(mappings.length, 3); - t.equal(mappings[0].source.relative, "client-with-bare-imports.js"); - t.equal(mappings[1].source.relative, "client.js"); - t.equal(mappings[2].source.relative, "folder/client.js"); - t.equal(mappings[0].destination.filePathname, "/client-with-bare-imports.js"); - t.equal(mappings[1].destination.filePathname, "/client.js"); - t.equal(mappings[2].destination.filePathname, "/folder/client.js"); - - t.end(); + assert.strictEqual(mappings.length, 3); + assert.strictEqual( + mappings[0].source.relative, + "client-with-bare-imports.js", + ); + assert.strictEqual(mappings[1].source.relative, "client.js"); + assert.strictEqual(mappings[2].source.relative, "folder/client.js"); + assert.strictEqual( + mappings[0].destination.filePathname, + "/client-with-bare-imports.js", + ); + assert.strictEqual(mappings[1].destination.filePathname, "/client.js"); + assert.strictEqual(mappings[2].destination.filePathname, "/folder/client.js"); }); -test("mappings - files is an object - remaps name of file", async (t) => { +test("mappings - files is an object - remaps name of file", async () => { const config = new EikConfig( { ...validEikConfig, @@ -260,20 +318,23 @@ test("mappings - files is an object - remaps name of file", async (t) => { ); const mappings = await config.mappings(); - t.equal(mappings.length, 1); - t.equal(mappings[0].source.relative, "client.js"); - t.match(mappings[0].source.absolute, "test/fixtures/folder/client.js"); - t.equal(mappings[0].destination.packagePathname, "/pkg/pizza/0.0.0"); - t.equal(mappings[0].destination.filePathname, "/script.js"); - t.equal( + assert.strictEqual(mappings.length, 1); + assert.strictEqual(mappings[0].source.relative, "client.js"); + assert.ok( + mappings[0].source.absolute.includes("test/fixtures/folder/client.js"), + ); + assert.strictEqual( + mappings[0].destination.packagePathname, + "/pkg/pizza/0.0.0", + ); + assert.strictEqual(mappings[0].destination.filePathname, "/script.js"); + assert.strictEqual( mappings[0].destination.url.href, "http://server/pkg/pizza/0.0.0/script.js", ); - - t.end(); }); -test("mappings - files is an object - remaps name of file - absolute path to file given", async (t) => { +test("mappings - files is an object - remaps name of file - absolute path to file given", async () => { const config = new EikConfig( { ...validEikConfig, @@ -286,20 +347,23 @@ test("mappings - files is an object - remaps name of file - absolute path to fil ); const mappings = await config.mappings(); - t.equal(mappings.length, 1); - t.equal(mappings[0].source.relative, "client.js"); - t.match(mappings[0].source.absolute, "test/fixtures/folder/client.js"); - t.equal(mappings[0].destination.packagePathname, "/pkg/pizza/0.0.0"); - t.equal(mappings[0].destination.filePathname, "/script.js"); - t.equal( + assert.strictEqual(mappings.length, 1); + assert.strictEqual(mappings[0].source.relative, "client.js"); + assert.ok( + mappings[0].source.absolute.includes("test/fixtures/folder/client.js"), + ); + assert.strictEqual( + mappings[0].destination.packagePathname, + "/pkg/pizza/0.0.0", + ); + assert.strictEqual(mappings[0].destination.filePathname, "/script.js"); + assert.strictEqual( mappings[0].destination.url.href, "http://server/pkg/pizza/0.0.0/script.js", ); - - t.end(); }); -test("mappings - files is an object - mapped to folder - absolute path to folder given", async (t) => { +test("mappings - files is an object - mapped to folder - absolute path to folder given", async () => { const config = new EikConfig( { ...validEikConfig, @@ -312,28 +376,39 @@ test("mappings - files is an object - mapped to folder - absolute path to folder ); const mappings = await config.mappings(); - t.equal(mappings.length, 2); - t.equal(mappings[0].source.relative, "client.js"); - t.match(mappings[0].source.absolute, "test/fixtures/folder/client.js"); - t.equal(mappings[0].destination.packagePathname, "/pkg/pizza/0.0.0"); - t.equal(mappings[0].destination.filePathname, "/folder/client.js"); - t.equal( + assert.strictEqual(mappings.length, 2); + assert.strictEqual(mappings[0].source.relative, "client.js"); + assert.ok( + mappings[0].source.absolute.includes("test/fixtures/folder/client.js"), + ); + assert.strictEqual( + mappings[0].destination.packagePathname, + "/pkg/pizza/0.0.0", + ); + assert.strictEqual(mappings[0].destination.filePathname, "/folder/client.js"); + assert.strictEqual( mappings[0].destination.url.href, "http://server/pkg/pizza/0.0.0/folder/client.js", ); - t.equal(mappings[1].source.relative, "styles.css"); - t.match(mappings[1].source.absolute, "test/fixtures/folder/styles.css"); - t.equal(mappings[1].destination.packagePathname, "/pkg/pizza/0.0.0"); - t.equal(mappings[1].destination.filePathname, "/folder/styles.css"); - t.equal( + assert.strictEqual(mappings[1].source.relative, "styles.css"); + assert.ok( + mappings[1].source.absolute.includes("test/fixtures/folder/styles.css"), + ); + assert.strictEqual( + mappings[1].destination.packagePathname, + "/pkg/pizza/0.0.0", + ); + assert.strictEqual( + mappings[1].destination.filePathname, + "/folder/styles.css", + ); + assert.strictEqual( mappings[1].destination.url.href, "http://server/pkg/pizza/0.0.0/folder/styles.css", ); - - t.end(); }); -test("mappings - files is an object - mapped to folder - relative path to folder given", async (t) => { +test("mappings - files is an object - mapped to folder - relative path to folder given", async () => { const config = new EikConfig( { ...validEikConfig, @@ -346,28 +421,39 @@ test("mappings - files is an object - mapped to folder - relative path to folder ); const mappings = await config.mappings(); - t.equal(mappings.length, 2); - t.equal(mappings[0].source.relative, "client.js"); - t.match(mappings[0].source.absolute, "test/fixtures/folder/client.js"); - t.equal(mappings[0].destination.packagePathname, "/pkg/pizza/0.0.0"); - t.equal(mappings[0].destination.filePathname, "/folder/client.js"); - t.equal( + assert.strictEqual(mappings.length, 2); + assert.strictEqual(mappings[0].source.relative, "client.js"); + assert.ok( + mappings[0].source.absolute.includes("test/fixtures/folder/client.js"), + ); + assert.strictEqual( + mappings[0].destination.packagePathname, + "/pkg/pizza/0.0.0", + ); + assert.strictEqual(mappings[0].destination.filePathname, "/folder/client.js"); + assert.strictEqual( mappings[0].destination.url.href, "http://server/pkg/pizza/0.0.0/folder/client.js", ); - t.equal(mappings[1].source.relative, "styles.css"); - t.match(mappings[1].source.absolute, "test/fixtures/folder/styles.css"); - t.equal(mappings[1].destination.packagePathname, "/pkg/pizza/0.0.0"); - t.equal(mappings[1].destination.filePathname, "/folder/styles.css"); - t.equal( + assert.strictEqual(mappings[1].source.relative, "styles.css"); + assert.ok( + mappings[1].source.absolute.includes("test/fixtures/folder/styles.css"), + ); + assert.strictEqual( + mappings[1].destination.packagePathname, + "/pkg/pizza/0.0.0", + ); + assert.strictEqual( + mappings[1].destination.filePathname, + "/folder/styles.css", + ); + assert.strictEqual( mappings[1].destination.url.href, "http://server/pkg/pizza/0.0.0/folder/styles.css", ); - - t.end(); }); -test("mappings - files is an object - mapped to folder - relative path to folder given - no leading . in path", async (t) => { +test("mappings - files is an object - mapped to folder - relative path to folder given - no leading . in path", async () => { const config = new EikConfig( { ...validEikConfig, @@ -380,28 +466,39 @@ test("mappings - files is an object - mapped to folder - relative path to folder ); const mappings = await config.mappings(); - t.equal(mappings.length, 2); - t.equal(mappings[0].source.relative, "client.js"); - t.match(mappings[0].source.absolute, "test/fixtures/folder/client.js"); - t.equal(mappings[0].destination.packagePathname, "/pkg/pizza/0.0.0"); - t.equal(mappings[0].destination.filePathname, "/folder/client.js"); - t.equal( + assert.strictEqual(mappings.length, 2); + assert.strictEqual(mappings[0].source.relative, "client.js"); + assert.ok( + mappings[0].source.absolute.includes("test/fixtures/folder/client.js"), + ); + assert.strictEqual( + mappings[0].destination.packagePathname, + "/pkg/pizza/0.0.0", + ); + assert.strictEqual(mappings[0].destination.filePathname, "/folder/client.js"); + assert.strictEqual( mappings[0].destination.url.href, "http://server/pkg/pizza/0.0.0/folder/client.js", ); - t.equal(mappings[1].source.relative, "styles.css"); - t.match(mappings[1].source.absolute, "test/fixtures/folder/styles.css"); - t.equal(mappings[1].destination.packagePathname, "/pkg/pizza/0.0.0"); - t.equal(mappings[1].destination.filePathname, "/folder/styles.css"); - t.equal( + assert.strictEqual(mappings[1].source.relative, "styles.css"); + assert.ok( + mappings[1].source.absolute.includes("test/fixtures/folder/styles.css"), + ); + assert.strictEqual( + mappings[1].destination.packagePathname, + "/pkg/pizza/0.0.0", + ); + assert.strictEqual( + mappings[1].destination.filePathname, + "/folder/styles.css", + ); + assert.strictEqual( mappings[1].destination.url.href, "http://server/pkg/pizza/0.0.0/folder/styles.css", ); - - t.end(); }); -test("mappings - files is an object - mapped to folder glob", async (t) => { +test("mappings - files is an object - mapped to folder glob", async () => { const config = new EikConfig( { ...validEikConfig, @@ -414,28 +511,39 @@ test("mappings - files is an object - mapped to folder glob", async (t) => { ); const mappings = await config.mappings(); - t.equal(mappings.length, 2); - t.equal(mappings[0].source.relative, "client.js"); - t.match(mappings[0].source.absolute, "test/fixtures/folder/client.js"); - t.equal(mappings[0].destination.packagePathname, "/pkg/pizza/0.0.0"); - t.equal(mappings[0].destination.filePathname, "/folder/client.js"); - t.equal( + assert.strictEqual(mappings.length, 2); + assert.strictEqual(mappings[0].source.relative, "client.js"); + assert.ok( + mappings[0].source.absolute.includes("test/fixtures/folder/client.js"), + ); + assert.strictEqual( + mappings[0].destination.packagePathname, + "/pkg/pizza/0.0.0", + ); + assert.strictEqual(mappings[0].destination.filePathname, "/folder/client.js"); + assert.strictEqual( mappings[0].destination.url.href, "http://server/pkg/pizza/0.0.0/folder/client.js", ); - t.equal(mappings[1].source.relative, "styles.css"); - t.match(mappings[1].source.absolute, "test/fixtures/folder/styles.css"); - t.equal(mappings[1].destination.packagePathname, "/pkg/pizza/0.0.0"); - t.equal(mappings[1].destination.filePathname, "/folder/styles.css"); - t.equal( + assert.strictEqual(mappings[1].source.relative, "styles.css"); + assert.ok( + mappings[1].source.absolute.includes("test/fixtures/folder/styles.css"), + ); + assert.strictEqual( + mappings[1].destination.packagePathname, + "/pkg/pizza/0.0.0", + ); + assert.strictEqual( + mappings[1].destination.filePathname, + "/folder/styles.css", + ); + assert.strictEqual( mappings[1].destination.url.href, "http://server/pkg/pizza/0.0.0/folder/styles.css", ); - - t.end(); }); -test("mappings - files is an object - mapped to folder glob - no folder recursion", async (t) => { +test("mappings - files is an object - mapped to folder glob - no folder recursion", async () => { const config = new EikConfig( { ...validEikConfig, @@ -448,11 +556,10 @@ test("mappings - files is an object - mapped to folder glob - no folder recursio ); const mappings = await config.mappings(); - t.equal(mappings.length, 5); - t.end(); + assert.strictEqual(mappings.length, 5); }); -test("mappings - files is an object - mapped to nested folder", async (t) => { +test("mappings - files is an object - mapped to nested folder", async () => { const config = new EikConfig( { ...validEikConfig, @@ -465,28 +572,42 @@ test("mappings - files is an object - mapped to nested folder", async (t) => { ); const mappings = await config.mappings(); - t.equal(mappings.length, 2); - t.equal(mappings[0].source.relative, "client.js"); - t.match(mappings[0].source.absolute, "test/fixtures/folder/client.js"); - t.equal(mappings[0].destination.packagePathname, "/pkg/pizza/0.0.0"); - t.equal(mappings[0].destination.filePathname, "/path/to/folder/client.js"); - t.equal( + assert.strictEqual(mappings.length, 2); + assert.strictEqual(mappings[0].source.relative, "client.js"); + assert.ok( + mappings[0].source.absolute.includes("test/fixtures/folder/client.js"), + ); + assert.strictEqual( + mappings[0].destination.packagePathname, + "/pkg/pizza/0.0.0", + ); + assert.strictEqual( + mappings[0].destination.filePathname, + "/path/to/folder/client.js", + ); + assert.strictEqual( mappings[0].destination.url.href, "http://server/pkg/pizza/0.0.0/path/to/folder/client.js", ); - t.equal(mappings[1].source.relative, "styles.css"); - t.match(mappings[1].source.absolute, "test/fixtures/folder/styles.css"); - t.equal(mappings[1].destination.packagePathname, "/pkg/pizza/0.0.0"); - t.equal(mappings[1].destination.filePathname, "/path/to/folder/styles.css"); - t.equal( + assert.strictEqual(mappings[1].source.relative, "styles.css"); + assert.ok( + mappings[1].source.absolute.includes("test/fixtures/folder/styles.css"), + ); + assert.strictEqual( + mappings[1].destination.packagePathname, + "/pkg/pizza/0.0.0", + ); + assert.strictEqual( + mappings[1].destination.filePathname, + "/path/to/folder/styles.css", + ); + assert.strictEqual( mappings[1].destination.url.href, "http://server/pkg/pizza/0.0.0/path/to/folder/styles.css", ); - - t.end(); }); -test("mappings - files is an object - mapped to folder - absolute path to folder given - non matching cwd", async (t) => { +test("mappings - files is an object - mapped to folder - absolute path to folder given - non matching cwd", async () => { const config = new EikConfig( { ...validEikConfig, @@ -499,10 +620,13 @@ test("mappings - files is an object - mapped to folder - absolute path to folder ); const mappings = await config.mappings(); - t.equal(mappings[0].source.relative, "client.js"); - t.match(mappings[0].source.absolute, "test/fixtures/folder/client.js"); - t.equal(mappings[0].destination.packagePathname, "/pkg/pizza/0.0.0"); - t.equal(mappings[0].destination.filePathname, "/folder/client.js"); - - t.end(); + assert.strictEqual(mappings[0].source.relative, "client.js"); + assert.ok( + mappings[0].source.absolute.includes("test/fixtures/folder/client.js"), + ); + assert.strictEqual( + mappings[0].destination.packagePathname, + "/pkg/pizza/0.0.0", + ); + assert.strictEqual(mappings[0].destination.filePathname, "/folder/client.js"); }); diff --git a/test/classes/eik-config/out.test.js b/test/classes/eik-config/out.test.js index 96344039..505bfb47 100644 --- a/test/classes/eik-config/out.test.js +++ b/test/classes/eik-config/out.test.js @@ -1,4 +1,5 @@ -import { test } from "tap"; +import { test } from "node:test"; +import assert from "node:assert/strict"; import EikConfig from "../../../lib/classes/eik-config.js"; const validEikConfig = { @@ -8,13 +9,16 @@ const validEikConfig = { version: "0.0.0", }; -test("EikConfig: .out: no value given", (t) => { - t.equal(new EikConfig(validEikConfig).out, ".eik", "should default to .eik"); - t.end(); +test("EikConfig: .out: no value given", () => { + assert.strictEqual( + new EikConfig(validEikConfig).out, + ".eik", + "should default to .eik", + ); }); -test("EikConfig: .out: value pizza-box given", (t) => { - t.equal( +test("EikConfig: .out: value pizza-box given", () => { + assert.strictEqual( new EikConfig({ ...validEikConfig, out: "pizza-box", @@ -22,11 +26,10 @@ test("EikConfig: .out: value pizza-box given", (t) => { "pizza-box", "should be set to ./pizza-box", ); - t.end(); }); -test("EikConfig: .out: value pizza-box/ given", (t) => { - t.equal( +test("EikConfig: .out: value pizza-box/ given", () => { + assert.strictEqual( new EikConfig({ ...validEikConfig, out: "pizza-box/", @@ -34,11 +37,10 @@ test("EikConfig: .out: value pizza-box/ given", (t) => { "pizza-box", "should have trailing slash removed", ); - t.end(); }); -test("EikConfig: .out: value ./pizza-box given", (t) => { - t.equal( +test("EikConfig: .out: value ./pizza-box given", () => { + assert.strictEqual( new EikConfig({ ...validEikConfig, out: "./pizza-box", @@ -46,5 +48,4 @@ test("EikConfig: .out: value ./pizza-box given", (t) => { "pizza-box", "should have leading ./ slash removed", ); - t.end(); }); diff --git a/test/classes/eik-config/server.test.js b/test/classes/eik-config/server.test.js index 86da81b1..6638d0ab 100644 --- a/test/classes/eik-config/server.test.js +++ b/test/classes/eik-config/server.test.js @@ -1,4 +1,5 @@ -import { test } from "tap"; +import { test } from "node:test"; +import assert from "node:assert/strict"; import EikConfig from "../../../lib/classes/eik-config.js"; const validEikConfig = { @@ -8,25 +9,23 @@ const validEikConfig = { version: "0.0.0", }; -test("EikConfig: .server: accessing property", (t) => { +test("EikConfig: .server: accessing property", () => { const config = new EikConfig(validEikConfig); - t.equal( + assert.strictEqual( config.server, "http://server", "should equal value given to constructor", ); - t.end(); }); -test("EikConfig: .server: accessing property: no config given", (t) => { +test("EikConfig: .server: accessing property: no config given", () => { const config = new EikConfig(null, [ ["http://bakery", "muffins"], ["http://server", "kumara pie"], ]); - t.equal( + assert.strictEqual( config.server, "http://bakery", "should fallback to value given to tokens", ); - t.end(); }); diff --git a/test/classes/eik-config/toJSON.test.js b/test/classes/eik-config/toJSON.test.js index e6e7f93a..5f476161 100644 --- a/test/classes/eik-config/toJSON.test.js +++ b/test/classes/eik-config/toJSON.test.js @@ -1,4 +1,5 @@ -import { test } from "tap"; +import { test } from "node:test"; +import assert from "node:assert/strict"; import EikConfig from "../../../lib/classes/eik-config.js"; const validEikConfig = { @@ -8,12 +9,11 @@ const validEikConfig = { version: "0.0.0", }; -test("EikConfig: .toJSON", (t) => { +test("EikConfig: .toJSON", () => { const config = new EikConfig(validEikConfig); - t.same( + assert.deepStrictEqual( config.toJSON(), validEikConfig, "should serialize config given to constructor", ); - t.end(); }); diff --git a/test/classes/eik-config/token.test.js b/test/classes/eik-config/token.test.js index 17c2e720..23421d26 100644 --- a/test/classes/eik-config/token.test.js +++ b/test/classes/eik-config/token.test.js @@ -1,4 +1,5 @@ -import { test } from "tap"; +import { test } from "node:test"; +import assert from "node:assert/strict"; import EikConfig from "../../../lib/classes/eik-config.js"; const validEikConfig = { @@ -8,40 +9,40 @@ const validEikConfig = { version: "0.0.0", }; -test("EikConfig: .token: no token configured", (t) => { +test("EikConfig: .token: no token configured", () => { const config = new EikConfig(validEikConfig, null); - t.same(config.token, null); - t.end(); + assert.ok(config.token == null); }); -test("EikConfig: .token: single token present: config given", (t) => { +test("EikConfig: .token: single token present: config given", () => { const config = new EikConfig(validEikConfig, [["http://server", "muffins"]]); - t.equal( + assert.strictEqual( config.server, "http://server", "server should be provided from config", ); - t.equal(config.token, "muffins", "token should match given token"); - t.end(); + assert.strictEqual(config.token, "muffins", "token should match given token"); }); -test("EikConfig: .token: single token present", (t) => { +test("EikConfig: .token: single token present", () => { const config = new EikConfig(null, [["http://server", "muffins"]]); - t.equal( + assert.strictEqual( config.server, "http://server", "server should be provided from tokens", ); - t.equal(config.token, "muffins", "token should match given token"); - t.end(); + assert.strictEqual(config.token, "muffins", "token should match given token"); }); -test("EikConfig: .token: multiple tokens present", (t) => { +test("EikConfig: .token: multiple tokens present", () => { const config = new EikConfig(null, [ ["http://server", "muffins"], ["http://server2", "cupcakes"], ]); - t.equal(config.server, "http://server"); - t.equal(config.token, "muffins", "token should match first given token"); - t.end(); + assert.strictEqual(config.server, "http://server"); + assert.strictEqual( + config.token, + "muffins", + "token should match first given token", + ); }); diff --git a/test/classes/eik-config/type.test.js b/test/classes/eik-config/type.test.js index 42b49bbf..bd1aa3e4 100644 --- a/test/classes/eik-config/type.test.js +++ b/test/classes/eik-config/type.test.js @@ -1,4 +1,5 @@ -import { test } from "tap"; +import { test } from "node:test"; +import assert from "node:assert/strict"; import EikConfig from "../../../lib/classes/eik-config.js"; const validEikConfig = { @@ -9,15 +10,13 @@ const validEikConfig = { type: "npm", }; -test("EikConfig: .type: no value given", (t) => { +test("EikConfig: .type: no value given", () => { const config = new EikConfig(null); - t.equal(config.type, "package", 'should default to "package"'); - t.end(); + assert.strictEqual(config.type, "package", 'should default to "package"'); }); -test("EikConfig: .type: value given", (t) => { +test("EikConfig: .type: value given", () => { // @ts-ignore const config = new EikConfig(validEikConfig); - t.equal(config.type, "npm", "should overwrite default value"); - t.end(); + assert.strictEqual(config.type, "npm", "should overwrite default value"); }); diff --git a/test/classes/eik-config/validate.test.js b/test/classes/eik-config/validate.test.js index 0effd8cc..711ed5c0 100644 --- a/test/classes/eik-config/validate.test.js +++ b/test/classes/eik-config/validate.test.js @@ -1,4 +1,5 @@ -import { test } from "tap"; +import { test } from "node:test"; +import assert from "node:assert/strict"; import EikConfig from "../../../lib/classes/eik-config.js"; const validEikConfig = { @@ -8,24 +9,22 @@ const validEikConfig = { version: "0.0.0", }; -test("EikConfig: .validate(): no config given", (t) => { - t.plan(1); +test("EikConfig: .validate(): no config given", () => { try { const config = new EikConfig(null); config.validate(); } catch (err) { - t.match( - err instanceof Error ? err.message : String(err), - "Invalid eik.json schema", + assert.ok( + (err instanceof Error ? err.message : String(err)).includes( + "Invalid eik.json schema", + ), "should throw for invalid config", ); } - t.end(); }); -test("EikConfig: .validate(): no config given", (t) => { +test("EikConfig: .validate(): no config given", () => { const config = new EikConfig(validEikConfig); config.validate(); - t.ok(true, "should not throw when valid config is given"); - t.end(); + assert.ok(true, "should not throw when valid config is given"); }); diff --git a/test/classes/eik-config/version.test.js b/test/classes/eik-config/version.test.js index 96ef1ad7..8e33f205 100644 --- a/test/classes/eik-config/version.test.js +++ b/test/classes/eik-config/version.test.js @@ -1,4 +1,5 @@ -import { test } from "tap"; +import { test } from "node:test"; +import assert from "node:assert/strict"; import EikConfig from "../../../lib/classes/eik-config.js"; const validEikConfig = { @@ -8,15 +9,13 @@ const validEikConfig = { version: "0.0.0", }; -test("EikConfig: .version: accessing the property", (t) => { +test("EikConfig: .version: accessing the property", () => { const config = new EikConfig(validEikConfig); - t.equal(config.version, "0.0.0", "should return the given value"); - t.end(); + assert.strictEqual(config.version, "0.0.0", "should return the given value"); }); -test("EikConfig: .version: setting the property value", (t) => { +test("EikConfig: .version: setting the property value", () => { const config = new EikConfig(validEikConfig); config.version = "1.0.1"; - t.equal(config.version, "1.0.1", "should return the given value"); - t.end(); + assert.strictEqual(config.version, "1.0.1", "should return the given value"); }); diff --git a/test/classes/local-file-location/absolute.test.js b/test/classes/local-file-location/absolute.test.js index 84c9d357..41e730ba 100644 --- a/test/classes/local-file-location/absolute.test.js +++ b/test/classes/local-file-location/absolute.test.js @@ -1,32 +1,30 @@ -import { test } from "tap"; +import { test } from "node:test"; +import assert from "node:assert/strict"; import LocalFileLocation from "../../../lib/classes/local-file-location.js"; -test("LocalFileLocation: .absolute for ./my/file.json", (t) => { +test("LocalFileLocation: .absolute for ./my/file.json", () => { const subject = new LocalFileLocation("./my/file.json", "/base/path"); - t.equal( + assert.strictEqual( subject.absolute, "/base/path/my/file.json", "should result in a valid absolute path", ); - t.end(); }); -test("LocalFileLocation: .absolute for my/file.json", (t) => { +test("LocalFileLocation: .absolute for my/file.json", () => { const subject = new LocalFileLocation("my/file.json", "/base/path"); - t.equal( + assert.strictEqual( subject.absolute, "/base/path/my/file.json", "should result in a valid absolute path", ); - t.end(); }); -test("LocalFileLocation: .absolute for my/file.json: base path has trailing slash", (t) => { +test("LocalFileLocation: .absolute for my/file.json: base path has trailing slash", () => { const subject = new LocalFileLocation("my/file.json", "/base/path/"); - t.equal( + assert.strictEqual( subject.absolute, "/base/path/my/file.json", "should result in a valid absolute path", ); - t.end(); }); diff --git a/test/classes/local-file-location/contentType.test.js b/test/classes/local-file-location/contentType.test.js index 887ea9b4..74ae8f56 100644 --- a/test/classes/local-file-location/contentType.test.js +++ b/test/classes/local-file-location/contentType.test.js @@ -1,53 +1,53 @@ import { fileURLToPath } from "node:url"; import { dirname } from "node:path"; -import { test } from "tap"; +import { test } from "node:test"; +import assert from "node:assert/strict"; import LocalFileLocation from "../../../lib/classes/local-file-location.js"; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); -test("LocalFileLocation: .contentType for ./my/file.json", (t) => { +test("LocalFileLocation: .contentType for ./my/file.json", () => { const subject = new LocalFileLocation("./my/file.json", __dirname); - t.equal( + assert.strictEqual( subject.contentType, "application/json; charset=utf-8", "should be treated as JSON", ); - t.end(); }); -test("LocalFileLocation: .contentType for ./my/file.js", (t) => { +test("LocalFileLocation: .contentType for ./my/file.js", () => { const subject = new LocalFileLocation("./my/file.js", __dirname); - t.equal( + assert.strictEqual( subject.contentType, "text/javascript; charset=utf-8", "should be treated as JavaScript", ); - t.end(); }); -test("LocalFileLocation: .contentType for file.css", (t) => { +test("LocalFileLocation: .contentType for file.css", () => { const subject = new LocalFileLocation("./my/file.css", __dirname); - t.equal( + assert.strictEqual( subject.contentType, "text/css; charset=utf-8", "should be treated as CSS", ); - t.end(); }); -test("LocalFileLocation: .contentType for file.jpg", (t) => { +test("LocalFileLocation: .contentType for file.jpg", () => { const subject = new LocalFileLocation("./my/file.jpg", __dirname); - t.equal(subject.contentType, "image/jpeg", "should be treated as jpeg image"); - t.end(); + assert.strictEqual( + subject.contentType, + "image/jpeg", + "should be treated as jpeg image", + ); }); -test("LocalFileLocation: .contentType should fallback for unknown file extension", (t) => { +test("LocalFileLocation: .contentType should fallback for unknown file extension", () => { const subject = new LocalFileLocation("./my/file.unknown", __dirname); - t.equal( + assert.strictEqual( subject.contentType, "application/octet-stream", "should be treated as application/octet-stream", ); - t.end(); }); diff --git a/test/classes/local-file-location/extension.test.js b/test/classes/local-file-location/extension.test.js index 22a714ca..884b4016 100644 --- a/test/classes/local-file-location/extension.test.js +++ b/test/classes/local-file-location/extension.test.js @@ -1,25 +1,27 @@ import { fileURLToPath } from "node:url"; import { dirname } from "node:path"; -import { test } from "tap"; +import { test } from "node:test"; +import assert from "node:assert/strict"; import LocalFileLocation from "../../../lib/classes/local-file-location.js"; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); -test("LocalFileLocation: .extension for ./my/file.json", (t) => { +test("LocalFileLocation: .extension for ./my/file.json", () => { const subject = new LocalFileLocation("./my/file.json", __dirname); - t.equal(subject.extension, ".json", "should be treated as JSON"); - t.end(); + assert.strictEqual(subject.extension, ".json", "should be treated as JSON"); }); -test("LocalFileLocation: .extension for ./my/file.js", (t) => { +test("LocalFileLocation: .extension for ./my/file.js", () => { const subject = new LocalFileLocation("./my/file.js", __dirname); - t.equal(subject.extension, ".js", "should be treated as JavaScript"); - t.end(); + assert.strictEqual( + subject.extension, + ".js", + "should be treated as JavaScript", + ); }); -test("LocalFileLocation: .extension for file.css", (t) => { +test("LocalFileLocation: .extension for file.css", () => { const subject = new LocalFileLocation("./my/file.css", __dirname); - t.equal(subject.extension, ".css", "should be treated as CSS"); - t.end(); + assert.strictEqual(subject.extension, ".css", "should be treated as CSS"); }); diff --git a/test/classes/local-file-location/mimeType.test.js b/test/classes/local-file-location/mimeType.test.js index d25d32b1..ecdadcaf 100644 --- a/test/classes/local-file-location/mimeType.test.js +++ b/test/classes/local-file-location/mimeType.test.js @@ -1,45 +1,49 @@ import { fileURLToPath } from "node:url"; import { dirname } from "node:path"; -import { test } from "tap"; +import { test } from "node:test"; +import assert from "node:assert/strict"; import LocalFileLocation from "../../../lib/classes/local-file-location.js"; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); -test("LocalFileLocation: .mimeType for ./my/file.json", (t) => { +test("LocalFileLocation: .mimeType for ./my/file.json", () => { const subject = new LocalFileLocation("./my/file.json", __dirname); - t.equal(subject.mimeType, "application/json", "should be treated as JSON"); - t.end(); + assert.strictEqual( + subject.mimeType, + "application/json", + "should be treated as JSON", + ); }); -test("LocalFileLocation: .mimeType for ./my/file.js", (t) => { +test("LocalFileLocation: .mimeType for ./my/file.js", () => { const subject = new LocalFileLocation("./my/file.js", __dirname); - t.equal( + assert.strictEqual( subject.mimeType, "text/javascript", "should be treated as JavaScript", ); - t.end(); }); -test("LocalFileLocation: .mimeType for file.css", (t) => { +test("LocalFileLocation: .mimeType for file.css", () => { const subject = new LocalFileLocation("./my/file.css", __dirname); - t.equal(subject.mimeType, "text/css", "should be treated as CSS"); - t.end(); + assert.strictEqual(subject.mimeType, "text/css", "should be treated as CSS"); }); -test("LocalFileLocation: .mimeType for file.jpg", (t) => { +test("LocalFileLocation: .mimeType for file.jpg", () => { const subject = new LocalFileLocation("./my/file.jpg", __dirname); - t.equal(subject.mimeType, "image/jpeg", "should be treated as jpeg image"); - t.end(); + assert.strictEqual( + subject.mimeType, + "image/jpeg", + "should be treated as jpeg image", + ); }); -test("LocalFileLocation: .mimeType should fallback for unknown file extension", (t) => { +test("LocalFileLocation: .mimeType should fallback for unknown file extension", () => { const subject = new LocalFileLocation("./my/file.unknown", __dirname); - t.equal( + assert.strictEqual( subject.mimeType, "application/octet-stream", "should be treated as application/octet-stream", ); - t.end(); }); diff --git a/test/classes/read-file.test.js b/test/classes/read-file.test.js index ae464633..ac009bd8 100644 --- a/test/classes/read-file.test.js +++ b/test/classes/read-file.test.js @@ -1,50 +1,53 @@ import { Readable } from "stream"; -import { test } from "tap"; +import { test } from "node:test"; +import assert from "node:assert/strict"; import ReadFile from "../../lib/classes/read-file.js"; -test("ReadFile() - Object type", (t) => { +test("ReadFile() - Object type", () => { const obj = new ReadFile(); - t.equal( + assert.strictEqual( Object.prototype.toString.call(obj), "[object ReadFile]", "should be ReadFile", ); - t.end(); }); -test("ReadFile() - Default property values", (t) => { +test("ReadFile() - Default property values", () => { const obj = new ReadFile(); - t.equal(obj.mimeType, "", ".mimeType should be empty String"); - t.equal(obj.stream, undefined, '.stream should be "undefined"'); - t.equal(obj.etag, "", ".etag should be empty String"); - t.end(); + assert.strictEqual(obj.mimeType, "", ".mimeType should be empty String"); + assert.strictEqual(obj.stream, undefined, '.stream should be "undefined"'); + assert.strictEqual(obj.etag, "", ".etag should be empty String"); }); -test('ReadFile() - Set a value on the "mimeType" argument on the constructor', (t) => { +test('ReadFile() - Set a value on the "mimeType" argument on the constructor', () => { const obj = new ReadFile({ mimeType: "foo" }); - t.equal(obj.mimeType, "foo", ".mimeType should be value set on constructor"); - t.end(); + assert.strictEqual( + obj.mimeType, + "foo", + ".mimeType should be value set on constructor", + ); }); -test('ReadFile() - Set a value on the "etag" argument on the constructor', (t) => { +test('ReadFile() - Set a value on the "etag" argument on the constructor', () => { const obj = new ReadFile({ etag: "foo" }); - t.equal(obj.etag, "foo", ".etag should be value set on constructor"); - t.end(); + assert.strictEqual( + obj.etag, + "foo", + ".etag should be value set on constructor", + ); }); -test("ReadFile() - Set a Readable stream as value on the .stream property", (t) => { +test("ReadFile() - Set a Readable stream as value on the .stream property", () => { const obj = new ReadFile(); obj.stream = new Readable(); - t.ok( + assert.ok( obj.stream instanceof Readable, ".stream should be value set on .stream", ); - t.end(); }); -test("ReadFile() - Set a non Readable stream as value on the .stream property", (t) => { - t.plan(1); - t.throws( +test("ReadFile() - Set a non Readable stream as value on the .stream property", () => { + assert.throws( () => { const obj = new ReadFile(); obj.stream = "foo"; @@ -52,5 +55,4 @@ test("ReadFile() - Set a non Readable stream as value on the .stream property", /Value is not a Readable stream/, "Should throw", ); - t.end(); }); diff --git a/test/classes/resolved-files/iterator.test.js b/test/classes/resolved-files/iterator.test.js index e4026fb2..fa73f088 100644 --- a/test/classes/resolved-files/iterator.test.js +++ b/test/classes/resolved-files/iterator.test.js @@ -1,7 +1,8 @@ -import { test } from "tap"; +import { test } from "node:test"; +import assert from "node:assert/strict"; import ResolvedFiles from "../../../lib/classes/resolved-files.js"; -test("ResolvedFiles: iterator for ./my/file.js", (t) => { +test("ResolvedFiles: iterator for ./my/file.js", () => { // @ts-ignore const subject = new ResolvedFiles(["./my/file.js", "./my/file.css"], { basePath: "/base/path", @@ -9,10 +10,9 @@ test("ResolvedFiles: iterator for ./my/file.js", (t) => { }); const files = [...subject]; - t.equal( + assert.strictEqual( files[0].relative, "./my/file.js", "should result in a valid absolute path", ); - t.end(); }); diff --git a/test/helpers/config-store.test.js b/test/helpers/config-store.test.js index e2374697..c6e1a736 100644 --- a/test/helpers/config-store.test.js +++ b/test/helpers/config-store.test.js @@ -2,7 +2,8 @@ import fs from "node:fs/promises"; import { fileURLToPath } from "node:url"; import { join, dirname, sep } from "node:path"; import os from "node:os"; -import { test } from "tap"; +import { test } from "node:test"; +import assert from "node:assert/strict"; import configStore from "../../lib/helpers/config-store.js"; import EikConfig from "../../lib/classes/eik-config.js"; @@ -37,76 +38,70 @@ const mockPackageJSON = ({ }, }); -test("loads from package.json", (t) => { +test("loads from package.json", () => { const config = configStore.findInDirectory(`${sep}pizza dir`, (path) => { if (path.includes("eik.json") || path.includes(".eikrc")) return null; - t.match(path, `${sep}pizza dir${sep}package.json`); + assert.ok(path.includes(`${sep}pizza dir${sep}package.json`)); return mockPackageJSON({ other: { notIncluded: "fish" }, eik: { "import-map": "http://map" }, }); }); - t.equal(config.name, "magarita"); - t.equal(config.version, "0.0.0"); + assert.strictEqual(config.name, "magarita"); + assert.strictEqual(config.version, "0.0.0"); // @ts-ignore - t.equal(config.notIncluded, undefined); - t.same(config.map, ["http://map"]); - t.end(); + assert.strictEqual(config.notIncluded, undefined); + assert.deepStrictEqual(config.map, ["http://map"]); }); -test("loads from eik.json", (t) => { +test("loads from eik.json", () => { const config = configStore.findInDirectory(`${sep}pizza dir`, (path) => { if (path.includes("package.json") || path.includes(".eikrc")) return null; - t.match(path, `${sep}pizza dir${sep}eik.json`); + assert.ok(path.includes(`${sep}pizza dir${sep}eik.json`)); return mockEikJSON(); }); - t.equal(config.name, "magarita"); - t.end(); + assert.strictEqual(config.name, "magarita"); }); -test("loads eik.json from an exact path", (t) => { +test("loads eik.json from an exact path", () => { const config = configStore.loadFromPath( "/exact/pizza/dir/eik.json", (path) => { if (path.includes("package.json") || path.includes(".eikrc")) return null; - t.match(path, "/exact/pizza/dir/eik.json"); + assert.ok(path.includes("/exact/pizza/dir/eik.json")); return mockEikJSON(); }, ); - t.equal(config.name, "magarita"); - t.end(); + assert.strictEqual(config.name, "magarita"); }); -test("loads from eik.json - invalid config", (t) => { +test("loads from eik.json - invalid config", () => { try { configStore.findInDirectory(`${sep}pizza dir`, (path) => { if (path.includes("package.json") || path.includes(".eikrc")) return null; return {}; }); } catch (err) { - t.match( - `${err}`, - `InvalidConfigError: Eik config object was invalid: 'config.findInDirectory operation failed: Invalid eik.json schema: must have required property 'server'`, + assert.ok( + `${err}`.includes( + `InvalidConfigError: Eik config object was invalid: 'config.findInDirectory operation failed: Invalid eik.json schema: must have required property 'server'`, + ), ); } - t.end(); }); -test("package.json and eik.json not being present", (t) => { - t.plan(1); +test("package.json and eik.json not being present", () => { try { configStore.findInDirectory(`${sep}pizza dir`, () => null); } catch (e) { - t.equal( + assert.strictEqual( e instanceof Error ? e.message : String(e), `No package.json or eik.json file found in: '${sep}pizza dir'`, ); } - t.end(); }); -test("package.json and eik.json both have eik config", (t) => { - t.plan(1); +test("package.json and eik.json both have eik config", () => { const jsonReaderStub = (/** @type {string} */ path) => { if (path.includes("package.json")) return { eik: { pizza: "magarita" } }; return {}; @@ -114,16 +109,14 @@ test("package.json and eik.json both have eik config", (t) => { try { configStore.findInDirectory(`${sep}pizza dir`, jsonReaderStub); } catch (e) { - t.equal( + assert.strictEqual( e instanceof Error ? e.message : String(e), "Eik configuration was defined in both in package.json and eik.json. You must specify one or the other.", ); } - - t.end(); }); -test("name is pulled from package.json if not defined in eik.json", (t) => { +test("name is pulled from package.json if not defined in eik.json", () => { const jsonReaderStub = (/** @type {string} */ path) => { if (path.includes("package.json")) return { @@ -140,29 +133,26 @@ test("name is pulled from package.json if not defined in eik.json", (t) => { return {}; }; const config = configStore.findInDirectory(`${sep}pizza dir`, jsonReaderStub); - t.equal(config.name, "big pizza co"); - t.equal(config.version, "0.0.0"); - t.equal(config.server, "https://test"); - t.same(config.files, { + assert.strictEqual(config.name, "big pizza co"); + assert.strictEqual(config.version, "0.0.0"); + assert.strictEqual(config.server, "https://test"); + assert.deepStrictEqual(config.files, { "/": "./dist/**/*.js", }); - t.end(); }); -test("tokens are present", (t) => { +test("tokens are present", () => { const config = configStore.findInDirectory(`${sep}pizza dir`, (path) => { if (path.includes("eik.json")) return mockEikJSON(); if (path.includes(".eikrc")) return { tokens: [["http://server", "muffins"]] }; return {}; }); - t.equal(config.server, "http://server"); - t.equal(config.token, "muffins"); - t.end(); + assert.strictEqual(config.server, "http://server"); + assert.strictEqual(config.token, "muffins"); }); -test("invalid json error", (t) => { - t.plan(1); +test("invalid json error", () => { const jsonReaderStub = (/** @type {string} */ path) => { if (path.includes(".json")) JSON.parse("not json"); return {}; @@ -171,31 +161,29 @@ test("invalid json error", (t) => { try { configStore.findInDirectory(`${sep}pizza dir`, jsonReaderStub); } catch (e) { - t.match(e instanceof Error ? e.message : String(e), /Unexpected token/); + assert.ok( + (e instanceof Error ? e.message : String(e)).includes("Unexpected token"), + ); } - t.end(); }); -test("no configuration present", (t) => { - t.plan(1); +test("no configuration present", () => { try { configStore.findInDirectory(`${sep}pizza dir`, () => {}); } catch (e) { - t.equal( + assert.strictEqual( e instanceof Error ? e.message : String(e), `No package.json or eik.json file found in: '${sep}pizza dir'`, ); } - t.end(); }); -test("reading without stubbed json", (t) => { +test("reading without stubbed json", () => { const config = configStore.findInDirectory(__dirname); - t.equal(config.name, "my-app"); - t.end(); + assert.strictEqual(config.name, "my-app"); }); -test("saves config to disk", async (t) => { +test("saves config to disk", async () => { const path = await mkdirTempDir(); const config = new EikConfig( { @@ -213,36 +201,33 @@ test("saves config to disk", async (t) => { configStore.persistToDisk(config); const persistedConfig = configStore.findInDirectory(path); - t.equal(persistedConfig.out, "biscuits"); - t.end(); + assert.strictEqual(persistedConfig.out, "biscuits"); }); -test("saves config to disk - invalid config - passed config not a instance of EikConfig", async (t) => { +test("saves config to disk - invalid config - passed config not a instance of EikConfig", async () => { const config = {}; try { // @ts-ignore configStore.persistToDisk(config); } catch (err) { - t.match( - `${err}`, - `InvalidConfigError: Eik config object was invalid: 'config.persistToDisk operation failed: config.validate is not a function'`, + assert.ok( + `${err}`.includes( + `InvalidConfigError: Eik config object was invalid: 'config.persistToDisk operation failed: config.validate is not a function'`, + ), ); } - - t.end(); }); -test("saves config to disk - invalid config", async (t) => { +test("saves config to disk - invalid config", async () => { const config = new EikConfig(null); try { // @ts-ignore configStore.persistToDisk(config); } catch (err) { - t.match( - `${err}`, - `InvalidConfigError: Eik config object was invalid: 'config.persistToDisk operation failed: Invalid eik.json schema: must have required property 'server'`, + assert.ok( + `${err}`.includes( + `InvalidConfigError: Eik config object was invalid: 'config.persistToDisk operation failed: Invalid eik.json schema: must have required property 'server'`, + ), ); } - - t.end(); }); diff --git a/test/helpers/fetch-import-maps.test.js b/test/helpers/fetch-import-maps.test.js index d8d921e1..3fb074fa 100644 --- a/test/helpers/fetch-import-maps.test.js +++ b/test/helpers/fetch-import-maps.test.js @@ -1,5 +1,6 @@ import fastify from "fastify"; -import tap from "tap"; +import { test, before, after } from "node:test"; +import assert from "node:assert/strict"; import { fetchImportMaps } from "../../lib/helpers/fetch-import-maps.js"; const app = fastify({ @@ -48,21 +49,21 @@ app.get("/map/text-response/v1", (request, reply) => { /** @type {string} */ let address; -tap.before(async () => { +before(async () => { address = await app.listen({ host: "0.0.0.0", port: 50255, }); }); -tap.teardown(() => app.close()); +after(() => app.close()); -tap.test("returns the expected maps", async (t) => { +test("returns the expected maps", async () => { const result = await fetchImportMaps([ `${address}/map/lit/v3`, `${address}/map/react/v19`, ]); - t.match(result, [ + assert.deepStrictEqual(result, [ { imports: { lit: "https://assets.example.com/npm/lit/v3/lit.min.js", @@ -76,70 +77,39 @@ tap.test("returns the expected maps", async (t) => { }, }, ]); - t.end(); }); -tap.test("returns an error if an import map could not be found", async (t) => { - try { - await fetchImportMaps([`${address}/map/does-not-exist/v1`]); - t.fail("Expected to throw"); - } catch (e) { - t.match(e instanceof Error ? e.message : String(e), "could not be found"); - t.pass(); - } +test("returns an error if an import map could not be found", async () => { + await assert.rejects( + fetchImportMaps([`${address}/map/does-not-exist/v1`]), + /could not be found/, + ); }); -tap.test("returns an error if server says no", async (t) => { - try { - await fetchImportMaps([`${address}/map/rejected-response/v1`]); - t.fail("Expected to throw"); - } catch (e) { - t.match( - e instanceof Error ? e.message : String(e), - "rejected client request", - ); - t.pass(); - } +test("returns an error if server says no", async () => { + await assert.rejects( + fetchImportMaps([`${address}/map/rejected-response/v1`]), + /rejected client request/, + ); }); -tap.test("returns an error if server is down", async (t) => { - try { - await fetchImportMaps([`${address}/map/server-error/v1`]); - t.fail("Expected to throw"); - } catch (e) { - t.match(e instanceof Error ? e.message : String(e), "Server error"); - t.pass(); - } +test("returns an error if server is down", async () => { + await assert.rejects( + fetchImportMaps([`${address}/map/server-error/v1`]), + /Server error/, + ); }); -tap.test( - "returns an error if an import map fetch returns an empty result", - async (t) => { - try { - await fetchImportMaps([`${address}/map/empty-response/v1`]); - t.fail("Expected to throw"); - } catch (e) { - t.match( - e instanceof Error ? e.message : String(e), - "got an empty response", - ); - t.pass(); - } - }, -); - -tap.test( - "returns an error if an import map fetch returns non-JSON content", - async (t) => { - try { - await fetchImportMaps([`${address}/map/text-response/v1`]); - t.fail("Expected to throw"); - } catch (e) { - t.match( - e instanceof Error ? e.message : String(e), - "did not return JSON, got", - ); - t.pass(); - } - }, -); +test("returns an error if an import map fetch returns an empty result", async () => { + await assert.rejects( + fetchImportMaps([`${address}/map/empty-response/v1`]), + /got an empty response/, + ); +}); + +test("returns an error if an import map fetch returns non-JSON content", async () => { + await assert.rejects( + fetchImportMaps([`${address}/map/text-response/v1`]), + /did not return JSON, got/, + ); +}); diff --git a/test/helpers/local-assets.test.js b/test/helpers/local-assets.test.js index 3d421bd0..7a5a614a 100644 --- a/test/helpers/local-assets.test.js +++ b/test/helpers/local-assets.test.js @@ -2,7 +2,8 @@ import { fileURLToPath } from "node:url"; import { dirname } from "node:path"; import express from "express"; import fastify from "fastify"; -import { test } from "tap"; +import { test } from "node:test"; +import assert from "node:assert/strict"; import stoppable from "stoppable"; import localAssets from "../../lib/helpers/local-assets.js"; @@ -40,7 +41,7 @@ class Server { } } -test("Setup development routes for express", async (t) => { +test("Setup development routes for express", async () => { const server = new Server(); await localAssets(server.app, __dirname); await server.start(); @@ -64,15 +65,14 @@ test("Setup development routes for express", async (t) => { ), ); - t.equal(res1.status, 200); - t.equal(res2.status, 200); - t.equal(res3.status, 200); - t.equal(res4.status, 200); + assert.strictEqual(res1.status, 200); + assert.strictEqual(res2.status, 200); + assert.strictEqual(res3.status, 200); + assert.strictEqual(res4.status, 200); await server.stop(); - t.end(); }); -test("Setup development routes for fastify", async (t) => { +test("Setup development routes for fastify", async () => { const server = fastify(); await localAssets(server, __dirname); const address = await server.listen(); @@ -86,21 +86,18 @@ test("Setup development routes for fastify", async (t) => { new URL("/pkg/my-app/1.0.0/assets/esm.js.map", address), ); - t.equal(res1.status, 200); - t.equal(res2.status, 200); - t.equal(res3.status, 200); - t.equal(res4.status, 200); + assert.strictEqual(res1.status, 200); + assert.strictEqual(res2.status, 200); + assert.strictEqual(res3.status, 200); + assert.strictEqual(res4.status, 200); await server.close(); - t.end(); }); -test("Invalid app instance", async (t) => { - t.rejects(localAssets({}, __dirname)); - t.end(); +test("Invalid app instance", async () => { + await assert.rejects(localAssets({}, __dirname)); }); -test("Invalid eik.json string", async (t) => { +test("Invalid eik.json string", async () => { const server = fastify(); - t.rejects(localAssets(server, "")); - t.end(); + await assert.rejects(localAssets(server, "")); }); diff --git a/test/helpers/resolve-files.test.js b/test/helpers/resolve-files.test.js index 3e3333d4..5aa2df25 100644 --- a/test/helpers/resolve-files.test.js +++ b/test/helpers/resolve-files.test.js @@ -2,229 +2,242 @@ import fs from "node:fs"; import os from "node:os"; import { fileURLToPath } from "node:url"; import { join, basename, dirname } from "node:path"; -import tap from "tap"; +import { test } from "node:test"; +import assert from "node:assert/strict"; import resolveFiles from "../../lib/helpers/resolve-files.js"; import { ensurePosix } from "../../lib/helpers/path-slashes.js"; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); -// then integrate the resolve-files function into eik-config. - -// fix all tests - -// then publish a PR and integrate into cli const fixturesPath = join(__dirname, "../fixtures"); -tap.test("when source is a relative folder", async (t) => { +test("when source is a relative folder", async () => { const resolved = await resolveFiles({ "/": "./folder" }, fixturesPath); - t.equal(resolved[0].destination, "/", "destination should be unchanged"); - t.equal(resolved[0].source, "./folder", "source should be unchanged"); - t.match( - resolved[0].basePath, - "test/fixtures/folder", + assert.strictEqual( + resolved[0].destination, + "/", + "destination should be unchanged", + ); + assert.strictEqual( + resolved[0].source, + "./folder", + "source should be unchanged", + ); + assert.ok( + resolved[0].basePath.includes("test/fixtures/folder"), "basePath should exclude glob", ); - t.equal(resolved[0].pattern, "**/*", "pattern should exclude basePath"); + assert.strictEqual( + resolved[0].pattern, + "**/*", + "pattern should exclude basePath", + ); }); -tap.test( - "when source is a relative folder and files iterator is accessed", - async (t) => { - t.plan(6); - const resolved = await resolveFiles({ "/": "folder/**/*" }, fixturesPath); - for (const file of resolved[0]) { - t.equal( - file.constructor.name, - "LocalFileLocation", - `${file.relative} wrapped in LocalFileLocation object`, - ); - } - const asArray = [...resolved[0]]; - const { relative, absolute, basePath } = asArray[0]; - t.equal(relative, "client.js", ".relative should not include .basePath"); - t.equal( - absolute, - ensurePosix(join(basePath, relative)), - ".absolute should include .basePath and .relative", - ); - t.match( - basePath, - "test/fixtures/folder", - ".basePath should include everything except .relative", +test("when source is a relative folder and files iterator is accessed", async () => { + const resolved = await resolveFiles({ "/": "folder/**/*" }, fixturesPath); + for (const file of resolved[0]) { + assert.strictEqual( + file.constructor.name, + "LocalFileLocation", + `${file.relative} wrapped in LocalFileLocation object`, ); - t.notMatch( - basePath, - "client.js", - ".basePath should include everything except .relative", - ); - }, -); + } + const asArray = [...resolved[0]]; + const { relative, absolute, basePath } = asArray[0]; + assert.strictEqual( + relative, + "client.js", + ".relative should not include .basePath", + ); + assert.strictEqual( + absolute, + ensurePosix(join(basePath, relative)), + ".absolute should include .basePath and .relative", + ); + assert.ok( + basePath.includes("test/fixtures/folder"), + ".basePath should include everything except .relative", + ); + assert.ok( + !basePath.includes("client.js"), + ".basePath should include everything except .relative", + ); +}); -tap.test("when source is a relative file", async (t) => { +test("when source is a relative file", async () => { const resolved = await resolveFiles( { "/": "./folder/client.js" }, fixturesPath, ); - t.match( - resolved[0].basePath, - "test/fixtures/folder", + assert.ok( + resolved[0].basePath.includes("test/fixtures/folder"), "basePath should exclude glob", ); - t.equal(resolved[0].pattern, "client.js", "pattern should exclude basePath"); + assert.strictEqual( + resolved[0].pattern, + "client.js", + "pattern should exclude basePath", + ); }); -tap.test("when source is a relative folder with glob", async (t) => { +test("when source is a relative folder with glob", async () => { const resolved = await resolveFiles({ "/": "./folder/**/*" }, fixturesPath); - t.match( - resolved[0].basePath, - "test/fixtures/folder", + assert.ok( + resolved[0].basePath.includes("test/fixtures/folder"), "basePath should exclude glob", ); - t.equal(resolved[0].pattern, "**/*", "pattern should exclude basePath"); + assert.strictEqual( + resolved[0].pattern, + "**/*", + "pattern should exclude basePath", + ); }); -tap.test( - "when source is a relative folder with glob and nested files", - async (t) => { - const resolved = await resolveFiles({ "/": "./**/*.js" }, fixturesPath); - t.match( - resolved[0].basePath, - "test/fixtures", - "basePath should exclude glob", - ); - t.equal(resolved[0].pattern, "**/*.js", "pattern should exclude basePath"); - t.equal([...resolved[0]][2].relative, "folder/client.js"); - }, -); +test("when source is a relative folder with glob and nested files", async () => { + const resolved = await resolveFiles({ "/": "./**/*.js" }, fixturesPath); + assert.ok( + resolved[0].basePath.includes("test/fixtures"), + "basePath should exclude glob", + ); + assert.strictEqual( + resolved[0].pattern, + "**/*.js", + "pattern should exclude basePath", + ); + assert.strictEqual([...resolved[0]][2].relative, "folder/client.js"); +}); -tap.test("when source is an absolute folder", async (t) => { +test("when source is an absolute folder", async () => { const resolved = await resolveFiles( { "/": join(fixturesPath, "folder") }, fixturesPath, ); - t.match( - resolved[0].basePath, - "test/fixtures/folder", + assert.ok( + resolved[0].basePath.includes("test/fixtures/folder"), "basePath should exclude glob", ); - t.equal(resolved[0].pattern, "**/*", "pattern should exclude basePath"); + assert.strictEqual( + resolved[0].pattern, + "**/*", + "pattern should exclude basePath", + ); }); -tap.test("when source is an absolute file", async (t) => { +test("when source is an absolute file", async () => { const resolved = await resolveFiles( { "/": join(fixturesPath, "folder/client.js") }, fixturesPath, ); - t.match( - resolved[0].basePath, - "test/fixtures/folder", + assert.ok( + resolved[0].basePath.includes("test/fixtures/folder"), "basePath should exclude glob", ); - t.match(resolved[0].pattern, "client.js", "pattern should exclude basePath"); + assert.ok( + resolved[0].pattern.includes("client.js"), + "pattern should exclude basePath", + ); }); -tap.test("when source is an absolute folder with glob", async (t) => { +test("when source is an absolute folder with glob", async () => { const resolved = await resolveFiles( { "/": join(fixturesPath, "folder/**/*") }, fixturesPath, ); - t.match( - resolved[0].basePath, - "test/fixtures/folder", + assert.ok( + resolved[0].basePath.includes("test/fixtures/folder"), "basePath should exclude glob", ); - t.equal(resolved[0].pattern, "**/*", "pattern should exclude basePath"); + assert.strictEqual( + resolved[0].pattern, + "**/*", + "pattern should exclude basePath", + ); }); -tap.test( - "when source is an absolute folder and cwd is a different directory entirely", - async (t) => { - const cwd = await fs.mkdtempSync(join(os.tmpdir(), basename(__filename))); - const resolved = await resolveFiles( - { "/": join(fixturesPath, "folder") }, - cwd, - ); - t.match( - resolved[0].basePath, - "test/fixtures/folder", - "basePath should exclude glob", - ); - t.equal(resolved[0].pattern, "**/*", "pattern should exclude basePath"); - }, -); +test("when source is an absolute folder and cwd is a different directory entirely", async () => { + const cwd = await fs.mkdtempSync(join(os.tmpdir(), basename(__filename))); + const resolved = await resolveFiles( + { "/": join(fixturesPath, "folder") }, + cwd, + ); + assert.ok( + resolved[0].basePath.includes("test/fixtures/folder"), + "basePath should exclude glob", + ); + assert.strictEqual( + resolved[0].pattern, + "**/*", + "pattern should exclude basePath", + ); +}); -tap.test( - "when source is an absolute folder and files iterator is accessed", - async (t) => { - t.plan(6); - const bPath = await fs.mkdtempSync(join(os.tmpdir(), basename(__filename))); - const resolved = await resolveFiles( - { "/": join(fixturesPath, "folder") }, - bPath, - ); - for (const file of resolved[0]) { - t.equal( - file.constructor.name, - "LocalFileLocation", - `${file.relative} wrapped in LocalFileLocation object`, - ); - } - const asArray = [...resolved[0]]; - const { relative, absolute, basePath } = asArray[0]; - t.equal(relative, "client.js", ".relative should not include .basePath"); - t.equal( - absolute, - ensurePosix(join(basePath, relative)), - ".absolute should include .basePath and .relative", - ); - t.match( - basePath, - "test/fixtures/folder", - ".basePath should include everything except .relative", - ); - t.notMatch( - basePath, - "client.js", - ".basePath should include everything except .relative", +test("when source is an absolute folder and files iterator is accessed", async () => { + const bPath = await fs.mkdtempSync(join(os.tmpdir(), basename(__filename))); + const resolved = await resolveFiles( + { "/": join(fixturesPath, "folder") }, + bPath, + ); + for (const file of resolved[0]) { + assert.strictEqual( + file.constructor.name, + "LocalFileLocation", + `${file.relative} wrapped in LocalFileLocation object`, ); - }, -); + } + const asArray = [...resolved[0]]; + const { relative, absolute, basePath } = asArray[0]; + assert.strictEqual( + relative, + "client.js", + ".relative should not include .basePath", + ); + assert.strictEqual( + absolute, + ensurePosix(join(basePath, relative)), + ".absolute should include .basePath and .relative", + ); + assert.ok( + basePath.includes("test/fixtures/folder"), + ".basePath should include everything except .relative", + ); + assert.ok( + !basePath.includes("client.js"), + ".basePath should include everything except .relative", + ); +}); -tap.test( - "when source is an absolute file and cwd is a different directory entirely", - async (t) => { - const cwd = fs.mkdtempSync(join(os.tmpdir(), "resolve-files-test-file")); - const resolved = await resolveFiles( - { "/": join(fixturesPath, "folder/client.js") }, - cwd, - ); - t.match( - resolved[0].basePath, - "test/fixtures/folder", - "basePath should exclude glob", - ); - t.equal( - resolved[0].pattern, - "client.js", - "pattern should exclude basePath", - ); - }, -); +test("when source is an absolute file and cwd is a different directory entirely", async () => { + const cwd = fs.mkdtempSync(join(os.tmpdir(), "resolve-files-test-file")); + const resolved = await resolveFiles( + { "/": join(fixturesPath, "folder/client.js") }, + cwd, + ); + assert.ok( + resolved[0].basePath.includes("test/fixtures/folder"), + "basePath should exclude glob", + ); + assert.strictEqual( + resolved[0].pattern, + "client.js", + "pattern should exclude basePath", + ); +}); -tap.test( - "when source is an absolute folder with glob and cwd is a different directory entirely", - async (t) => { - const cwd = fs.mkdtempSync(join(os.tmpdir(), "resolve-files-test-glob")); - const resolved = await resolveFiles( - { "/": join(fixturesPath, "folder/**/*") }, - cwd, - ); - t.match( - resolved[0].basePath, - "test/fixtures/folder", - "basePath should exclude glob", - ); - t.equal(resolved[0].pattern, "**/*", "pattern should exclude basePath"); - }, -); +test("when source is an absolute folder with glob and cwd is a different directory entirely", async () => { + const cwd = fs.mkdtempSync(join(os.tmpdir(), "resolve-files-test-glob")); + const resolved = await resolveFiles( + { "/": join(fixturesPath, "folder/**/*") }, + cwd, + ); + assert.ok( + resolved[0].basePath.includes("test/fixtures/folder"), + "basePath should exclude glob", + ); + assert.strictEqual( + resolved[0].pattern, + "**/*", + "pattern should exclude basePath", + ); +}); diff --git a/test/schemas/assert.test.js b/test/schemas/assert.test.js index cae49712..c57c37e0 100644 --- a/test/schemas/assert.test.js +++ b/test/schemas/assert.test.js @@ -1,11 +1,12 @@ -import { test } from "tap"; +import { test } from "node:test"; +import assert from "node:assert/strict"; import schemas from "../../lib/schemas/index.js"; -const { assert } = schemas; +const { assert: schemaAssert } = schemas; -test("assert basic eik JSON file", (t) => { - t.doesNotThrow(() => { - assert.eikJSON({ +test("assert basic eik JSON file", () => { + assert.doesNotThrow(() => { + schemaAssert.eikJSON({ name: "my-app-name", version: "1.0.0", server: "http://localhost:4001", @@ -15,10 +16,9 @@ test("assert basic eik JSON file", (t) => { }, }); }); - t.end(); }); -test("assert eik JSON file - mutation does not occur", (t) => { +test("assert eik JSON file - mutation does not occur", () => { const data = { name: "my-app-name", version: "1.0.0", @@ -29,9 +29,9 @@ test("assert eik JSON file - mutation does not occur", (t) => { }, }; - assert.eikJSON(data); + schemaAssert.eikJSON(data); - t.same(data, { + assert.deepStrictEqual(data, { name: "my-app-name", version: "1.0.0", server: "http://localhost:4001", @@ -40,172 +40,148 @@ test("assert eik JSON file - mutation does not occur", (t) => { "index.css": "./assets/styles.css", }, }); - t.end(); }); -test("assert asset manifest - all props invalid", (t) => { - t.throws(() => { +test("assert asset manifest - all props invalid", () => { + assert.throws(() => { // @ts-expect-error Testing bad input - assert.eikJSON({ + schemaAssert.eikJSON({ name: "", }); }); - t.end(); }); -test("assert name: empty string", (t) => { - t.throws(() => { - assert.name(""); +test("assert name: empty string", () => { + assert.throws(() => { + schemaAssert.name(""); }); - t.end(); }); -test("assert name: valid", (t) => { - t.doesNotThrow(() => { - assert.name("@finn-no/my-app"); +test("assert name: valid", () => { + assert.doesNotThrow(() => { + schemaAssert.name("@finn-no/my-app"); }); - t.end(); }); -test("assert name: invalid by assert-npm-package-name module", (t) => { - t.throws(() => { - assert.name("@finn-no/my-app~"); +test("assert name: invalid by assert-npm-package-name module", () => { + assert.throws(() => { + schemaAssert.name("@finn-no/my-app~"); }); - t.end(); }); -test("assert version: empty string", (t) => { - t.throws(() => { - assert.version(""); +test("assert version: empty string", () => { + assert.throws(() => { + schemaAssert.version(""); }); - t.end(); }); -test("assert version: valid", (t) => { - t.doesNotThrow(() => { - assert.version("1.0.0"); +test("assert version: valid", () => { + assert.doesNotThrow(() => { + schemaAssert.version("1.0.0"); }); - t.end(); }); -test("assert type: invalid", (t) => { - t.plan(1); +test("assert type: invalid", () => { try { - assert.type("foo"); + schemaAssert.type("foo"); } catch (err) { - t.equal( + assert.strictEqual( err instanceof Error ? err.message : String(err), 'Parameter "type" is not valid: must be equal to one of the allowed values ("package", "npm", "map", "image")', ); } - t.end(); }); -test("assert type: valid - package", (t) => { - t.doesNotThrow(() => { - assert.type("package"); +test("assert type: valid - package", () => { + assert.doesNotThrow(() => { + schemaAssert.type("package"); }); - t.end(); }); -test("assert type: valid - npm", (t) => { - t.doesNotThrow(() => { - assert.type("npm"); +test("assert type: valid - npm", () => { + assert.doesNotThrow(() => { + schemaAssert.type("npm"); }); - t.end(); }); -test("assert type: valid - map", (t) => { - t.doesNotThrow(() => { - assert.type("map"); +test("assert type: valid - map", () => { + assert.doesNotThrow(() => { + schemaAssert.type("map"); }); - t.end(); }); -test("assert version: invalid by node-semver module", (t) => { - t.throws(() => { - assert.version("1.0"); +test("assert version: invalid by node-semver module", () => { + assert.throws(() => { + schemaAssert.version("1.0"); }); - t.end(); }); -test("assert server: valid", (t) => { - t.doesNotThrow(() => { - assert.server("http://localhost:4000"); +test("assert server: valid", () => { + assert.doesNotThrow(() => { + schemaAssert.server("http://localhost:4000"); }); - t.end(); }); -test("assert server: invalid", (t) => { - t.throws(() => { - assert.server("localhost"); +test("assert server: invalid", () => { + assert.throws(() => { + schemaAssert.server("localhost"); }); - t.end(); }); -test("assert files: valid", (t) => { - t.doesNotThrow(() => { - assert.files({ "index.js": "/path/to/file.js" }); +test("assert files: valid", () => { + assert.doesNotThrow(() => { + schemaAssert.files({ "index.js": "/path/to/file.js" }); }); - t.end(); }); -test("assert files: invalid", (t) => { - t.throws(() => { +test("assert files: invalid", () => { + assert.throws(() => { // @ts-expect-error Testing bad input - assert.files({ asd: 1 }); + schemaAssert.files({ asd: 1 }); }); - t.end(); }); -test("assert files: invalid", (t) => { - t.throws(() => { - assert.files({}); +test("assert files: invalid (empty object)", () => { + assert.throws(() => { + schemaAssert.files({}); }); - t.end(); }); -test("assert importMap: valid string", (t) => { - t.doesNotThrow(() => { - assert.importMap("http://myimportmap/file.json"); +test("assert importMap: valid string", () => { + assert.doesNotThrow(() => { + schemaAssert.importMap("http://myimportmap/file.json"); }); - t.end(); }); -test("assert importMap: valid array", (t) => { - t.doesNotThrow(() => { - assert.importMap([ +test("assert importMap: valid array", () => { + assert.doesNotThrow(() => { + schemaAssert.importMap([ "http://myimportmap/file1.json", "http://myimportmap/file2.json", ]); }); - t.end(); }); -test("assert importMap: invalid string", (t) => { - t.throws(() => { - assert.importMap(""); +test("assert importMap: invalid string", () => { + assert.throws(() => { + schemaAssert.importMap(""); }); - t.end(); }); -test("assert importMap: invalid array", (t) => { - t.throws(() => { - assert.importMap([""]); +test("assert importMap: invalid array", () => { + assert.throws(() => { + schemaAssert.importMap([""]); }); - t.end(); }); -test("assert out: valid", (t) => { - t.doesNotThrow(() => { - assert.out("./.eik"); +test("assert out: valid", () => { + assert.doesNotThrow(() => { + schemaAssert.out("./.eik"); }); - t.end(); }); -test("assert out: invalid", (t) => { - t.throws(() => { - assert.out(""); +test("assert out: invalid", () => { + assert.throws(() => { + schemaAssert.out(""); }); - t.end(); }); diff --git a/test/schemas/index.test.js b/test/schemas/index.test.js index 40a70334..54f54ce1 100644 --- a/test/schemas/index.test.js +++ b/test/schemas/index.test.js @@ -1,9 +1,10 @@ -import { test } from "tap"; +import { test } from "node:test"; +import assert from "node:assert/strict"; import schemas from "../../lib/schemas/index.js"; const { validate } = schemas; -test("validate basic eik JSON file", (t) => { +test("validate basic eik JSON file", () => { const result = validate.eikJSON({ name: "my-app-name", version: "1.0.0", @@ -13,177 +14,156 @@ test("validate basic eik JSON file", (t) => { "index.css": "./assets/styles.css", }, }); - t.equal(result.value.type, "package"); - t.equal(result.error, false); - t.end(); + assert.strictEqual(result.value.type, "package"); + assert.strictEqual(result.error, false); }); -test("validate asset manifest - all props invalid", (t) => { +test("validate asset manifest - all props invalid", () => { // @ts-expect-error Testing bad input const result = validate.eikJSON({ name: "", }); - t.same(result.value, { name: "", type: "package" }); - t.equal( + assert.deepStrictEqual(result.value, { name: "", type: "package" }); + assert.strictEqual( Array.isArray(result.error) ? result.error[0].message : undefined, `must have required property 'server'`, ); - t.end(); }); -test("validate name: empty string", (t) => { +test("validate name: empty string", () => { const result = validate.name(""); - t.equal(result.value, ""); - t.equal(result.error ? result.error.length : 0, 1); - t.end(); + assert.strictEqual(result.value, ""); + assert.strictEqual(result.error ? result.error.length : 0, 1); }); -test("validate name: valid", (t) => { +test("validate name: valid", () => { const result = validate.name("@finn-no/my-app"); - t.equal(result.value, "@finn-no/my-app"); - t.equal(result.error, false); - t.end(); + assert.strictEqual(result.value, "@finn-no/my-app"); + assert.strictEqual(result.error, false); }); -test("validate name: invalid by validate-npm-package-name module", (t) => { +test("validate name: invalid by validate-npm-package-name module", () => { const result = validate.name("@finn-no/my-app~"); - t.equal(result.value, "@finn-no/my-app~"); - t.equal(result.error ? result.error.length : 0, 1); - t.end(); + assert.strictEqual(result.value, "@finn-no/my-app~"); + assert.strictEqual(result.error ? result.error.length : 0, 1); }); -test("validate version: empty string", (t) => { +test("validate version: empty string", () => { const result = validate.version(""); - t.equal(result.value, ""); - t.equal(result.error ? result.error.length : 0, 1); - t.end(); + assert.strictEqual(result.value, ""); + assert.strictEqual(result.error ? result.error.length : 0, 1); }); -test("validate version: valid", (t) => { +test("validate version: valid", () => { const result = validate.version("1.0.0"); - t.equal(result.value, "1.0.0"); - t.equal(result.error, false); - t.end(); + assert.strictEqual(result.value, "1.0.0"); + assert.strictEqual(result.error, false); }); -test("validate type: empty string", (t) => { +test("validate type: empty string", () => { const result = validate.type(""); - t.equal(result.value, ""); - t.equal(result.error ? result.error.length : 0, 1); - t.equal( + assert.strictEqual(result.value, ""); + assert.strictEqual(result.error ? result.error.length : 0, 1); + assert.strictEqual( Array.isArray(result.error) ? result.error[0].message : undefined, "must be equal to one of the allowed values", ); - t.end(); }); -test("validate type: valid - package", (t) => { +test("validate type: valid - package", () => { const result = validate.type("package"); - t.equal(result.value, "package"); - t.equal(result.error, false); - t.end(); + assert.strictEqual(result.value, "package"); + assert.strictEqual(result.error, false); }); -test("validate type: valid - npm", (t) => { + +test("validate type: valid - npm", () => { const result = validate.type("npm"); - t.equal(result.value, "npm"); - t.equal(result.error, false); - t.end(); + assert.strictEqual(result.value, "npm"); + assert.strictEqual(result.error, false); }); -test("validate type: valid - map", (t) => { + +test("validate type: valid - map", () => { const result = validate.type("map"); - t.equal(result.value, "map"); - t.equal(result.error, false); - t.end(); + assert.strictEqual(result.value, "map"); + assert.strictEqual(result.error, false); }); -test("validate version: invalid by node-semver module", (t) => { +test("validate version: invalid by node-semver module", () => { const result = validate.version("1.0"); - t.equal(result.value, "1.0"); - t.equal(result.error ? result.error.length : 0, 1); - t.end(); + assert.strictEqual(result.value, "1.0"); + assert.strictEqual(result.error ? result.error.length : 0, 1); }); -test("validate server: valid", (t) => { +test("validate server: valid", () => { const result = validate.server("http://localhost:4000"); - t.equal(result.value, "http://localhost:4000"); - t.equal(result.error, false); - t.end(); + assert.strictEqual(result.value, "http://localhost:4000"); + assert.strictEqual(result.error, false); }); -test("validate server: invalid", (t) => { +test("validate server: invalid", () => { const result = validate.server("localhost"); - t.equal(result.value, "localhost"); - t.equal(result.error ? result.error.length : 0, 1); - t.end(); + assert.strictEqual(result.value, "localhost"); + assert.strictEqual(result.error ? result.error.length : 0, 1); }); -test("validate files: valid", (t) => { +test("validate files: valid", () => { const result = validate.files({ "index.js": "/path/to/file.js" }); - t.same(result.value, { "index.js": "/path/to/file.js" }); - t.equal(result.error, false); - t.end(); + assert.deepStrictEqual(result.value, { "index.js": "/path/to/file.js" }); + assert.strictEqual(result.error, false); }); -test("validate files: invalid", (t) => { +test("validate files: invalid", () => { // @ts-expect-error Testing bad input const result = validate.files({ asd: 1 }); - t.same(result.value, { asd: 1 }); - t.equal(result.error ? result.error.length : 0, 3); - t.end(); + assert.deepStrictEqual(result.value, { asd: 1 }); + assert.strictEqual(result.error ? result.error.length : 0, 3); }); -test("validate files: invalid", (t) => { +test("validate files: invalid (empty object)", () => { const result = validate.files({}); - t.same(result.value, {}); - t.equal(result.error ? result.error.length : 0, 3); - t.end(); + assert.deepStrictEqual(result.value, {}); + assert.strictEqual(result.error ? result.error.length : 0, 3); }); -test("validate importMap: valid string", (t) => { +test("validate importMap: valid string", () => { const result = validate.importMap("http://myimportmap/file.json"); - t.same(result.value, "http://myimportmap/file.json"); - t.equal(result.error, false); - t.end(); + assert.deepStrictEqual(result.value, "http://myimportmap/file.json"); + assert.strictEqual(result.error, false); }); -test("validate importMap: valid array", (t) => { +test("validate importMap: valid array", () => { const result = validate.importMap([ "http://myimportmap/file1.json", "http://myimportmap/file2.json", ]); - t.same(result.value, [ + assert.deepStrictEqual(result.value, [ "http://myimportmap/file1.json", "http://myimportmap/file2.json", ]); - t.equal(result.error, false); - t.end(); + assert.strictEqual(result.error, false); }); -test("validate importMap: invalid string", (t) => { +test("validate importMap: invalid string", () => { const result = validate.importMap(""); - t.same(result.value, ""); - t.equal(result.error ? result.error.length : 0, 3); - t.end(); + assert.deepStrictEqual(result.value, ""); + assert.strictEqual(result.error ? result.error.length : 0, 3); }); -test("validate importMap: invalid array", (t) => { +test("validate importMap: invalid array", () => { const result = validate.importMap([""]); - t.same(result.value, [""]); - t.equal(result.error ? result.error.length : 0, 3); - t.end(); + assert.deepStrictEqual(result.value, [""]); + assert.strictEqual(result.error ? result.error.length : 0, 3); }); -test("validate out: valid", (t) => { +test("validate out: valid", () => { const result = validate.out("./.eik"); - t.same(result.value, "./.eik"); - t.equal(result.error, false); - t.end(); + assert.deepStrictEqual(result.value, "./.eik"); + assert.strictEqual(result.error, false); }); -test("validate out: invalid", (t) => { +test("validate out: invalid", () => { const result = validate.out(""); - t.same(result.value, ""); - t.equal(result.error ? result.error.length : 0, 1); - t.end(); + assert.deepStrictEqual(result.value, ""); + assert.strictEqual(result.error ? result.error.length : 0, 1); }); diff --git a/test/validators/index.test.js b/test/validators/index.test.js index 1cbfd1d9..b940d3c5 100644 --- a/test/validators/index.test.js +++ b/test/validators/index.test.js @@ -1,226 +1,233 @@ -import { test } from "tap"; +import { test } from "node:test"; +import assert from "node:assert/strict"; import * as validators from "../../lib/validators/index.js"; +const RE_ORIGIN_NOT_VALID = /Parameter "origin" is not valid/; +const RE_ORG_NOT_VALID = /Parameter "org" is not valid/; +const RE_NAME_NOT_VALID = /Parameter "name" is not valid/; +const RE_VERSION_NOT_VALID = /Parameter "version" is not valid/; +const RE_ALIAS_NOT_VALID = /Parameter "alias" is not valid/; +const RE_TYPE_NOT_VALID = /Parameter "type" is not valid/; +const RE_SEMVER_TYPE_NOT_VALID = /Parameter "semverType" is not valid/; + // // .origin() // -test(".origin() - valid values - should return value", (t) => { - t.equal(validators.origin("http://origin.com"), "http://origin.com"); - t.equal( +test(".origin() - valid values - should return value", () => { + assert.strictEqual( + validators.origin("http://origin.com"), + "http://origin.com", + ); + assert.strictEqual( validators.origin("http://origin.com/one/two"), "http://origin.com/one/two", ); - t.equal(validators.origin("http://s"), "http://s"); - t.equal(validators.origin("https://s"), "https://s"); - t.equal(validators.origin("http://localhost:4001"), "http://localhost:4001"); - t.equal(validators.origin("http://127.0.0.1:4001"), "http://127.0.0.1:4001"); - t.end(); + assert.strictEqual(validators.origin("http://s"), "http://s"); + assert.strictEqual(validators.origin("https://s"), "https://s"); + assert.strictEqual( + validators.origin("http://localhost:4001"), + "http://localhost:4001", + ); + assert.strictEqual( + validators.origin("http://127.0.0.1:4001"), + "http://127.0.0.1:4001", + ); }); -test(".origin() - invalid values - should throw", (t) => { - t.throws(() => { +test(".origin() - invalid values - should throw", () => { + assert.throws(() => { validators.origin("!name"); - }, new Error('Parameter "origin" is not valid')); - t.end(); + }, RE_ORIGIN_NOT_VALID); }); -test(".origin() - upper case valid value - should convert to lower case value", (t) => { - t.equal(validators.origin("http://some-origin"), "http://some-origin"); - t.equal(validators.origin("http://SOME_origin"), "http://some_origin"); - t.end(); +test(".origin() - upper case valid value - should convert to lower case value", () => { + assert.strictEqual( + validators.origin("http://some-origin"), + "http://some-origin", + ); + assert.strictEqual( + validators.origin("http://SOME_origin"), + "http://some_origin", + ); }); // // .org() // -test(".org() - valid values - should return value", (t) => { - t.equal(validators.org("someorg"), "someorg"); - t.equal(validators.org("some-org"), "some-org"); - t.equal(validators.org("some_org"), "some_org"); - t.equal(validators.org("123"), "123"); - t.end(); +test(".org() - valid values - should return value", () => { + assert.strictEqual(validators.org("someorg"), "someorg"); + assert.strictEqual(validators.org("some-org"), "some-org"); + assert.strictEqual(validators.org("some_org"), "some_org"); + assert.strictEqual(validators.org("123"), "123"); }); -test(".org() - invalid values - should throw", (t) => { - t.throws(() => { +test(".org() - invalid values - should throw", () => { + assert.throws(() => { validators.org("!name"); - }, new Error('Parameter "org" is not valid')); - t.end(); + }, RE_ORG_NOT_VALID); }); -test(".org() - upper case valid value - should convert to lower case value", (t) => { - t.equal(validators.org("SOMEorg"), "someorg"); - t.equal(validators.org("some-ORG"), "some-org"); - t.equal(validators.org("SOME_ORG"), "some_org"); - t.equal(validators.org("123"), "123"); - t.end(); +test(".org() - upper case valid value - should convert to lower case value", () => { + assert.strictEqual(validators.org("SOMEorg"), "someorg"); + assert.strictEqual(validators.org("some-ORG"), "some-org"); + assert.strictEqual(validators.org("SOME_ORG"), "some_org"); + assert.strictEqual(validators.org("123"), "123"); }); // // .name() // -test(".name() - valid values - should return value", (t) => { - t.equal(validators.name("some-package"), "some-package"); - t.equal(validators.name("example.com"), "example.com"); - t.equal(validators.name("under_score"), "under_score"); - t.equal(validators.name("123numeric"), "123numeric"); - t.equal(validators.name("@npm/thingy"), "@npm/thingy"); - t.equal(validators.name("@jane/foo.js"), "@jane/foo.js"); - t.end(); +test(".name() - valid values - should return value", () => { + assert.strictEqual(validators.name("some-package"), "some-package"); + assert.strictEqual(validators.name("example.com"), "example.com"); + assert.strictEqual(validators.name("under_score"), "under_score"); + assert.strictEqual(validators.name("123numeric"), "123numeric"); + assert.strictEqual(validators.name("@npm/thingy"), "@npm/thingy"); + assert.strictEqual(validators.name("@jane/foo.js"), "@jane/foo.js"); }); -test(".name() - invalid values - should throw", (t) => { - t.throws(() => { +test(".name() - invalid values - should throw", () => { + assert.throws(() => { validators.name(" leading-space:and:weirdchars"); - }, new Error('Parameter "name" is not valid')); - t.end(); + }, RE_NAME_NOT_VALID); }); // // .version() // -test(".version() - valid values - should return value", (t) => { - t.equal(validators.version("2.3.4"), "2.3.4"); - t.equal(validators.version("1.2.4-beta.0"), "1.2.4-beta.0"); - t.end(); +test(".version() - valid values - should return value", () => { + assert.strictEqual(validators.version("2.3.4"), "2.3.4"); + assert.strictEqual(validators.version("1.2.4-beta.0"), "1.2.4-beta.0"); }); -test(".version() - invalid values - should throw", (t) => { - t.throws(() => { +test(".version() - invalid values - should throw", () => { + assert.throws(() => { validators.version(" 1.and:weirdchars~5"); - }, new Error('Parameter "version" is not valid')); - t.end(); + }, RE_VERSION_NOT_VALID); }); -test(".version() - caret range - should throw", (t) => { - t.throws(() => { +test(".version() - caret range - should throw", () => { + assert.throws(() => { validators.version("^1.2.4"); - }, new Error('Parameter "version" is not valid')); - t.end(); + }, RE_VERSION_NOT_VALID); }); -test(".version() - tilde range - should throw", (t) => { - t.throws(() => { +test(".version() - tilde range - should throw", () => { + assert.throws(() => { validators.version("~1.2.4"); - }, new Error('Parameter "version" is not valid')); - t.end(); + }, RE_VERSION_NOT_VALID); }); -test(".version() - X-range - should throw", (t) => { - t.throws(() => { +test(".version() - X-range - should throw", () => { + assert.throws(() => { validators.version("1.x"); - }, new Error('Parameter "version" is not valid')); - t.end(); + }, RE_VERSION_NOT_VALID); }); -test(".version() - * - should throw", (t) => { - t.throws(() => { +test(".version() - * - should throw", () => { + assert.throws(() => { validators.version("*"); - }, new Error('Parameter "version" is not valid')); - t.end(); + }, RE_VERSION_NOT_VALID); }); -test(".version() - latest - should throw", (t) => { - t.throws(() => { +test(".version() - latest - should throw", () => { + assert.throws(() => { validators.version("latest"); - }, new Error('Parameter "version" is not valid')); - t.end(); + }, RE_VERSION_NOT_VALID); }); // // .alias() // -test(".alias() - valid values - should return value", (t) => { - t.equal(validators.alias("8"), "8"); - t.equal(validators.alias("10"), "10"); - t.equal(validators.alias("10893475983749384"), "10893475983749384"); - t.end(); +test(".alias() - valid values - should return value", () => { + assert.strictEqual(validators.alias("8"), "8"); + assert.strictEqual(validators.alias("10"), "10"); + assert.strictEqual( + validators.alias("10893475983749384"), + "10893475983749384", + ); }); -test(".name() - invalid value - semver patch - should throw", (t) => { - t.throws(() => { +test(".name() - invalid value - semver patch - should throw", () => { + assert.throws(() => { validators.alias("1.2.4"); - }, new Error('Parameter "alias" is not valid')); - t.end(); + }, RE_ALIAS_NOT_VALID); }); -test(".name() - invalid value - semver minor - should throw", (t) => { - t.throws(() => { +test(".name() - invalid value - semver minor - should throw", () => { + assert.throws(() => { validators.alias("1.2"); - }, new Error('Parameter "alias" is not valid')); - t.end(); + }, RE_ALIAS_NOT_VALID); }); -test(".name() - invalid value - semver latest - should throw", (t) => { - t.throws(() => { +test(".name() - invalid value - semver latest - should throw", () => { + assert.throws(() => { validators.alias("latest"); - }, new Error('Parameter "alias" is not valid')); - t.end(); + }, RE_ALIAS_NOT_VALID); }); // // .type() // -test(".type() - valid values - should return value", (t) => { - t.equal(validators.type("pkg"), "pkg"); - t.equal(validators.type("map"), "map"); - t.equal(validators.type("npm"), "npm"); - t.end(); +test(".type() - valid values - should return value", () => { + assert.strictEqual(validators.type("pkg"), "pkg"); + assert.strictEqual(validators.type("map"), "map"); + assert.strictEqual(validators.type("npm"), "npm"); }); -test(".type() - invalid value - should throw", (t) => { - t.throws(() => { +test(".type() - invalid value - should throw", () => { + assert.throws(() => { validators.type("foo"); - }, new Error('Parameter "type" is not valid')); - t.end(); + }, RE_TYPE_NOT_VALID); }); -test(".type() - invalid value - upper case - should throw", (t) => { - t.throws(() => { +test(".type() - invalid value - upper case - should throw", () => { + assert.throws(() => { validators.type("PKG"); - }, new Error('Parameter "type" is not valid')); - t.end(); + }, RE_TYPE_NOT_VALID); }); // // .extra() // -test(".extra() - valid values - should return value", (t) => { - t.equal(validators.extra("/foo/bar/index.js"), "/foo/bar/index.js"); - t.equal(validators.extra("/foo/a9-8_3/index.js"), "/foo/a9-8_3/index.js"); - t.equal(validators.extra("/foo/bar"), "/foo/bar"); - t.equal(validators.extra("index.js"), "index.js"); - t.end(); +test(".extra() - valid values - should return value", () => { + assert.strictEqual( + validators.extra("/foo/bar/index.js"), + "/foo/bar/index.js", + ); + assert.strictEqual( + validators.extra("/foo/a9-8_3/index.js"), + "/foo/a9-8_3/index.js", + ); + assert.strictEqual(validators.extra("/foo/bar"), "/foo/bar"); + assert.strictEqual(validators.extra("index.js"), "index.js"); }); // // .semverType() // -test(".semverType() - valid values - should return value", (t) => { - t.equal(validators.semverType("major"), "major"); - t.equal(validators.semverType("minor"), "minor"); - t.equal(validators.semverType("patch"), "patch"); - t.end(); +test(".semverType() - valid values - should return value", () => { + assert.strictEqual(validators.semverType("major"), "major"); + assert.strictEqual(validators.semverType("minor"), "minor"); + assert.strictEqual(validators.semverType("patch"), "patch"); }); -test(".semverType() - invalid value - should throw", (t) => { - t.throws(() => { +test(".semverType() - invalid value - should throw", () => { + assert.throws(() => { validators.semverType("foo"); - }, new Error('Parameter "semverType" is not valid')); - t.end(); + }, RE_SEMVER_TYPE_NOT_VALID); }); -test(".semverType() - invalid value - upper case - should throw", (t) => { - t.throws(() => { +test(".semverType() - invalid value - upper case - should throw", () => { + assert.throws(() => { validators.semverType("MAJOR"); - }, new Error('Parameter "semverType" is not valid')); - t.end(); + }, RE_SEMVER_TYPE_NOT_VALID); });