From 139ae5468c06bd597b0ebdea2673e3948d4fe3cd Mon Sep 17 00:00:00 2001 From: mrdoob Date: Fri, 2 Jan 2026 20:33:31 +0900 Subject: [PATCH 1/7] Replace eslint-plugin-import with eslint-plugin-import-x. (#32651) --- eslint.config.js | 2 +- package-lock.json | 5980 +++++++++------------------------------------ package.json | 2 +- 3 files changed, 1120 insertions(+), 4864 deletions(-) diff --git a/eslint.config.js b/eslint.config.js index 23deab5ddcee10..0177793c500cb9 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -3,7 +3,7 @@ import globals from 'globals'; import mdcs from 'eslint-config-mdcs'; import compat from 'eslint-plugin-compat'; import html from 'eslint-plugin-html'; -import importPlugin from 'eslint-plugin-import'; +import importPlugin from 'eslint-plugin-import-x'; import jsdoc from 'eslint-plugin-jsdoc'; export default [ diff --git a/package-lock.json b/package-lock.json index add08ae5e964ae..c61f02c1b00acd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "eslint-config-mdcs": "^5.0.0", "eslint-plugin-compat": "^6.0.0", "eslint-plugin-html": "^8.1.3", - "eslint-plugin-import": "^2.32.0", + "eslint-plugin-import-x": "^4.6.1", "eslint-plugin-jsdoc": "^61.4.1", "globals": "^16.5.0", "jimp": "^1.6.0", @@ -27,7 +27,6 @@ "puppeteer": "^24.25.0", "qunit": "^2.19.4", "rollup": "^4.6.0", - "rollup-plugin-filesize": "^10.0.0", "servez": "^2.2.4" } }, @@ -82,16 +81,6 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/runtime": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", - "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/types": { "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", @@ -106,6 +95,40 @@ "node": ">=6.9.0" } }, + "node_modules/@emnapi/core": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.7.1.tgz", + "integrity": "sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.1.0", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.1.tgz", + "integrity": "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", + "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@es-joy/jsdoccomment": { "version": "0.76.0", "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.76.0.tgz", @@ -134,9 +157,9 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", - "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", "dev": true, "license": "MIT", "dependencies": { @@ -152,6 +175,19 @@ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@eslint-community/regexpp": { "version": "4.12.2", "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", @@ -277,13 +313,6 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "dev": true, - "license": "MIT" - }, "node_modules/@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", @@ -336,107 +365,27 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/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/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", "dev": true, "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": "20 || >=22" } }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "node_modules/@isaacs/brace-expansion": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", + "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" + "@isaacs/balanced-match": "^4.0.1" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": "20 || >=22" } }, "node_modules/@jimp/core": { @@ -972,168 +921,17 @@ "dev": true, "license": "CC0-1.0" }, - "node_modules/@npmcli/fs": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", - "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", - "dev": true, - "license": "ISC", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/git": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.1.0.tgz", - "integrity": "sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/promise-spawn": "^6.0.0", - "lru-cache": "^7.4.4", - "npm-pick-manifest": "^8.0.0", - "proc-log": "^3.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/git/node_modules/which": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", - "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/installed-package-contents": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz", - "integrity": "sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==", - "dev": true, - "license": "ISC", - "dependencies": { - "npm-bundled": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "bin": { - "installed-package-contents": "bin/index.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/move-file": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", - "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", - "deprecated": "This functionality has been moved to @npmcli/fs", - "dev": true, - "license": "MIT", - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@npmcli/node-gyp": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", - "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/promise-spawn": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", - "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", - "dev": true, - "license": "ISC", - "dependencies": { - "which": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/promise-spawn/node_modules/which": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", - "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/run-script": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.2.tgz", - "integrity": "sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==", - "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/promise-spawn": "^6.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^3.0.0", - "which": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/run-script/node_modules/which": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", - "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", "dev": true, "license": "MIT", "optional": true, - "engines": { - "node": ">=14" + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" } }, "node_modules/@puppeteer/browsers": { @@ -1537,289 +1335,62 @@ "win32" ] }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "dev": true, - "license": "MIT" - }, - "node_modules/@sigstore/bundle": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-1.1.0.tgz", - "integrity": "sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog==", + "node_modules/@sindresorhus/base62": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/base62/-/base62-1.0.0.tgz", + "integrity": "sha512-TeheYy0ILzBEI/CO55CP6zJCSdSWeRtGnHy8U8dWSUH4I68iqTsy7HkMktR4xakThc9jotkPQUXT4ITdbV7cHA==", "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/protobuf-specs": "^0.2.0" - }, + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@sigstore/protobuf-specs": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.2.1.tgz", - "integrity": "sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A==", + "node_modules/@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "license": "MIT" }, - "node_modules/@sigstore/sign": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-1.0.0.tgz", - "integrity": "sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA==", + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/bundle": "^1.1.0", - "@sigstore/protobuf-specs": "^0.2.0", - "make-fetch-happen": "^11.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "license": "MIT" }, - "node_modules/@sigstore/sign/node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" + "tslib": "^2.4.0" } }, - "node_modules/@sigstore/sign/node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", "dev": true, - "license": "MIT", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } + "license": "MIT" }, - "node_modules/@sigstore/sign/node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } + "license": "MIT" }, - "node_modules/@sigstore/sign/node_modules/make-fetch-happen": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", - "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", - "dev": true, - "license": "ISC", - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@sigstore/sign/node_modules/minipass-fetch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", - "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", - "dev": true, - "license": "MIT", - "dependencies": { - "minipass": "^7.0.3", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" - } - }, - "node_modules/@sigstore/sign/node_modules/minipass-fetch/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/@sigstore/sign/node_modules/socks-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@sigstore/tuf": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-1.0.3.tgz", - "integrity": "sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/protobuf-specs": "^0.2.0", - "tuf-js": "^1.1.7" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@sindresorhus/base62": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/base62/-/base62-1.0.0.tgz", - "integrity": "sha512-TeheYy0ILzBEI/CO55CP6zJCSdSWeRtGnHy8U8dWSUH4I68iqTsy7HkMktR4xakThc9jotkPQUXT4ITdbV7cHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tootallnate/quickjs-emscripten": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", - "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tufjs/canonical-json": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz", - "integrity": "sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@tufjs/models": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-1.0.4.tgz", - "integrity": "sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@tufjs/canonical-json": "1.0.0", - "minimatch": "^9.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@tufjs/models/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@tufjs/models/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/linkify-it": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", - "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", + "node_modules/@types/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", "dev": true, "license": "MIT" }, @@ -1829,7 +1400,6 @@ "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/linkify-it": "^5", "@types/mdurl": "^2" @@ -1878,9 +1448,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.48.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.48.1.tgz", - "integrity": "sha512-+fZ3LZNeiELGmimrujsDCT4CRIbq5oXdHe7chLiW8qzqyPMnn1puNstCrMNVAqwcl2FdIxkuJ4tOs/RFDBVc/Q==", + "version": "8.51.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.51.0.tgz", + "integrity": "sha512-TizAvWYFM6sSscmEakjY3sPqGwxZRSywSsPEiuZF6d5GmGD9Gvlsv0f6N8FvAAA0CD06l3rIcWNbsN1e5F/9Ag==", "dev": true, "license": "MIT", "engines": { @@ -1891,111 +1461,335 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", + "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", + "cpu": [ + "arm" + ], "dev": true, - "license": "ISC" + "license": "MIT", + "optional": true, + "os": [ + "android" + ] }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", + "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } + "optional": true, + "os": [ + "android" + ] }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", + "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/accepts/node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", + "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.6" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", + "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "peer": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } + "optional": true, + "os": [ + "freebsd" + ] }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", + "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "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==", + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", + "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "engines": { - "node": ">= 14" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/agentkeepalive": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz", - "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==", + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", + "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "humanize-ms": "^1.2.1" - }, - "engines": { - "node": ">= 8.0.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", + "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", + "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", + "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", + "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", + "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", + "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", + "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", + "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.11" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", + "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", + "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", + "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.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" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -2013,16 +1807,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.1.0" - } - }, "node_modules/ansi-colors": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", @@ -2066,13 +1850,6 @@ "dev": true, "license": "MIT" }, - "node_modules/aproba": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.1.0.tgz", - "integrity": "sha512-tLIEcj5GuR2RSTnxNKdkK0dJ/GrC7P38sUkiDmDuHfsHmbagTFAxDVIBltoklXEVIQ/f14IL8IMJ5pn9Hez1Ew==", - "dev": true, - "license": "ISC" - }, "node_modules/are-docs-informative": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", @@ -2083,36 +1860,6 @@ "node": ">=14" } }, - "node_modules/are-we-there-yet": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", - "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", - "deprecated": "This package is no longer supported.", - "dev": true, - "license": "ISC", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/are-we-there-yet/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -2120,23 +1867,6 @@ "dev": true, "license": "Python-2.0" }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -2144,174 +1874,43 @@ "dev": true, "license": "MIT" }, - "node_modules/array-includes": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", - "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", + "node_modules/ast-metadata-inferer": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/ast-metadata-inferer/-/ast-metadata-inferer-0.8.1.tgz", + "integrity": "sha512-ht3Dm6Zr7SXv6t1Ra6gFo0+kLDglHGrEbYihTkcycrbHw7WCcuhBzPlJYHEsIpycaUwzsJHje+vUcxXUX4ztTA==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.24.0", - "es-object-atoms": "^1.1.1", - "get-intrinsic": "^1.3.0", - "is-string": "^1.1.1", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@mdn/browser-compat-data": "^5.6.19" } }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", - "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-shim-unscopables": "^1.1.0" + "tslib": "^2.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4" } }, - "node_modules/array.prototype.flat": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", - "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "node_modules/await-to-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/await-to-js/-/await-to-js-3.0.0.tgz", + "integrity": "sha512-zJAaP9zxTcvTHRlejau3ZOY4V7SRpiByf3/dxx2uyKxxor19tpmpV2QRsTKikckwhaPmr2dVpxxMr7jOCYVp5g==", "dev": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=6.0.0" } }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", - "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/ast-metadata-inferer": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/ast-metadata-inferer/-/ast-metadata-inferer-0.8.1.tgz", - "integrity": "sha512-ht3Dm6Zr7SXv6t1Ra6gFo0+kLDglHGrEbYihTkcycrbHw7WCcuhBzPlJYHEsIpycaUwzsJHje+vUcxXUX4ztTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@mdn/browser-compat-data": "^5.6.19" - } - }, - "node_modules/ast-types": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", - "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/await-to-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/await-to-js/-/await-to-js-3.0.0.tgz", - "integrity": "sha512-zJAaP9zxTcvTHRlejau3ZOY4V7SRpiByf3/dxx2uyKxxor19tpmpV2QRsTKikckwhaPmr2dVpxxMr7jOCYVp5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/b4a": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.3.tgz", - "integrity": "sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==", + "node_modules/b4a": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.3.tgz", + "integrity": "sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==", "dev": true, "license": "Apache-2.0", "peerDependencies": { @@ -2331,9 +1930,9 @@ "license": "MIT" }, "node_modules/bare-events": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.1.tgz", - "integrity": "sha512-oxSAxTS1hRfnyit2CL5QpAOS5ixfBjj6ex3yTNvXyY/kE719jQ/IjuESJBK2w5v4wwQRAHGseVJXx9QBYOtFGQ==", + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", + "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", "dev": true, "license": "Apache-2.0", "peerDependencies": { @@ -2346,9 +1945,9 @@ } }, "node_modules/bare-fs": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.5.0.tgz", - "integrity": "sha512-GljgCjeupKZJNetTqxKaQArLK10vpmK28or0+RwWjEl5Rk+/xG3wkpmkv+WrcBm3q1BwHKlnhXzR8O37kcvkXQ==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.5.2.tgz", + "integrity": "sha512-veTnRzkb6aPHOvSKIOy60KzURfBdUflr5VReI+NSaPL6xf+XLdONQgZgpYvUuZLVQ8dCqxpBAudaOM1+KpAUxw==", "dev": true, "license": "Apache-2.0", "optional": true, @@ -2417,9 +2016,9 @@ } }, "node_modules/bare-url": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.3.1.tgz", - "integrity": "sha512-v2yl0TnaZTdEnelkKtXZGnotiV6qATBlnNuUMrHl6v9Lmmrh9mw9RYyImPU7/4RahumSwQS1k2oKXcRfXcbjJw==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.3.2.tgz", + "integrity": "sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==", "dev": true, "license": "Apache-2.0", "optional": true, @@ -2449,9 +2048,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.8.21", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.21.tgz", - "integrity": "sha512-JU0h5APyQNsHOlAM7HnQnPToSDQoEBZqzu/YBlqDnEeymPnZDREeXJA3KBMQee+dKteAxZ2AtvQEvVYdZf241Q==", + "version": "2.9.11", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.11.tgz", + "integrity": "sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ==", "dev": true, "license": "Apache-2.0", "bin": { @@ -2479,9 +2078,9 @@ "license": "MIT" }, "node_modules/basic-ftp": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", - "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.1.0.tgz", + "integrity": "sha512-RkaJzeJKDbaDWTIPiJwubyljaEPwpVWkm9Rt5h9Nd6h7tEXTJ3VB4qxdZBioV7JO5yLUaOKwz7vDOzlncUsegw==", "dev": true, "license": "MIT", "engines": { @@ -2510,24 +2109,24 @@ "license": "MIT" }, "node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", "dev": true, "license": "MIT", "dependencies": { - "bytes": "3.1.2", + "bytes": "~3.1.2", "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", "type-is": "~1.6.18", - "unpipe": "1.0.0" + "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.8", @@ -2544,19 +2143,6 @@ "ms": "2.0.0" } }, - "node_modules/body-parser/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -2564,29 +2150,6 @@ "dev": true, "license": "MIT" }, - "node_modules/boxen": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", - "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-align": "^3.0.0", - "camelcase": "^6.2.0", - "chalk": "^4.1.0", - "cli-boxes": "^2.2.1", - "string-width": "^4.2.2", - "type-fest": "^0.20.2", - "widest-line": "^3.1.0", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", @@ -2598,23 +2161,10 @@ "concat-map": "0.0.1" } }, - "node_modules/brotli-size": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/brotli-size/-/brotli-size-4.0.0.tgz", - "integrity": "sha512-uA9fOtlTRC0iqKfzff1W34DXUA3GyVqbUaeo3Rw3d4gd1eavKVCETXrn3NzO74W+UVkG3UHu8WxUi+XvKI/huA==", - "dev": true, - "license": "MIT", - "dependencies": { - "duplexer": "0.1.1" - }, - "engines": { - "node": ">= 10.16.0" - } - }, "node_modules/browserslist": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.27.0.tgz", - "integrity": "sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", "dev": true, "funding": [ { @@ -2631,13 +2181,12 @@ } ], "license": "MIT", - "peer": true, "dependencies": { - "baseline-browser-mapping": "^2.8.19", - "caniuse-lite": "^1.0.30001751", - "electron-to-chromium": "^1.5.238", - "node-releases": "^2.0.26", - "update-browserslist-db": "^1.1.4" + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" @@ -2698,106 +2247,6 @@ "node": ">= 0.8" } }, - "node_modules/cacache": { - "version": "17.1.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", - "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", - "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^7.7.1", - "minipass": "^7.0.3", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/cacache/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/cacache/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/cacache/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/cacache/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "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", @@ -2839,23 +2288,10 @@ "node": ">=6" } }, - "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/caniuse-lite": { - "version": "1.0.30001752", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001752.tgz", - "integrity": "sha512-vKUk7beoukxE47P5gcVNKkDRzXdVofotshHwfR9vmpeFKxmI5PBpgOMC18LUJUA/DvJ70Y7RveasIBraqsyO/g==", + "version": "1.0.30001762", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001762.tgz", + "integrity": "sha512-PxZwGNvH7Ak8WX5iXzoK1KPZttBXNPuaOvI2ZYU7NrlM+d9Ov+TUvlLOBNGzVXAntMSMMlJPd+jY6ovrVjSmUw==", "dev": true, "funding": [ { @@ -2916,16 +2352,6 @@ "node": ">=8" } }, - "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, "node_modules/chromium-bidi": { "version": "12.0.1", "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-12.0.1.tgz", @@ -2940,29 +2366,6 @@ "devtools-protocol": "*" } }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -3008,16 +2411,6 @@ "color-support": "bin.js" } }, - "node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.1.90" - } - }, "node_modules/commander": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", @@ -3070,13 +2463,6 @@ "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" } }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "dev": true, - "license": "ISC" - }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -3101,9 +2487,9 @@ } }, "node_modules/cookie": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", - "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "dev": true, "license": "MIT", "engines": { @@ -3111,9 +2497,9 @@ } }, "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", "dev": true, "license": "MIT" }, @@ -3183,60 +2569,6 @@ "node": ">= 14" } }, - "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/inspect-js" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", @@ -3272,42 +2604,6 @@ "node": ">=0.10.0" } }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/degenerator": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", @@ -3323,13 +2619,6 @@ "node": ">= 14" } }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "dev": true, - "license": "MIT" - }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -3356,8 +2645,7 @@ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1534754.tgz", "integrity": "sha512-26T91cV5dbOYnXdJi5qQHoTtUoNEqwkHcAyu/IKtjIAxiEqPMrDiRkDOPWVsGfNZGmlQVHQbZRSjD8sxagWVsQ==", "dev": true, - "license": "BSD-3-Clause", - "peer": true + "license": "BSD-3-Clause" }, "node_modules/dom-serializer": { "version": "2.0.0", @@ -3446,19 +2734,6 @@ "node": ">= 0.4" } }, - "node_modules/duplexer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha512-sxNZ+ljy+RA1maXoUReeqBBpBC6RLKmg5ewzV+x+mSETmWNoKdZN6vcQjpFROemza23hGFskJtFNoUWUaQ+R4Q==", - "dev": true - }, - "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", @@ -3467,9 +2742,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.244", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.244.tgz", - "integrity": "sha512-OszpBN7xZX4vWMPJwB9illkN/znA8M36GQqQxi6MNy9axWxhOfJyZZJtSLQCpEFLHP2xK33BiWx9aIuIEXVCcw==", + "version": "1.5.267", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz", + "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==", "dev": true, "license": "ISC" }, @@ -3490,17 +2765,6 @@ "node": ">= 0.8" } }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, "node_modules/end-of-stream": { "version": "1.4.5", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", @@ -3534,13 +2798,6 @@ "node": ">=6" } }, - "node_modules/err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true, - "license": "MIT" - }, "node_modules/error-ex": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", @@ -3551,75 +2808,6 @@ "is-arrayish": "^0.2.1" } }, - "node_modules/es-abstract": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", - "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.3.0", - "get-proto": "^1.0.1", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.2.1", - "is-set": "^2.0.3", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.1", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.4", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.4", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "stop-iteration-iterator": "^1.1.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.19" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", @@ -3653,53 +2841,6 @@ "node": ">= 0.4" } }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", - "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -3758,7 +2899,6 @@ "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -3820,56 +2960,31 @@ "dev": true, "license": "MIT" }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", - "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", + "node_modules/eslint-import-context": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/eslint-import-context/-/eslint-import-context-0.1.9.tgz", + "integrity": "sha512-K9Hb+yRaGAGUbwjhFNHvSmmkZs9+zbuoe3kFQ4V1wYjrepUFYM2dZAfNtjbbj3qsPfUfsA68Bx/ICWQMi+C8Eg==", "dev": true, "license": "MIT", "dependencies": { - "debug": "^3.2.7" + "get-tsconfig": "^4.10.1", + "stable-hash-x": "^0.2.0" }, "engines": { - "node": ">=4" + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-context" + }, + "peerDependencies": { + "unrs-resolver": "^1.0.0" }, "peerDependenciesMeta": { - "eslint": { + "unrs-resolver": { "optional": true } } }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, "node_modules/eslint-plugin-compat": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-6.0.2.tgz", @@ -3919,71 +3034,57 @@ "node": ">=16.0.0" } }, - "node_modules/eslint-plugin-import": { - "version": "2.32.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", - "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", + "node_modules/eslint-plugin-import-x": { + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.16.1.tgz", + "integrity": "sha512-vPZZsiOKaBAIATpFE2uMI4w5IRwdv/FpQ+qZZMR4E+PeOcM4OeoEbqxRMnywdxP19TyB/3h6QBB0EWon7letSQ==", "dev": true, "license": "MIT", "dependencies": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.9", - "array.prototype.findlastindex": "^1.2.6", - "array.prototype.flat": "^1.3.3", - "array.prototype.flatmap": "^1.3.3", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.1", - "hasown": "^2.0.2", - "is-core-module": "^2.16.1", + "@typescript-eslint/types": "^8.35.0", + "comment-parser": "^1.4.1", + "debug": "^4.4.1", + "eslint-import-context": "^0.1.9", "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.1", - "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.9", - "tsconfig-paths": "^3.15.0" + "minimatch": "^9.0.3 || ^10.0.1", + "semver": "^7.7.2", + "stable-hash-x": "^0.2.0", + "unrs-resolver": "^1.9.2" }, "engines": { - "node": ">=4" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-import-x" }, "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" + "@typescript-eslint/utils": "^8.0.0", + "eslint": "^8.57.0 || ^9.0.0", + "eslint-import-resolver-node": "*" + }, + "peerDependenciesMeta": { + "@typescript-eslint/utils": { + "optional": true + }, + "eslint-import-resolver-node": { + "optional": true + } } }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "node_modules/eslint-plugin-import-x/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", "dev": true, - "license": "Apache-2.0", + "license": "BlueOak-1.0.0", "dependencies": { - "esutils": "^2.0.2" + "@isaacs/brace-expansion": "^5.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/eslint-plugin-jsdoc": { @@ -4015,17 +3116,6 @@ "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" } }, - "node_modules/eslint-plugin-jsdoc/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/eslint-scope": { "version": "8.4.0", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", @@ -4044,19 +3134,6 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", @@ -4087,19 +3164,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -4115,9 +3179,9 @@ } }, "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -4213,13 +3277,6 @@ "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==", "dev": true }, - "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": "4.22.1", "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", @@ -4284,22 +3341,6 @@ "dev": true, "license": "MIT" }, - "node_modules/express/node_modules/qs": { - "version": "6.14.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", - "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", @@ -4390,29 +3431,19 @@ "url": "https://github.com/sindresorhus/file-type?sponsor=1" } }, - "node_modules/filesize": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.4.0.tgz", - "integrity": "sha512-mjFIpOHC4jbfcTfoh4rkWpI31mF7viw9ikj/JyLoKzqlwG/YsefKfvYlYhdYdg/9mtK2z1AzgN/0LvVQ3zdlSQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", "dev": true, "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "parseurl": "~1.3.3", - "statuses": "2.0.1", + "statuses": "~2.0.2", "unpipe": "~1.0.0" }, "engines": { @@ -4474,52 +3505,6 @@ "dev": true, "license": "ISC" }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "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/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", @@ -4540,40 +3525,10 @@ "node": ">= 0.6" } }, - "node_modules/fs-minipass": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", - "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/fs-minipass/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true, - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -4595,68 +3550,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gauge": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", - "deprecated": "This package is no longer supported.", - "dev": true, - "license": "ISC", - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/generator-function": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", - "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -4722,22 +3615,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "node_modules/get-tsconfig": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.0.tgz", + "integrity": "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" + "resolve-pkg-maps": "^1.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, "node_modules/get-uri": { @@ -4766,28 +3654,6 @@ "omggif": "^1.0.10" } }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "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", @@ -4814,23 +3680,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/globalyzer": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", @@ -4865,42 +3714,6 @@ "dev": true, "license": "ISC" }, - "node_modules/gzip-size": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", - "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "duplexer": "^0.1.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gzip-size/node_modules/duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "dev": true, - "license": "MIT" - }, - "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -4911,35 +3724,6 @@ "node": ">=8" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-symbols": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", @@ -4953,29 +3737,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "dev": true, - "license": "ISC" - }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -4989,19 +3750,6 @@ "node": ">= 0.4" } }, - "node_modules/hosted-git-info": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.3.tgz", - "integrity": "sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw==", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^7.5.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/html-entities": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", @@ -5039,28 +3787,25 @@ "entities": "^6.0.0" } }, - "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.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", "dev": true, "license": "MIT", "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" }, "engines": { "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/http-proxy-agent": { @@ -5091,25 +3836,14 @@ "node": ">= 14" } }, - "node_modules/humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.0.0" - } - }, "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { "node": ">=0.10.0" @@ -5146,45 +3880,6 @@ "node": ">= 4" } }, - "node_modules/ignore-walk": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.5.tgz", - "integrity": "sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==", - "dev": true, - "license": "ISC", - "dependencies": { - "minimatch": "^9.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/ignore-walk/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/ignore-walk/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/image-q": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz", @@ -5222,35 +3917,6 @@ "node": ">=0.8.19" } }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true, - "license": "ISC" - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -5258,25 +3924,10 @@ "dev": true, "license": "ISC" }, - "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/ip-address": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz", - "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", "dev": true, "license": "MIT", "engines": { @@ -5293,24 +3944,6 @@ "node": ">= 0.10" } }, - "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -5318,18 +3951,14 @@ "dev": true, "license": "MIT" }, - "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, "license": "MIT", "dependencies": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -5338,1650 +3967,561 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-function": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", - "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.4", - "generator-function": "^2.0.0", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, "engines": { "node": ">=0.10.0" } }, - "node_modules/is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "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/jimp": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-1.6.0.tgz", - "integrity": "sha512-YcwCHw1kiqEeI5xRpDlPPBGL2EOpBKLwO4yIBJcXWHPj5PnA5urGq0jbyhM5KoNpypQ6VboSoxc9D8HyfvngSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jimp/core": "1.6.0", - "@jimp/diff": "1.6.0", - "@jimp/js-bmp": "1.6.0", - "@jimp/js-gif": "1.6.0", - "@jimp/js-jpeg": "1.6.0", - "@jimp/js-png": "1.6.0", - "@jimp/js-tiff": "1.6.0", - "@jimp/plugin-blit": "1.6.0", - "@jimp/plugin-blur": "1.6.0", - "@jimp/plugin-circle": "1.6.0", - "@jimp/plugin-color": "1.6.0", - "@jimp/plugin-contain": "1.6.0", - "@jimp/plugin-cover": "1.6.0", - "@jimp/plugin-crop": "1.6.0", - "@jimp/plugin-displace": "1.6.0", - "@jimp/plugin-dither": "1.6.0", - "@jimp/plugin-fisheye": "1.6.0", - "@jimp/plugin-flip": "1.6.0", - "@jimp/plugin-hash": "1.6.0", - "@jimp/plugin-mask": "1.6.0", - "@jimp/plugin-print": "1.6.0", - "@jimp/plugin-quantize": "1.6.0", - "@jimp/plugin-resize": "1.6.0", - "@jimp/plugin-rotate": "1.6.0", - "@jimp/plugin-threshold": "1.6.0", - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/jpeg-js": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", - "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/js2xmlparser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz", - "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "xmlcreate": "^2.0.4" - } - }, - "node_modules/jsdoc": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-4.0.5.tgz", - "integrity": "sha512-P4C6MWP9yIlMiK8nwoZvxN84vb6MsnXcHuy7XzVOvQoCizWX5JFCBsWIIWKXBltpoRZXddUOVQmCTOZt9yDj9g==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@babel/parser": "^7.20.15", - "@jsdoc/salty": "^0.2.1", - "@types/markdown-it": "^14.1.1", - "bluebird": "^3.7.2", - "catharsis": "^0.9.0", - "escape-string-regexp": "^2.0.0", - "js2xmlparser": "^4.0.2", - "klaw": "^3.0.0", - "markdown-it": "^14.1.0", - "markdown-it-anchor": "^8.6.7", - "marked": "^4.0.10", - "mkdirp": "^1.0.4", - "requizzle": "^0.2.3", - "strip-json-comments": "^3.1.0", - "underscore": "~1.13.2" - }, - "bin": { - "jsdoc": "jsdoc.js" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/jsdoc-type-pratt-parser": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-6.10.0.tgz", - "integrity": "sha512-+LexoTRyYui5iOhJGn13N9ZazL23nAHGkXsa1p/C8yeq79WRfLBag6ZZ0FQG2aRoc9yfo59JT9EYCQonOkHKkQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/jsdoc/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/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "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", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/klaw": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", - "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.9" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true, - "license": "MIT" - }, - "node_modules/linkify-it": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", - "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "uc.micro": "^2.0.0" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/magic-string": { - "version": "0.30.21", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" - } - }, - "node_modules/make-fetch-happen": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", - "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", - "dev": true, - "license": "ISC", - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^9.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/make-fetch-happen/node_modules/@npmcli/fs": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", - "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "@gar/promisify": "^1.1.3", - "semver": "^7.3.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/make-fetch-happen/node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/make-fetch-happen/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/make-fetch-happen/node_modules/cacache": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", - "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^2.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "infer-owner": "^1.0.4", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11", - "unique-filename": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/make-fetch-happen/node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/make-fetch-happen/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/make-fetch-happen/node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/make-fetch-happen/node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/make-fetch-happen/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-fetch-happen/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/make-fetch-happen/node_modules/socks-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/make-fetch-happen/node_modules/ssri": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/make-fetch-happen/node_modules/unique-filename": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", - "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", - "dev": true, - "license": "ISC", - "dependencies": { - "unique-slug": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/make-fetch-happen/node_modules/unique-slug": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", - "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/markdown-it": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", - "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1", - "entities": "^4.4.0", - "linkify-it": "^5.0.0", - "mdurl": "^2.0.0", - "punycode.js": "^2.3.1", - "uc.micro": "^2.1.0" - }, - "bin": { - "markdown-it": "bin/markdown-it.mjs" - } - }, - "node_modules/markdown-it-anchor": { - "version": "8.6.7", - "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz", - "integrity": "sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==", - "dev": true, - "license": "Unlicense", - "peerDependencies": { - "@types/markdown-it": "*", - "markdown-it": "*" - } - }, - "node_modules/markdown-it/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/marked": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", - "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", - "dev": true, - "license": "MIT", - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 12" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/mdurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", - "dev": true, - "license": "MIT" - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "dev": true, - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "is-extglob": "^2.1.1" }, "engines": { - "node": "*" + "node": ">=0.10.0" } }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "license": "MIT" }, - "node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true, - "license": "ISC", - "engines": { - "node": ">=8" - } + "license": "ISC" }, - "node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "node_modules/jimp": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-1.6.0.tgz", + "integrity": "sha512-YcwCHw1kiqEeI5xRpDlPPBGL2EOpBKLwO4yIBJcXWHPj5PnA5urGq0jbyhM5KoNpypQ6VboSoxc9D8HyfvngSg==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "minipass": "^3.0.0" + "@jimp/core": "1.6.0", + "@jimp/diff": "1.6.0", + "@jimp/js-bmp": "1.6.0", + "@jimp/js-gif": "1.6.0", + "@jimp/js-jpeg": "1.6.0", + "@jimp/js-png": "1.6.0", + "@jimp/js-tiff": "1.6.0", + "@jimp/plugin-blit": "1.6.0", + "@jimp/plugin-blur": "1.6.0", + "@jimp/plugin-circle": "1.6.0", + "@jimp/plugin-color": "1.6.0", + "@jimp/plugin-contain": "1.6.0", + "@jimp/plugin-cover": "1.6.0", + "@jimp/plugin-crop": "1.6.0", + "@jimp/plugin-displace": "1.6.0", + "@jimp/plugin-dither": "1.6.0", + "@jimp/plugin-fisheye": "1.6.0", + "@jimp/plugin-flip": "1.6.0", + "@jimp/plugin-hash": "1.6.0", + "@jimp/plugin-mask": "1.6.0", + "@jimp/plugin-print": "1.6.0", + "@jimp/plugin-quantize": "1.6.0", + "@jimp/plugin-resize": "1.6.0", + "@jimp/plugin-rotate": "1.6.0", + "@jimp/plugin-threshold": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0" }, "engines": { - "node": ">= 8" + "node": ">=18" } }, - "node_modules/minipass-collect/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "node_modules/jpeg-js": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", + "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==", "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "license": "BSD-3-Clause" }, - "node_modules/minipass-fetch": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", - "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true, - "license": "MIT", - "dependencies": { - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" - } + "license": "MIT" }, - "node_modules/minipass-fetch/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" + "argparse": "^2.0.1" }, - "engines": { - "node": ">=8" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "node_modules/js2xmlparser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz", + "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==", "dev": true, - "license": "ISC", + "license": "Apache-2.0", "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" + "xmlcreate": "^2.0.4" } }, - "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==", + "node_modules/jsdoc": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-4.0.5.tgz", + "integrity": "sha512-P4C6MWP9yIlMiK8nwoZvxN84vb6MsnXcHuy7XzVOvQoCizWX5JFCBsWIIWKXBltpoRZXddUOVQmCTOZt9yDj9g==", "dev": true, - "license": "ISC", + "license": "Apache-2.0", "dependencies": { - "yallist": "^4.0.0" + "@babel/parser": "^7.20.15", + "@jsdoc/salty": "^0.2.1", + "@types/markdown-it": "^14.1.1", + "bluebird": "^3.7.2", + "catharsis": "^0.9.0", + "escape-string-regexp": "^2.0.0", + "js2xmlparser": "^4.0.2", + "klaw": "^3.0.0", + "markdown-it": "^14.1.0", + "markdown-it-anchor": "^8.6.7", + "marked": "^4.0.10", + "mkdirp": "^1.0.4", + "requizzle": "^0.2.3", + "strip-json-comments": "^3.1.0", + "underscore": "~1.13.2" + }, + "bin": { + "jsdoc": "jsdoc.js" }, "engines": { - "node": ">=8" + "node": ">=12.0.0" } }, - "node_modules/minipass-json-stream": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.2.tgz", - "integrity": "sha512-myxeeTm57lYs8pH2nxPzmEEg8DGIgW+9mv6D4JZD2pa81I/OBjeU7PtICXV6c9eRGTA5JMDsuIPUZRCyBMYNhg==", + "node_modules/jsdoc-type-pratt-parser": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-6.10.0.tgz", + "integrity": "sha512-+LexoTRyYui5iOhJGn13N9ZazL23nAHGkXsa1p/C8yeq79WRfLBag6ZZ0FQG2aRoc9yfo59JT9EYCQonOkHKkQ==", "dev": true, "license": "MIT", - "dependencies": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" + "engines": { + "node": ">=20.0.0" } }, - "node_modules/minipass-json-stream/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "node_modules/jsdoc/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": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, + "license": "MIT", "engines": { "node": ">=8" } }, - "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==", + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "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==", + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" }, - "node_modules/minipass-sized/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" + "json-buffer": "3.0.1" } }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "node_modules/klaw": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", + "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==", "dev": true, "license": "MIT", "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" + "graceful-fs": "^4.1.9" } }, - "node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, "engines": { - "node": ">=8" + "node": ">= 0.8.0" } }, - "node_modules/mitt": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", - "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" + "dependencies": { + "p-locate": "^5.0.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true, "license": "MIT" }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", "dev": true, "license": "MIT" }, - "node_modules/negotiator": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", - "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } + "license": "MIT" }, - "node_modules/netmask": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", - "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, - "license": "MIT", + "license": "ISC", "engines": { - "node": ">= 0.4.0" + "node": ">=12" } }, - "node_modules/node-forge": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.2.tgz", - "integrity": "sha512-6xKiQ+cph9KImrRh0VsjH2d8/GXA4FIMlgU4B757iI1ApvcyA9VlouP0yZJha01V+huImO+kKMU7ih+2+E14fw==", + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", "dev": true, - "license": "(BSD-3-Clause OR GPL-2.0)", - "engines": { - "node": ">= 6.13.0" + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" } }, - "node_modules/node-gyp": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz", - "integrity": "sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==", + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", "dev": true, "license": "MIT", "dependencies": { - "env-paths": "^2.2.0", - "exponential-backoff": "^3.1.1", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^10.0.3", - "nopt": "^6.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" }, "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": "^12.13 || ^14.13 || >=16" + "markdown-it": "bin/markdown-it.mjs" } }, - "node_modules/node-releases": { - "version": "2.0.27", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", - "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "node_modules/markdown-it-anchor": { + "version": "8.6.7", + "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz", + "integrity": "sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==", "dev": true, - "license": "MIT" + "license": "Unlicense", + "peerDependencies": { + "@types/markdown-it": "*", + "markdown-it": "*" + } }, - "node_modules/node-watch": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/node-watch/-/node-watch-0.7.3.tgz", - "integrity": "sha512-3l4E8uMPY1HdMMryPRUAl+oIHtXtyiTlIiESNSVSNxcPfzAFzeTbXFQkZfAwBbo0B1qMSG8nUABx+Gd+YrbKrQ==", + "node_modules/markdown-it/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "engines": { - "node": ">=6" + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/nopt": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", - "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "node_modules/marked": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", "dev": true, - "license": "ISC", - "dependencies": { - "abbrev": "^1.0.0" - }, + "license": "MIT", "bin": { - "nopt": "bin/nopt.js" + "marked": "bin/marked.js" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 12" } }, - "node_modules/normalize-package-data": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", - "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^6.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 0.4" } }, - "node_modules/npm-bundled": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.1.tgz", - "integrity": "sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==", + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", "dev": true, - "license": "ISC", - "dependencies": { - "npm-normalize-package-bin": "^3.0.0" - }, + "license": "MIT" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 0.6" } }, - "node_modules/npm-install-checks": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", - "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "semver": "^7.1.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-normalize-package-bin": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", - "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true, - "license": "ISC", + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 0.6" } }, - "node_modules/npm-package-arg": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", - "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", + "node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", "dev": true, - "license": "ISC", - "dependencies": { - "hosted-git-info": "^6.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" + "license": "MIT", + "bin": { + "mime": "cli.js" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=10.0.0" } }, - "node_modules/npm-packlist": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", - "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, - "license": "ISC", - "dependencies": { - "ignore-walk": "^6.0.0" - }, + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 0.6" } }, - "node_modules/npm-pick-manifest": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.2.tgz", - "integrity": "sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg==", + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "npm-install-checks": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0", - "npm-package-arg": "^10.0.0", - "semver": "^7.3.5" + "mime-db": "1.52.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 0.6" } }, - "node_modules/npm-registry-fetch": { - "version": "14.0.5", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", - "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", "dependencies": { - "make-fetch-happen": "^11.0.0", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^10.0.0", - "proc-log": "^3.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "*" } }, - "node_modules/npm-registry-fetch/node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", "dev": true, - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } + "license": "MIT" }, - "node_modules/npm-registry-fetch/node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, "license": "MIT", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "bin": { + "mkdirp": "bin/cmd.js" }, "engines": { - "node": ">= 6" + "node": ">=10" } }, - "node_modules/npm-registry-fetch/node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/napi-postinstall": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", + "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", "dev": true, "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" + "bin": { + "napi-postinstall": "lib/cli.js" }, "engines": { - "node": ">= 6" + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" } }, - "node_modules/npm-registry-fetch/node_modules/make-fetch-happen": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", - "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, - "license": "ISC", - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - }, + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 0.6" } }, - "node_modules/npm-registry-fetch/node_modules/minipass-fetch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", - "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", "dev": true, "license": "MIT", - "dependencies": { - "minipass": "^7.0.3", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" + "node": ">= 0.4.0" } }, - "node_modules/npm-registry-fetch/node_modules/minipass-fetch/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "node_modules/node-forge": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.3.tgz", + "integrity": "sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==", "dev": true, - "license": "ISC", + "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">= 6.13.0" } }, - "node_modules/npm-registry-fetch/node_modules/socks-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "node_modules/node-releases": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, - "engines": { - "node": ">= 10" - } + "license": "MIT" }, - "node_modules/npmlog": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", - "deprecated": "This package is no longer supported.", + "node_modules/node-watch": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/node-watch/-/node-watch-0.7.3.tgz", + "integrity": "sha512-3l4E8uMPY1HdMMryPRUAl+oIHtXtyiTlIiESNSVSNxcPfzAFzeTbXFQkZfAwBbo0B1qMSG8nUABx+Gd+YrbKrQ==", "dev": true, - "license": "ISC", - "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - }, + "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=6" } }, "node_modules/object-assign": { @@ -7014,90 +4554,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.values": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", - "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/omggif": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", @@ -7146,24 +4602,6 @@ "node": ">= 0.8.0" } }, - "node_modules/own-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", - "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.6", - "object-keys": "^1.1.1", - "safe-push-apply": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -7196,22 +4634,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/pac-proxy-agent": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz", @@ -7246,46 +4668,6 @@ "node": ">= 14" } }, - "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": "15.2.0", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.2.0.tgz", - "integrity": "sha512-rJVZeIwHTUta23sIZgEIM62WYwbmGbThdbnkt81ravBplQv+HjyroqnLRNH2+sLJHcGZmLRmhPwACqhfTcOmnA==", - "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/git": "^4.0.0", - "@npmcli/installed-package-contents": "^2.0.1", - "@npmcli/promise-spawn": "^6.0.1", - "@npmcli/run-script": "^6.0.0", - "cacache": "^17.0.0", - "fs-minipass": "^3.0.0", - "minipass": "^5.0.0", - "npm-package-arg": "^10.0.0", - "npm-packlist": "^7.0.0", - "npm-pick-manifest": "^8.0.0", - "npm-registry-fetch": "^14.0.0", - "proc-log": "^3.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^6.0.0", - "read-package-json-fast": "^3.0.0", - "sigstore": "^1.3.0", - "ssri": "^10.0.0", - "tar": "^6.1.11" - }, - "bin": { - "pacote": "lib/bin.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", @@ -7387,16 +4769,6 @@ "node": ">=8" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -7414,30 +4786,6 @@ "dev": true, "license": "MIT" }, - "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/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/path-to-regexp": { "version": "0.1.12", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", @@ -7509,16 +4857,6 @@ "node": ">=14.19.0" } }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -7529,16 +4867,6 @@ "node": ">= 0.8.0" } }, - "node_modules/proc-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -7559,27 +4887,6 @@ "node": ">=0.4.0" } }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "dev": true, - "license": "ISC" - }, - "node_modules/promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -7694,13 +5001,13 @@ } }, "node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", + "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">=0.6" @@ -7710,178 +5017,57 @@ } }, "node_modules/qunit": { - "version": "2.24.3", - "resolved": "https://registry.npmjs.org/qunit/-/qunit-2.24.3.tgz", - "integrity": "sha512-JTHwSfHf2Cw8TqusZo2tT4F9d+XA/pp/veoxUDiPNHtB1Wc1VPctiHHIv6HA3vrXNOBu9LSzFM7YU2OV9Gz4vQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "commander": "7.2.0", - "node-watch": "0.7.3", - "tiny-glob": "0.2.9" - }, - "bin": { - "qunit": "bin/qunit.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-body/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-package-json": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.4.tgz", - "integrity": "sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw==", - "deprecated": "This package is no longer supported. Please use @npmcli/package-json instead.", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^10.2.2", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^5.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/read-package-json-fast": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", - "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", - "dev": true, - "license": "ISC", - "dependencies": { - "json-parse-even-better-errors": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/read-package-json-fast/node_modules/json-parse-even-better-errors": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", - "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/read-package-json/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/read-package-json/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "version": "2.25.0", + "resolved": "https://registry.npmjs.org/qunit/-/qunit-2.25.0.tgz", + "integrity": "sha512-MONPKgjavgTqArCwZOEz8nEMbA19zNXIp5ZOW9rPYj5cbgQp0fiI36c9dPTSzTRRzx+KcfB5eggYB/ENqxi0+w==", "dev": true, - "license": "ISC", + "license": "MIT", "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" + "commander": "7.2.0", + "node-watch": "0.7.3", + "tiny-glob": "0.2.9" }, "bin": { - "glob": "dist/esm/bin.mjs" + "qunit": "bin/qunit.js" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": ">=10" } }, - "node_modules/read-package-json/node_modules/json-parse-even-better-errors": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", - "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, "license": "MIT", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "dependencies": { + "safe-buffer": "^5.1.0" } }, - "node_modules/read-package-json/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, + "license": "MIT", "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">= 0.6" } }, - "node_modules/read-package-json/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "node_modules/raw-body": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", "dev": true, - "license": "ISC", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" + }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">= 0.8" } }, "node_modules/readable-stream": { @@ -7918,50 +5104,6 @@ "url": "https://github.com/sponsors/Borewit" } }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", - "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.1", - "which-builtin-type": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", - "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -8026,31 +5168,14 @@ "node": ">=4" } }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, "node_modules/rollup": { @@ -8059,7 +5184,6 @@ "integrity": "sha512-3nk8Y3a9Ea8szgKhinMlGMhGMw89mqule3KWczxhIzqudyHdCIOHw8WJlj/r329fACjKLEh13ZSk7oE22kyeIw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/estree": "1.0.8" }, @@ -8096,26 +5220,6 @@ "fsevents": "~2.3.2" } }, - "node_modules/rollup-plugin-filesize": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-filesize/-/rollup-plugin-filesize-10.0.0.tgz", - "integrity": "sha512-JAYYhzCcmGjmCzo3LEHSDE3RAPHKIeBdpqRhiyZSv5o/3wFhktUOzYAWg/uUKyEu5dEaVaql6UOmaqHx1qKrZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.8", - "boxen": "^5.0.0", - "brotli-size": "4.0.0", - "colors": "1.4.0", - "filesize": "^6.1.0", - "gzip-size": "^6.0.0", - "pacote": "^15.1.1", - "terser": "^5.6.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, "node_modules/rxjs": { "version": "7.8.2", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", @@ -8126,26 +5230,6 @@ "tslib": "^2.1.0" } }, - "node_modules/safe-array-concat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", - "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "has-symbols": "^1.1.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -8167,41 +5251,6 @@ ], "license": "MIT" }, - "node_modules/safe-push-apply": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", - "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -8210,11 +5259,11 @@ "license": "MIT" }, "node_modules/sax": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", - "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.3.tgz", + "integrity": "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==", "dev": true, - "license": "ISC" + "license": "BlueOak-1.0.0" }, "node_modules/secure-compare": { "version": "3.0.1", @@ -8251,25 +5300,25 @@ } }, "node_modules/send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", "dev": true, "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", "mime": "1.6.0", "ms": "2.1.3", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "range-parser": "~1.2.1", - "statuses": "2.0.1" + "statuses": "~2.0.2" }, "engines": { "node": ">= 0.8.0" @@ -8292,16 +5341,6 @@ "dev": true, "license": "MIT" }, - "node_modules/send/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/send/node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -8412,16 +5451,16 @@ } }, "node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", "dev": true, "license": "MIT", "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.19.0" + "send": "~0.19.1" }, "engines": { "node": ">= 0.8.0" @@ -8477,62 +5516,6 @@ "node": ">=18" } }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true, - "license": "ISC" - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", - "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -8620,175 +5603,36 @@ "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/sigstore": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-1.9.0.tgz", - "integrity": "sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/bundle": "^1.1.0", - "@sigstore/protobuf-specs": "^0.2.0", - "@sigstore/sign": "^1.0.0", - "@sigstore/tuf": "^1.0.3", - "make-fetch-happen": "^11.0.1" - }, - "bin": { - "sigstore": "bin/sigstore.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/sigstore/node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/sigstore/node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/sigstore/node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/sigstore/node_modules/make-fetch-happen": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", - "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", - "dev": true, - "license": "ISC", - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/sigstore/node_modules/minipass-fetch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", - "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", - "dev": true, - "license": "MIT", - "dependencies": { - "minipass": "^7.0.3", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 0.4" }, - "optionalDependencies": { - "encoding": "^0.1.13" - } - }, - "node_modules/sigstore/node_modules/minipass-fetch/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/sigstore/node_modules/socks-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", "dev": true, "license": "MIT", "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" }, "engines": { - "node": ">= 10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/simple-xml-to-json": { @@ -8870,17 +5714,6 @@ "source-map": "^0.6.0" } }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, "node_modules/spdx-exceptions": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", @@ -8889,9 +5722,9 @@ "license": "CC-BY-3.0" }, "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "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": { @@ -8906,53 +5739,26 @@ "dev": true, "license": "CC0-1.0" }, - "node_modules/ssri": { - "version": "10.0.6", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", - "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/ssri/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "node_modules/stable-hash-x": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/stable-hash-x/-/stable-hash-x-0.2.0.tgz", + "integrity": "sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==", "dev": true, - "license": "ISC", + "license": "MIT", "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=12.0.0" } }, "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" } }, - "node_modules/stop-iteration-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", - "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "internal-slot": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/streamx": { "version": "2.23.0", "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz", @@ -8990,81 +5796,6 @@ "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/string.prototype.trim": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-data-property": "^1.1.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-object-atoms": "^1.0.0", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -9078,30 +5809,6 @@ "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-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -9162,24 +5869,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/tar": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", - "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", - "dev": true, - "license": "ISC", - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/tar-fs": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.1.tgz", @@ -9207,36 +5896,10 @@ "streamx": "^2.15.0" } }, - "node_modules/tar/node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/tar/node_modules/fs-minipass/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/terser": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.0.tgz", - "integrity": "sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==", + "version": "5.44.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.1.tgz", + "integrity": "sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -9282,212 +5945,72 @@ }, "node_modules/tinycolor2": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", - "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/to-valid-identifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-valid-identifier/-/to-valid-identifier-1.0.0.tgz", - "integrity": "sha512-41wJyvKep3yT2tyPqX/4blcfybknGB4D+oETKLs7Q76UiPqRpUJK3hr1nxelyYO0PHKVzJwlu0aCeEAsGI6rpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sindresorhus/base62": "^1.0.0", - "reserved-identifiers": "^1.0.0" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/token-types": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz", - "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true, - "license": "MIT", - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD" - }, - "node_modules/tuf-js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-1.1.7.tgz", - "integrity": "sha512-i3P9Kgw3ytjELUfpuKVDNBJvk4u5bXL6gskv572mcevPbSKCV3zt3djhmlEQ65yERjIbOSncy7U4cQJaB1CBCg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@tufjs/models": "1.0.4", - "debug": "^4.3.4", - "make-fetch-happen": "^11.1.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/tuf-js/node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/tuf-js/node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", + "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==", + "dev": true, + "license": "MIT" }, - "node_modules/tuf-js/node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "node_modules/to-valid-identifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-valid-identifier/-/to-valid-identifier-1.0.0.tgz", + "integrity": "sha512-41wJyvKep3yT2tyPqX/4blcfybknGB4D+oETKLs7Q76UiPqRpUJK3hr1nxelyYO0PHKVzJwlu0aCeEAsGI6rpw==", "dev": true, "license": "MIT", "dependencies": { - "agent-base": "6", - "debug": "4" + "@sindresorhus/base62": "^1.0.0", + "reserved-identifiers": "^1.0.0" }, "engines": { - "node": ">= 6" + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/tuf-js/node_modules/make-fetch-happen": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", - "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, - "license": "ISC", - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - }, + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=0.6" } }, - "node_modules/tuf-js/node_modules/minipass-fetch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", - "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", + "node_modules/token-types": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz", + "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", "dev": true, "license": "MIT", "dependencies": { - "minipass": "^7.0.3", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=10" }, - "optionalDependencies": { - "encoding": "^0.1.13" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" } }, - "node_modules/tuf-js/node_modules/minipass-fetch/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" + "license": "MIT", + "bin": { + "tree-kill": "cli.js" } }, - "node_modules/tuf-js/node_modules/socks-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, - "engines": { - "node": ">= 10" - } + "license": "0BSD" }, "node_modules/type-check": { "version": "0.4.0", @@ -9502,19 +6025,6 @@ "node": ">= 0.8.0" } }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -9529,84 +6039,6 @@ "node": ">= 0.6" } }, - "node_modules/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", - "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", - "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.15", - "reflect.getprototypeof": "^1.0.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", - "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0", - "reflect.getprototypeof": "^1.0.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/typed-query-selector": { "version": "2.12.0", "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.0.tgz", @@ -9621,25 +6053,6 @@ "dev": true, "license": "MIT" }, - "node_modules/unbox-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-bigints": "^1.0.2", - "has-symbols": "^1.1.0", - "which-boxed-primitive": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/underscore": { "version": "1.13.7", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz", @@ -9647,32 +6060,6 @@ "dev": true, "license": "MIT" }, - "node_modules/unique-filename": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", - "dev": true, - "license": "ISC", - "dependencies": { - "unique-slug": "^4.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/unique-slug": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -9683,10 +6070,45 @@ "node": ">= 0.8" } }, + "node_modules/unrs-resolver": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", + "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "napi-postinstall": "^0.3.0" + }, + "funding": { + "url": "https://opencollective.com/unrs-resolver" + }, + "optionalDependencies": { + "@unrs/resolver-binding-android-arm-eabi": "1.11.1", + "@unrs/resolver-binding-android-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-x64": "1.11.1", + "@unrs/resolver-binding-freebsd-x64": "1.11.1", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", + "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-musl": "1.11.1", + "@unrs/resolver-binding-wasm32-wasi": "1.11.1", + "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", + "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", + "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" + } + }, "node_modules/update-browserslist-db": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz", - "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", "dev": true, "funding": [ { @@ -9734,13 +6156,6 @@ "pako": "^1.0.11" } }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true, - "license": "MIT" - }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -9751,27 +6166,6 @@ "node": ">= 0.4.0" } }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/validate-npm-package-name": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", - "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -9805,118 +6199,6 @@ "node": ">= 8" } }, - "node_modules/which-boxed-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", - "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-bigint": "^1.1.0", - "is-boolean-object": "^1.2.1", - "is-number-object": "^1.1.1", - "is-string": "^1.1.1", - "is-symbol": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", - "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", - "is-async-function": "^2.0.0", - "is-date-object": "^1.1.0", - "is-finalizationregistry": "^1.1.0", - "is-generator-function": "^1.0.10", - "is-regex": "^1.2.1", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.1.0", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "node_modules/widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "dev": true, - "license": "MIT", - "dependencies": { - "string-width": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", @@ -9945,25 +6227,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/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -10041,13 +6304,6 @@ "node": ">=10" } }, - "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/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", diff --git a/package.json b/package.json index c529453d42abe9..a50b06f71be816 100644 --- a/package.json +++ b/package.json @@ -101,7 +101,7 @@ "eslint-config-mdcs": "^5.0.0", "eslint-plugin-compat": "^6.0.0", "eslint-plugin-html": "^8.1.3", - "eslint-plugin-import": "^2.32.0", + "eslint-plugin-import-x": "^4.6.1", "eslint-plugin-jsdoc": "^61.4.1", "globals": "^16.5.0", "jimp": "^1.6.0", From 357fd6eac13c20b3892baf2309edc794e52de164 Mon Sep 17 00:00:00 2001 From: mrdoob Date: Fri, 2 Jan 2026 21:14:37 +0900 Subject: [PATCH 2/7] Removed eslint-plugin-import-x. (#32653) --- eslint.config.js | 2 - package-lock.json | 513 ---------------------------------------------- package.json | 1 - 3 files changed, 516 deletions(-) diff --git a/eslint.config.js b/eslint.config.js index 0177793c500cb9..6726dfd2f92bab 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -3,7 +3,6 @@ import globals from 'globals'; import mdcs from 'eslint-config-mdcs'; import compat from 'eslint-plugin-compat'; import html from 'eslint-plugin-html'; -import importPlugin from 'eslint-plugin-import-x'; import jsdoc from 'eslint-plugin-jsdoc'; export default [ @@ -35,7 +34,6 @@ export default [ files: [ '**/*.js', '**/*.html' ], plugins: { html, - import: importPlugin, compat, jsdoc }, diff --git a/package-lock.json b/package-lock.json index c61f02c1b00acd..602823c48b2a36 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,6 @@ "eslint-config-mdcs": "^5.0.0", "eslint-plugin-compat": "^6.0.0", "eslint-plugin-html": "^8.1.3", - "eslint-plugin-import-x": "^4.6.1", "eslint-plugin-jsdoc": "^61.4.1", "globals": "^16.5.0", "jimp": "^1.6.0", @@ -95,40 +94,6 @@ "node": ">=6.9.0" } }, - "node_modules/@emnapi/core": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.7.1.tgz", - "integrity": "sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.1.0", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.1.tgz", - "integrity": "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", - "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/@es-joy/jsdoccomment": { "version": "0.76.0", "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.76.0.tgz", @@ -365,29 +330,6 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@isaacs/balanced-match": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@isaacs/brace-expansion": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", - "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@isaacs/balanced-match": "^4.0.1" - }, - "engines": { - "node": "20 || >=22" - } - }, "node_modules/@jimp/core": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/@jimp/core/-/core-1.6.0.tgz", @@ -921,19 +863,6 @@ "dev": true, "license": "CC0-1.0" }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", - "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "^1.4.3", - "@emnapi/runtime": "^1.4.3", - "@tybys/wasm-util": "^0.10.0" - } - }, "node_modules/@puppeteer/browsers": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.11.0.tgz", @@ -1362,17 +1291,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", - "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/@types/estree": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", @@ -1461,275 +1379,6 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@unrs/resolver-binding-android-arm-eabi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", - "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-android-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", - "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", - "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", - "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-freebsd-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", - "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", - "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", - "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", - "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", - "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", - "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", - "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", - "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", - "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", - "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", - "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-wasm32-wasi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", - "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@napi-rs/wasm-runtime": "^0.2.11" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", - "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", - "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@unrs/resolver-binding-win32-x64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", - "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, "node_modules/abort-controller": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", @@ -2960,31 +2609,6 @@ "dev": true, "license": "MIT" }, - "node_modules/eslint-import-context": { - "version": "0.1.9", - "resolved": "https://registry.npmjs.org/eslint-import-context/-/eslint-import-context-0.1.9.tgz", - "integrity": "sha512-K9Hb+yRaGAGUbwjhFNHvSmmkZs9+zbuoe3kFQ4V1wYjrepUFYM2dZAfNtjbbj3qsPfUfsA68Bx/ICWQMi+C8Eg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-tsconfig": "^4.10.1", - "stable-hash-x": "^0.2.0" - }, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-import-context" - }, - "peerDependencies": { - "unrs-resolver": "^1.0.0" - }, - "peerDependenciesMeta": { - "unrs-resolver": { - "optional": true - } - } - }, "node_modules/eslint-plugin-compat": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-6.0.2.tgz", @@ -3034,59 +2658,6 @@ "node": ">=16.0.0" } }, - "node_modules/eslint-plugin-import-x": { - "version": "4.16.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.16.1.tgz", - "integrity": "sha512-vPZZsiOKaBAIATpFE2uMI4w5IRwdv/FpQ+qZZMR4E+PeOcM4OeoEbqxRMnywdxP19TyB/3h6QBB0EWon7letSQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "^8.35.0", - "comment-parser": "^1.4.1", - "debug": "^4.4.1", - "eslint-import-context": "^0.1.9", - "is-glob": "^4.0.3", - "minimatch": "^9.0.3 || ^10.0.1", - "semver": "^7.7.2", - "stable-hash-x": "^0.2.0", - "unrs-resolver": "^1.9.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-plugin-import-x" - }, - "peerDependencies": { - "@typescript-eslint/utils": "^8.0.0", - "eslint": "^8.57.0 || ^9.0.0", - "eslint-import-resolver-node": "*" - }, - "peerDependenciesMeta": { - "@typescript-eslint/utils": { - "optional": true - }, - "eslint-import-resolver-node": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-import-x/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/eslint-plugin-jsdoc": { "version": "61.5.0", "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-61.5.0.tgz", @@ -3615,19 +3186,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-tsconfig": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.0.tgz", - "integrity": "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, "node_modules/get-uri": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz", @@ -4454,22 +4012,6 @@ "dev": true, "license": "MIT" }, - "node_modules/napi-postinstall": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", - "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", - "dev": true, - "license": "MIT", - "bin": { - "napi-postinstall": "lib/cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/napi-postinstall" - } - }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -5168,16 +4710,6 @@ "node": ">=4" } }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } - }, "node_modules/rollup": { "version": "4.54.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.54.0.tgz", @@ -5739,16 +5271,6 @@ "dev": true, "license": "CC0-1.0" }, - "node_modules/stable-hash-x": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/stable-hash-x/-/stable-hash-x-0.2.0.tgz", - "integrity": "sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - } - }, "node_modules/statuses": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", @@ -6070,41 +5592,6 @@ "node": ">= 0.8" } }, - "node_modules/unrs-resolver": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", - "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "napi-postinstall": "^0.3.0" - }, - "funding": { - "url": "https://opencollective.com/unrs-resolver" - }, - "optionalDependencies": { - "@unrs/resolver-binding-android-arm-eabi": "1.11.1", - "@unrs/resolver-binding-android-arm64": "1.11.1", - "@unrs/resolver-binding-darwin-arm64": "1.11.1", - "@unrs/resolver-binding-darwin-x64": "1.11.1", - "@unrs/resolver-binding-freebsd-x64": "1.11.1", - "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", - "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", - "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", - "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", - "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", - "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-x64-musl": "1.11.1", - "@unrs/resolver-binding-wasm32-wasi": "1.11.1", - "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", - "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", - "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" - } - }, "node_modules/update-browserslist-db": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", diff --git a/package.json b/package.json index a50b06f71be816..6ed4a7a146f8a8 100644 --- a/package.json +++ b/package.json @@ -101,7 +101,6 @@ "eslint-config-mdcs": "^5.0.0", "eslint-plugin-compat": "^6.0.0", "eslint-plugin-html": "^8.1.3", - "eslint-plugin-import-x": "^4.6.1", "eslint-plugin-jsdoc": "^61.4.1", "globals": "^16.5.0", "jimp": "^1.6.0", From 8649c37f566bad730c8e51076738dda727f9b428 Mon Sep 17 00:00:00 2001 From: leonmetthez <62622644+leonmetthez@users.noreply.github.com> Date: Fri, 2 Jan 2026 13:43:30 +0100 Subject: [PATCH 3/7] GLTFLoader and KTX2Loader: Add a sanity check for navigator.userAgent before using it. (#32633) --- examples/jsm/loaders/GLTFLoader.js | 2 +- examples/jsm/loaders/KTX2Loader.js | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/jsm/loaders/GLTFLoader.js b/examples/jsm/loaders/GLTFLoader.js index cf2d7c3c90e6b2..ae863778b3cd79 100644 --- a/examples/jsm/loaders/GLTFLoader.js +++ b/examples/jsm/loaders/GLTFLoader.js @@ -2663,7 +2663,7 @@ class GLTFParser { let isFirefox = false; let firefoxVersion = - 1; - if ( typeof navigator !== 'undefined' ) { + if ( typeof navigator !== 'undefined' && typeof navigator.userAgent !== 'undefined' ) { const userAgent = navigator.userAgent; diff --git a/examples/jsm/loaders/KTX2Loader.js b/examples/jsm/loaders/KTX2Loader.js index 9ffc1c6336269d..ec220c7f8bd38a 100644 --- a/examples/jsm/loaders/KTX2Loader.js +++ b/examples/jsm/loaders/KTX2Loader.js @@ -252,6 +252,7 @@ class KTX2Loader extends Loader { }; if ( typeof navigator !== 'undefined' && + typeof navigator.platform !== 'undefined' && typeof navigator.userAgent !== 'undefined' && navigator.platform.indexOf( 'Linux' ) >= 0 && navigator.userAgent.indexOf( 'Firefox' ) >= 0 && this.workerConfig.astcSupported && this.workerConfig.etc2Supported && this.workerConfig.bptcSupported && this.workerConfig.dxtSupported ) { From 3ada1b3cc205533d343598feecee6b80c90d6578 Mon Sep 17 00:00:00 2001 From: mrdoob Date: Fri, 2 Jan 2026 22:43:39 +0900 Subject: [PATCH 4/7] Puppeteer: Replaced jimp with jpeg-js and pngjs. (#32652) Co-authored-by: Claude Opus 4.5 --- package-lock.json | 930 +----------------------------------------- package.json | 6 +- test/e2e/image.js | 148 +++++++ test/e2e/puppeteer.js | 20 +- 4 files changed, 181 insertions(+), 923 deletions(-) create mode 100644 test/e2e/image.js diff --git a/package-lock.json b/package-lock.json index 602823c48b2a36..ef0e91adf9cf28 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,10 +19,11 @@ "eslint-plugin-html": "^8.1.3", "eslint-plugin-jsdoc": "^61.4.1", "globals": "^16.5.0", - "jimp": "^1.6.0", + "jpeg-js": "^0.4.4", "jsdoc": "^4.0.5", "magic-string": "^0.30.0", "pixelmatch": "^7.0.0", + "pngjs": "^7.0.0", "puppeteer": "^24.25.0", "qunit": "^2.19.4", "rollup": "^4.6.0", @@ -330,469 +331,6 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@jimp/core": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/core/-/core-1.6.0.tgz", - "integrity": "sha512-EQQlKU3s9QfdJqiSrZWNTxBs3rKXgO2W+GxNXDtwchF3a4IqxDheFX1ti+Env9hdJXDiYLp2jTRjlxhPthsk8w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jimp/file-ops": "1.6.0", - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0", - "await-to-js": "^3.0.0", - "exif-parser": "^0.1.12", - "file-type": "^16.0.0", - "mime": "3" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@jimp/diff": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/diff/-/diff-1.6.0.tgz", - "integrity": "sha512-+yUAQ5gvRC5D1WHYxjBHZI7JBRusGGSLf8AmPRPCenTzh4PA+wZ1xv2+cYqQwTfQHU5tXYOhA0xDytfHUf1Zyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jimp/plugin-resize": "1.6.0", - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0", - "pixelmatch": "^5.3.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@jimp/diff/node_modules/pixelmatch": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-5.3.0.tgz", - "integrity": "sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q==", - "dev": true, - "license": "ISC", - "dependencies": { - "pngjs": "^6.0.0" - }, - "bin": { - "pixelmatch": "bin/pixelmatch" - } - }, - "node_modules/@jimp/diff/node_modules/pngjs": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", - "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.13.0" - } - }, - "node_modules/@jimp/file-ops": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/file-ops/-/file-ops-1.6.0.tgz", - "integrity": "sha512-Dx/bVDmgnRe1AlniRpCKrGRm5YvGmUwbDzt+MAkgmLGf+jvBT75hmMEZ003n9HQI/aPnm/YKnXjg/hOpzNCpHQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@jimp/js-bmp": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/js-bmp/-/js-bmp-1.6.0.tgz", - "integrity": "sha512-FU6Q5PC/e3yzLyBDXupR3SnL3htU7S3KEs4e6rjDP6gNEOXRFsWs6YD3hXuXd50jd8ummy+q2WSwuGkr8wi+Gw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jimp/core": "1.6.0", - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0", - "bmp-ts": "^1.0.9" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@jimp/js-gif": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/js-gif/-/js-gif-1.6.0.tgz", - "integrity": "sha512-N9CZPHOrJTsAUoWkWZstLPpwT5AwJ0wge+47+ix3++SdSL/H2QzyMqxbcDYNFe4MoI5MIhATfb0/dl/wmX221g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jimp/core": "1.6.0", - "@jimp/types": "1.6.0", - "gifwrap": "^0.10.1", - "omggif": "^1.0.10" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@jimp/js-jpeg": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/js-jpeg/-/js-jpeg-1.6.0.tgz", - "integrity": "sha512-6vgFDqeusblf5Pok6B2DUiMXplH8RhIKAryj1yn+007SIAQ0khM1Uptxmpku/0MfbClx2r7pnJv9gWpAEJdMVA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jimp/core": "1.6.0", - "@jimp/types": "1.6.0", - "jpeg-js": "^0.4.4" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@jimp/js-png": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/js-png/-/js-png-1.6.0.tgz", - "integrity": "sha512-AbQHScy3hDDgMRNfG0tPjL88AV6qKAILGReIa3ATpW5QFjBKpisvUaOqhzJ7Reic1oawx3Riyv152gaPfqsBVg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jimp/core": "1.6.0", - "@jimp/types": "1.6.0", - "pngjs": "^7.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@jimp/js-tiff": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/js-tiff/-/js-tiff-1.6.0.tgz", - "integrity": "sha512-zhReR8/7KO+adijj3h0ZQUOiun3mXUv79zYEAKvE0O+rP7EhgtKvWJOZfRzdZSNv0Pu1rKtgM72qgtwe2tFvyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jimp/core": "1.6.0", - "@jimp/types": "1.6.0", - "utif2": "^4.1.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@jimp/plugin-blit": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-1.6.0.tgz", - "integrity": "sha512-M+uRWl1csi7qilnSK8uxK4RJMSuVeBiO1AY0+7APnfUbQNZm6hCe0CCFv1Iyw1D/Dhb8ph8fQgm5mwM0eSxgVA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0", - "zod": "^3.23.8" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@jimp/plugin-blur": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-1.6.0.tgz", - "integrity": "sha512-zrM7iic1OTwUCb0g/rN5y+UnmdEsT3IfuCXCJJNs8SZzP0MkZ1eTvuwK9ZidCuMo4+J3xkzCidRwYXB5CyGZTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jimp/core": "1.6.0", - "@jimp/utils": "1.6.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@jimp/plugin-circle": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-1.6.0.tgz", - "integrity": "sha512-xt1Gp+LtdMKAXfDp3HNaG30SPZW6AQ7dtAtTnoRKorRi+5yCJjKqXRgkewS5bvj8DEh87Ko1ydJfzqS3P2tdWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jimp/types": "1.6.0", - "zod": "^3.23.8" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@jimp/plugin-color": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-1.6.0.tgz", - "integrity": "sha512-J5q8IVCpkBsxIXM+45XOXTrsyfblyMZg3a9eAo0P7VPH4+CrvyNQwaYatbAIamSIN1YzxmO3DkIZXzRjFSz1SA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jimp/core": "1.6.0", - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0", - "tinycolor2": "^1.6.0", - "zod": "^3.23.8" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@jimp/plugin-contain": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-1.6.0.tgz", - "integrity": "sha512-oN/n+Vdq/Qg9bB4yOBOxtY9IPAtEfES8J1n9Ddx+XhGBYT1/QTU/JYkGaAkIGoPnyYvmLEDqMz2SGihqlpqfzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jimp/core": "1.6.0", - "@jimp/plugin-blit": "1.6.0", - "@jimp/plugin-resize": "1.6.0", - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0", - "zod": "^3.23.8" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@jimp/plugin-cover": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-1.6.0.tgz", - "integrity": "sha512-Iow0h6yqSC269YUJ8HC3Q/MpCi2V55sMlbkkTTx4zPvd8mWZlC0ykrNDeAy9IJegrQ7v5E99rJwmQu25lygKLA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jimp/core": "1.6.0", - "@jimp/plugin-crop": "1.6.0", - "@jimp/plugin-resize": "1.6.0", - "@jimp/types": "1.6.0", - "zod": "^3.23.8" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@jimp/plugin-crop": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-1.6.0.tgz", - "integrity": "sha512-KqZkEhvs+21USdySCUDI+GFa393eDIzbi1smBqkUPTE+pRwSWMAf01D5OC3ZWB+xZsNla93BDS9iCkLHA8wang==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jimp/core": "1.6.0", - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0", - "zod": "^3.23.8" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@jimp/plugin-displace": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-1.6.0.tgz", - "integrity": "sha512-4Y10X9qwr5F+Bo5ME356XSACEF55485j5nGdiyJ9hYzjQP9nGgxNJaZ4SAOqpd+k5sFaIeD7SQ0Occ26uIng5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0", - "zod": "^3.23.8" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@jimp/plugin-dither": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-1.6.0.tgz", - "integrity": "sha512-600d1RxY0pKwgyU0tgMahLNKsqEcxGdbgXadCiVCoGd6V6glyCvkNrnnwC0n5aJ56Htkj88PToSdF88tNVZEEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jimp/types": "1.6.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@jimp/plugin-fisheye": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-1.6.0.tgz", - "integrity": "sha512-E5QHKWSCBFtpgZarlmN3Q6+rTQxjirFqo44ohoTjzYVrDI6B6beXNnPIThJgPr0Y9GwfzgyarKvQuQuqCnnfbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0", - "zod": "^3.23.8" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@jimp/plugin-flip": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-1.6.0.tgz", - "integrity": "sha512-/+rJVDuBIVOgwoyVkBjUFHtP+wmW0r+r5OQ2GpatQofToPVbJw1DdYWXlwviSx7hvixTWLKVgRWQ5Dw862emDg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jimp/types": "1.6.0", - "zod": "^3.23.8" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@jimp/plugin-hash": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-hash/-/plugin-hash-1.6.0.tgz", - "integrity": "sha512-wWzl0kTpDJgYVbZdajTf+4NBSKvmI3bRI8q6EH9CVeIHps9VWVsUvEyb7rpbcwVLWYuzDtP2R0lTT6WeBNQH9Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jimp/core": "1.6.0", - "@jimp/js-bmp": "1.6.0", - "@jimp/js-jpeg": "1.6.0", - "@jimp/js-png": "1.6.0", - "@jimp/js-tiff": "1.6.0", - "@jimp/plugin-color": "1.6.0", - "@jimp/plugin-resize": "1.6.0", - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0", - "any-base": "^1.1.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@jimp/plugin-mask": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-1.6.0.tgz", - "integrity": "sha512-Cwy7ExSJMZszvkad8NV8o/Z92X2kFUFM8mcDAhNVxU0Q6tA0op2UKRJY51eoK8r6eds/qak3FQkXakvNabdLnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jimp/types": "1.6.0", - "zod": "^3.23.8" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@jimp/plugin-print": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-1.6.0.tgz", - "integrity": "sha512-zarTIJi8fjoGMSI/M3Xh5yY9T65p03XJmPsuNet19K/Q7mwRU6EV2pfj+28++2PV2NJ+htDF5uecAlnGyxFN2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jimp/core": "1.6.0", - "@jimp/js-jpeg": "1.6.0", - "@jimp/js-png": "1.6.0", - "@jimp/plugin-blit": "1.6.0", - "@jimp/types": "1.6.0", - "parse-bmfont-ascii": "^1.0.6", - "parse-bmfont-binary": "^1.0.6", - "parse-bmfont-xml": "^1.1.6", - "simple-xml-to-json": "^1.2.2", - "zod": "^3.23.8" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@jimp/plugin-quantize": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-quantize/-/plugin-quantize-1.6.0.tgz", - "integrity": "sha512-EmzZ/s9StYQwbpG6rUGBCisc3f64JIhSH+ncTJd+iFGtGo0YvSeMdAd+zqgiHpfZoOL54dNavZNjF4otK+mvlg==", - "dev": true, - "license": "MIT", - "dependencies": { - "image-q": "^4.0.0", - "zod": "^3.23.8" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@jimp/plugin-resize": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-1.6.0.tgz", - "integrity": "sha512-uSUD1mqXN9i1SGSz5ov3keRZ7S9L32/mAQG08wUwZiEi5FpbV0K8A8l1zkazAIZi9IJzLlTauRNU41Mi8IF9fA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jimp/core": "1.6.0", - "@jimp/types": "1.6.0", - "zod": "^3.23.8" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@jimp/plugin-rotate": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-1.6.0.tgz", - "integrity": "sha512-JagdjBLnUZGSG4xjCLkIpQOZZ3Mjbg8aGCCi4G69qR+OjNpOeGI7N2EQlfK/WE8BEHOW5vdjSyglNqcYbQBWRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jimp/core": "1.6.0", - "@jimp/plugin-crop": "1.6.0", - "@jimp/plugin-resize": "1.6.0", - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0", - "zod": "^3.23.8" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@jimp/plugin-threshold": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-1.6.0.tgz", - "integrity": "sha512-M59m5dzLoHOVWdM41O8z9SyySzcDn43xHseOH0HavjsfQsT56GGCC4QzU1banJidbUrePhzoEdS42uFE8Fei8w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jimp/core": "1.6.0", - "@jimp/plugin-color": "1.6.0", - "@jimp/plugin-hash": "1.6.0", - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0", - "zod": "^3.23.8" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@jimp/types": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/types/-/types-1.6.0.tgz", - "integrity": "sha512-7UfRsiKo5GZTAATxm2qQ7jqmUXP0DxTArztllTcYdyw6Xi5oT4RaoXynVtCD4UyLK5gJgkZJcwonoijrhYFKfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "zod": "^3.23.8" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@jimp/utils": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-1.6.0.tgz", - "integrity": "sha512-gqFTGEosKbOkYF/WFj26jMHOI5OH2jeP1MmC/zbK6BF6VJBf8rIC5898dPfSzZEbSA0wbbV5slbntWVc5PKLFA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jimp/types": "1.6.0", - "tinycolor2": "^1.6.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", @@ -1275,14 +813,7 @@ }, "funding": { "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", - "dev": true, - "license": "MIT" + } }, "node_modules/@tootallnate/quickjs-emscripten": { "version": "0.23.0", @@ -1331,11 +862,14 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "16.9.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", - "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==", + "version": "25.0.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.3.tgz", + "integrity": "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "undici-types": "~7.16.0" + } }, "node_modules/@types/node-forge": { "version": "1.3.14", @@ -1379,19 +913,6 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dev": true, - "license": "MIT", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -1492,13 +1013,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/any-base": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", - "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==", - "dev": true, - "license": "MIT" - }, "node_modules/are-docs-informative": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", @@ -1546,16 +1060,6 @@ "node": ">=4" } }, - "node_modules/await-to-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/await-to-js/-/await-to-js-3.0.0.tgz", - "integrity": "sha512-zJAaP9zxTcvTHRlejau3ZOY4V7SRpiByf3/dxx2uyKxxor19tpmpV2QRsTKikckwhaPmr2dVpxxMr7jOCYVp5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/b4a": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.3.tgz", @@ -1675,27 +1179,6 @@ "bare-path": "^3.0.0" } }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "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/baseline-browser-mapping": { "version": "2.9.11", "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.11.tgz", @@ -1750,13 +1233,6 @@ "dev": true, "license": "MIT" }, - "node_modules/bmp-ts": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/bmp-ts/-/bmp-ts-1.0.9.tgz", - "integrity": "sha512-cTEHk2jLrPyi+12M3dhpEbnnPOsaZuq7C45ylbbQIiWgDFZq4UVYPEY5mlqjvsj/6gJv9qX5sa+ebDzLXT28Vw==", - "dev": true, - "license": "MIT" - }, "node_modules/body-parser": { "version": "1.20.4", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", @@ -1844,31 +1320,6 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "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", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "node_modules/buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", @@ -2812,26 +2263,6 @@ "node": ">= 0.6" } }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, "node_modules/events-universal": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", @@ -2842,12 +2273,6 @@ "bare-events": "^2.7.0" } }, - "node_modules/exif-parser": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", - "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==", - "dev": true - }, "node_modules/express": { "version": "4.22.1", "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", @@ -2984,24 +2409,6 @@ "node": ">=16.0.0" } }, - "node_modules/file-type": { - "version": "16.5.4", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", - "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "readable-web-to-node-stream": "^3.0.0", - "strtok3": "^6.2.4", - "token-types": "^4.1.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/file-type?sponsor=1" - } - }, "node_modules/finalhandler": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", @@ -3201,17 +2608,6 @@ "node": ">= 14" } }, - "node_modules/gifwrap": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.10.1.tgz", - "integrity": "sha512-2760b1vpJHNmLzZ/ubTtNnEx5WApN/PYWJvXvgS+tL1egTTthayFYIQQNi136FLEDcN/IyEY2EcGpIITD6eYUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "image-q": "^4.0.0", - "omggif": "^1.0.10" - } - }, "node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -3407,27 +2803,6 @@ "node": ">=0.10.0" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "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": "BSD-3-Clause" - }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -3438,16 +2813,6 @@ "node": ">= 4" } }, - "node_modules/image-q": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz", - "integrity": "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "16.9.1" - } - }, "node_modules/import-fresh": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", @@ -3572,45 +2937,6 @@ "dev": true, "license": "ISC" }, - "node_modules/jimp": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-1.6.0.tgz", - "integrity": "sha512-YcwCHw1kiqEeI5xRpDlPPBGL2EOpBKLwO4yIBJcXWHPj5PnA5urGq0jbyhM5KoNpypQ6VboSoxc9D8HyfvngSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jimp/core": "1.6.0", - "@jimp/diff": "1.6.0", - "@jimp/js-bmp": "1.6.0", - "@jimp/js-gif": "1.6.0", - "@jimp/js-jpeg": "1.6.0", - "@jimp/js-png": "1.6.0", - "@jimp/js-tiff": "1.6.0", - "@jimp/plugin-blit": "1.6.0", - "@jimp/plugin-blur": "1.6.0", - "@jimp/plugin-circle": "1.6.0", - "@jimp/plugin-color": "1.6.0", - "@jimp/plugin-contain": "1.6.0", - "@jimp/plugin-cover": "1.6.0", - "@jimp/plugin-crop": "1.6.0", - "@jimp/plugin-displace": "1.6.0", - "@jimp/plugin-dither": "1.6.0", - "@jimp/plugin-fisheye": "1.6.0", - "@jimp/plugin-flip": "1.6.0", - "@jimp/plugin-hash": "1.6.0", - "@jimp/plugin-mask": "1.6.0", - "@jimp/plugin-print": "1.6.0", - "@jimp/plugin-quantize": "1.6.0", - "@jimp/plugin-resize": "1.6.0", - "@jimp/plugin-rotate": "1.6.0", - "@jimp/plugin-threshold": "1.6.0", - "@jimp/types": "1.6.0", - "@jimp/utils": "1.6.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/jpeg-js": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", @@ -3937,16 +3263,16 @@ } }, "node_modules/mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, "license": "MIT", "bin": { "mime": "cli.js" }, "engines": { - "node": ">=10.0.0" + "node": ">=4" } }, "node_modules/mime-db": { @@ -4096,13 +3422,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/omggif": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", - "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==", - "dev": true, - "license": "MIT" - }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", @@ -4210,13 +3529,6 @@ "node": ">= 14" } }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true, - "license": "(MIT AND Zlib)" - }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -4230,31 +3542,6 @@ "node": ">=6" } }, - "node_modules/parse-bmfont-ascii": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", - "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==", - "dev": true, - "license": "MIT" - }, - "node_modules/parse-bmfont-binary": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", - "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==", - "dev": true, - "license": "MIT" - }, - "node_modules/parse-bmfont-xml": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.6.tgz", - "integrity": "sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "xml-parse-from-string": "^1.0.0", - "xml2js": "^0.5.0" - } - }, "node_modules/parse-imports-exports": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/parse-imports-exports/-/parse-imports-exports-0.2.4.tgz", @@ -4335,20 +3622,6 @@ "dev": true, "license": "MIT" }, - "node_modules/peek-readable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", - "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", @@ -4409,16 +3682,6 @@ "node": ">= 0.8.0" } }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, "node_modules/progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", @@ -4612,40 +3875,6 @@ "node": ">= 0.8" } }, - "node_modules/readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", - "dev": true, - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/readable-web-to-node-stream": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.4.tgz", - "integrity": "sha512-9nX56alTf5bwXQ3ZDipHJhusu9NTQJ/CVPtb/XHAJCXihZeitfJvIRS4GqQ/mfIoOE3IelHMrpayVrosdHBuLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "readable-stream": "^4.7.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -4790,13 +4019,6 @@ "dev": true, "license": "MIT" }, - "node_modules/sax": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.3.tgz", - "integrity": "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==", - "dev": true, - "license": "BlueOak-1.0.0" - }, "node_modules/secure-compare": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", @@ -4873,19 +4095,6 @@ "dev": true, "license": "MIT" }, - "node_modules/send/node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/serialize-javascript": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", @@ -5167,16 +4376,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/simple-xml-to-json": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/simple-xml-to-json/-/simple-xml-to-json-1.2.3.tgz", - "integrity": "sha512-kWJDCr9EWtZ+/EYYM5MareWj2cRnZGF93YDNpH4jQiHB+hBIZnfPFSQiVMzZOdk+zXWqTZ/9fTeQNu2DqeiudA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.12.2" - } - }, "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -5293,16 +4492,6 @@ "text-decoder": "^1.1.0" } }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -5344,24 +4533,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strtok3": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz", - "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@tokenizer/token": "^0.3.0", - "peek-readable": "^4.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, "node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -5465,13 +4636,6 @@ "globrex": "^0.1.2" } }, - "node_modules/tinycolor2": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", - "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==", - "dev": true, - "license": "MIT" - }, "node_modules/to-valid-identifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/to-valid-identifier/-/to-valid-identifier-1.0.0.tgz", @@ -5499,24 +4663,6 @@ "node": ">=0.6" } }, - "node_modules/token-types": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz", - "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, "node_modules/tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", @@ -5582,6 +4728,13 @@ "dev": true, "license": "MIT" }, + "node_modules/undici-types": { + "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" + }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -5633,16 +4786,6 @@ "punycode": "^2.1.0" } }, - "node_modules/utif2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/utif2/-/utif2-4.1.0.tgz", - "integrity": "sha512-+oknB9FHrJ7oW7A2WZYajOcv4FcDR4CfoGB0dPNfxbi4GO05RRnFmt5oa23+9w32EanrYcSJWspUiJkLMs+37w==", - "dev": true, - "license": "MIT", - "dependencies": { - "pako": "^1.0.11" - } - }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -5743,37 +4886,6 @@ } } }, - "node_modules/xml-parse-from-string": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", - "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==", - "dev": true, - "license": "MIT" - }, - "node_modules/xml2js": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", - "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4.0" - } - }, "node_modules/xmlcreate": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", diff --git a/package.json b/package.json index 6ed4a7a146f8a8..53d5f025ff0edb 100644 --- a/package.json +++ b/package.json @@ -103,8 +103,9 @@ "eslint-plugin-html": "^8.1.3", "eslint-plugin-jsdoc": "^61.4.1", "globals": "^16.5.0", - "jimp": "^1.6.0", + "jpeg-js": "^0.4.4", "jsdoc": "^4.0.5", + "pngjs": "^7.0.0", "magic-string": "^0.30.0", "pixelmatch": "^7.0.0", "puppeteer": "^24.25.0", @@ -112,9 +113,6 @@ "rollup": "^4.6.0", "servez": "^2.2.4" }, - "overrides": { - "jpeg-js": "^0.4.4" - }, "jspm": { "files": [ "package.json", diff --git a/test/e2e/image.js b/test/e2e/image.js new file mode 100644 index 00000000000000..7281f22016e634 --- /dev/null +++ b/test/e2e/image.js @@ -0,0 +1,148 @@ +import { PNG } from 'pngjs'; +import jpeg from 'jpeg-js'; +import * as fs from 'fs/promises'; + +class Image { + + constructor( width, height, data ) { + + this.width = width; + this.height = height; + this.data = data; + + } + + get bitmap() { + + return { width: this.width, height: this.height, data: this.data }; + + } + + clone() { + + return new Image( this.width, this.height, Buffer.from( this.data ) ); + + } + + scale( factor ) { + + if ( factor >= 1 ) { + + console.warn( 'Image.scale() is optimized for downscaling only.' ); + + } + + const newWidth = Math.round( this.width * factor ); + const newHeight = Math.round( this.height * factor ); + const newData = Buffer.alloc( newWidth * newHeight * 4 ); + + // Box filter for downscaling (averages all source pixels in the region) + const scaleX = this.width / newWidth; + const scaleY = this.height / newHeight; + + for ( let y = 0; y < newHeight; y ++ ) { + + for ( let x = 0; x < newWidth; x ++ ) { + + // Calculate source region + const srcX0 = x * scaleX; + const srcY0 = y * scaleY; + const srcX1 = ( x + 1 ) * scaleX; + const srcY1 = ( y + 1 ) * scaleY; + + const x0 = Math.floor( srcX0 ); + const y0 = Math.floor( srcY0 ); + const x1 = Math.min( Math.ceil( srcX1 ), this.width ); + const y1 = Math.min( Math.ceil( srcY1 ), this.height ); + + const dstIdx = ( y * newWidth + x ) * 4; + const sums = [ 0, 0, 0, 0 ]; + let totalWeight = 0; + + // Average all pixels in the source region with proper weighting + for ( let sy = y0; sy < y1; sy ++ ) { + + for ( let sx = x0; sx < x1; sx ++ ) { + + // Calculate coverage weight for edge pixels + const wx0 = Math.max( 0, Math.min( 1, sx + 1 - srcX0 ) ); + const wx1 = Math.max( 0, Math.min( 1, srcX1 - sx ) ); + const wy0 = Math.max( 0, Math.min( 1, sy + 1 - srcY0 ) ); + const wy1 = Math.max( 0, Math.min( 1, srcY1 - sy ) ); + const weight = Math.min( wx0, wx1 ) * Math.min( wy0, wy1 ); + + const srcIdx = ( sy * this.width + sx ) * 4; + for ( let c = 0; c < 4; c ++ ) { + + sums[ c ] += this.data[ srcIdx + c ] * weight; + + } + + totalWeight += weight; + + } + + } + + for ( let c = 0; c < 4; c ++ ) { + + newData[ dstIdx + c ] = Math.round( sums[ c ] / totalWeight ); + + } + + } + + } + + this.width = newWidth; + this.height = newHeight; + this.data = newData; + + return this; + + } + + async write( filepath, quality = 95 ) { + + const rawImageData = { + data: this.data, + width: this.width, + height: this.height + }; + + const encoded = jpeg.encode( rawImageData, quality ); + await fs.writeFile( filepath, encoded.data ); + + } + + static async read( input ) { + + let buffer; + + if ( typeof input === 'string' ) { + + buffer = await fs.readFile( input ); + + } else { + + buffer = input; + + } + + // Check if PNG (starts with PNG signature) + if ( buffer[ 0 ] === 0x89 && buffer[ 1 ] === 0x50 && buffer[ 2 ] === 0x4E && buffer[ 3 ] === 0x47 ) { + + const png = PNG.sync.read( buffer ); + return new Image( png.width, png.height, png.data ); + + } + + // Otherwise assume JPEG + const decoded = jpeg.decode( buffer, { useTArray: true } ); + return new Image( decoded.width, decoded.height, Buffer.from( decoded.data ) ); + + } + +} + +export { Image }; diff --git a/test/e2e/puppeteer.js b/test/e2e/puppeteer.js index 0c8c12e1576273..5f517033e2cae2 100644 --- a/test/e2e/puppeteer.js +++ b/test/e2e/puppeteer.js @@ -1,6 +1,6 @@ import puppeteer from 'puppeteer'; import pixelmatch from 'pixelmatch'; -import { Jimp } from 'jimp'; +import { Image } from './image.js'; import * as fs from 'fs/promises'; import server from './server.js'; @@ -486,7 +486,7 @@ async function makeAttempt( page, failedScreenshots, cleanPage, isMakeScreenshot } - const screenshot = ( await Jimp.read( await page.screenshot(), { quality: jpgQuality } ) ).scale( 1 / viewScale ); + const screenshot = ( await Image.read( await page.screenshot() ) ).scale( 1 / viewScale ); if ( page.error !== undefined ) throw new Error( page.error ); @@ -494,7 +494,7 @@ async function makeAttempt( page, failedScreenshots, cleanPage, isMakeScreenshot /* Make screenshots */ - await screenshot.write( `examples/screenshots/${ file }.jpg` ); + await screenshot.write( `examples/screenshots/${ file }.jpg`, jpgQuality ); console.green( `Screenshot generated for file ${ file }` ); @@ -506,11 +506,11 @@ async function makeAttempt( page, failedScreenshots, cleanPage, isMakeScreenshot try { - expected = ( await Jimp.read( `examples/screenshots/${ file }.jpg`, { quality: jpgQuality } ) ); + expected = await Image.read( `examples/screenshots/${ file }.jpg` ); } catch ( e ) { - await screenshot.write( `test/e2e/output-screenshots/${ file }-actual.jpg` ); + await screenshot.write( `test/e2e/output-screenshots/${ file }-actual.jpg`, jpgQuality ); throw new Error( `Screenshot does not exist: ${ file }` ); } @@ -529,8 +529,8 @@ async function makeAttempt( page, failedScreenshots, cleanPage, isMakeScreenshot } catch ( e ) { - await screenshot.write( `test/e2e/output-screenshots/${ file }-actual.jpg` ); - await expected.write( `test/e2e/output-screenshots/${ file }-expected.jpg` ); + await screenshot.write( `test/e2e/output-screenshots/${ file }-actual.jpg`, jpgQuality ); + await expected.write( `test/e2e/output-screenshots/${ file }-expected.jpg`, jpgQuality ); throw new Error( `Image sizes does not match in file: ${ file }` ); } @@ -545,9 +545,9 @@ async function makeAttempt( page, failedScreenshots, cleanPage, isMakeScreenshot } else { - await screenshot.write( `test/e2e/output-screenshots/${ file }-actual.jpg` ); - await expected.write( `test/e2e/output-screenshots/${ file }-expected.jpg` ); - await diff.write( `test/e2e/output-screenshots/${ file }-diff.jpg` ); + await screenshot.write( `test/e2e/output-screenshots/${ file }-actual.jpg`, jpgQuality ); + await expected.write( `test/e2e/output-screenshots/${ file }-expected.jpg`, jpgQuality ); + await diff.write( `test/e2e/output-screenshots/${ file }-diff.jpg`, jpgQuality ); throw new Error( `Diff wrong in ${ differentPixels.toFixed( 1 ) }% of pixels in file: ${ file }` ); } From 2b45d4c1a2a290078a3f896100f05a55489a39e6 Mon Sep 17 00:00:00 2001 From: mrdoob Date: Fri, 2 Jan 2026 23:29:44 +0900 Subject: [PATCH 5/7] Replaced servez with custom server.js. (#32654) --- package-lock.json | 1104 +---------------------------------------- package.json | 10 +- test/e2e/puppeteer.js | 4 +- test/e2e/server.js | 89 ---- utils/server.js | 381 ++++++++++++++ 5 files changed, 394 insertions(+), 1194 deletions(-) delete mode 100644 test/e2e/server.js create mode 100644 utils/server.js diff --git a/package-lock.json b/package-lock.json index ef0e91adf9cf28..f062432bcacad4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,7 +27,7 @@ "puppeteer": "^24.25.0", "qunit": "^2.19.4", "rollup": "^4.6.0", - "servez": "^2.2.4" + "selfsigned": "^2.4.1" } }, "node_modules/@babel/code-frame": { @@ -913,20 +913,6 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/acorn": { "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", @@ -977,16 +963,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -1030,13 +1006,6 @@ "dev": true, "license": "Python-2.0" }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true, - "license": "MIT" - }, "node_modules/ast-metadata-inferer": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/ast-metadata-inferer/-/ast-metadata-inferer-0.8.1.tgz", @@ -1189,26 +1158,6 @@ "baseline-browser-mapping": "dist/cli.js" } }, - "node_modules/basic-auth": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "5.1.2" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/basic-auth/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" - }, "node_modules/basic-ftp": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.1.0.tgz", @@ -1219,13 +1168,6 @@ "node": ">=10.0.0" } }, - "node_modules/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true, - "license": "MIT" - }, "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -1233,48 +1175,6 @@ "dev": true, "license": "MIT" }, - "node_modules/body-parser": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", - "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "~3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "~1.2.0", - "http-errors": "~2.0.1", - "iconv-lite": "~0.4.24", - "on-finished": "~2.4.1", - "qs": "~6.14.0", - "raw-body": "~2.5.3", - "type-is": "~1.6.18", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, "node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", @@ -1337,47 +1237,6 @@ "dev": true, "license": "MIT" }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "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", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -1501,16 +1360,6 @@ "dev": true, "license": "MIT" }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true, - "license": "ISC", - "bin": { - "color-support": "bin.js" - } - }, "node_modules/commander": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", @@ -1563,60 +1412,6 @@ "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" } }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", - "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", - "dev": true, - "license": "MIT" - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/cosmiconfig": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", @@ -1719,27 +1514,6 @@ "node": ">= 14" } }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, "node_modules/devtools-protocol": { "version": "0.0.1534754", "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1534754.tgz", @@ -1819,28 +1593,6 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true, - "license": "MIT" - }, "node_modules/electron-to-chromium": { "version": "1.5.267", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz", @@ -1855,16 +1607,6 @@ "dev": true, "license": "MIT" }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/end-of-stream": { "version": "1.4.5", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", @@ -1908,39 +1650,6 @@ "is-arrayish": "^0.2.1" } }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -1951,13 +1660,6 @@ "node": ">=6" } }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true, - "license": "MIT" - }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -2253,16 +1955,6 @@ "node": ">=0.10.0" } }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/events-universal": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", @@ -2273,70 +1965,6 @@ "bare-events": "^2.7.0" } }, - "node_modules/express": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", - "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "~1.20.3", - "content-disposition": "~0.5.4", - "content-type": "~1.0.4", - "cookie": "~0.7.1", - "cookie-signature": "~1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.3.1", - "fresh": "~0.5.2", - "http-errors": "~2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "~2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "~0.1.12", - "proxy-addr": "~2.0.7", - "qs": "~6.14.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "~0.19.0", - "serve-static": "~1.16.2", - "setprototypeof": "1.2.0", - "statuses": "~2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, "node_modules/extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", @@ -2409,42 +2037,6 @@ "node": ">=16.0.0" } }, - "node_modules/finalhandler": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", - "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "~2.4.1", - "parseurl": "~1.3.3", - "statuses": "~2.0.2", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -2483,26 +2075,6 @@ "dev": true, "license": "ISC" }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -2538,45 +2110,6 @@ "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/get-stream": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", @@ -2648,19 +2181,6 @@ "dev": true, "license": "MIT" }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -2678,19 +2198,6 @@ "node": ">=8" } }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -2741,31 +2248,10 @@ "entities": "^6.0.0" } }, - "node_modules/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "type": "opencollective", - "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==", + "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": { @@ -2790,19 +2276,6 @@ "node": ">= 14" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -2840,13 +2313,6 @@ "node": ">=0.8.19" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, - "license": "ISC" - }, "node_modules/ip-address": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", @@ -2857,16 +2323,6 @@ "node": ">= 12" } }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -3215,16 +2671,6 @@ "node": ">= 12" } }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/mdurl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", @@ -3232,72 +2678,6 @@ "dev": true, "license": "MIT" }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -3345,16 +2725,6 @@ "dev": true, "license": "MIT" }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/netmask": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", @@ -3392,16 +2762,6 @@ "node": ">=6" } }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object-deep-merge": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/object-deep-merge/-/object-deep-merge-2.0.0.tgz", @@ -3409,32 +2769,6 @@ "dev": true, "license": "MIT" }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -3578,16 +2912,6 @@ "dev": true, "license": "MIT" }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -3615,13 +2939,6 @@ "dev": true, "license": "MIT" }, - "node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", - "dev": true, - "license": "MIT" - }, "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", @@ -3692,20 +3009,6 @@ "node": ">=0.4.0" } }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/proxy-agent": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz", @@ -3805,22 +3108,6 @@ "node": ">=18" } }, - "node_modules/qs": { - "version": "6.14.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", - "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/qunit": { "version": "2.25.0", "resolved": "https://registry.npmjs.org/qunit/-/qunit-2.25.0.tgz", @@ -3849,32 +3136,6 @@ "safe-buffer": "^5.1.0" } }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", - "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "~3.1.2", - "http-errors": "~2.0.1", - "iconv-lite": "~0.4.24", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -4012,20 +3273,6 @@ ], "license": "MIT" }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "license": "MIT" - }, - "node_modules/secure-compare": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", - "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==", - "dev": true, - "license": "MIT" - }, "node_modules/selfsigned": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", @@ -4053,48 +3300,6 @@ "node": ">=10" } }, - "node_modules/send": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", - "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "~0.5.2", - "http-errors": "~2.0.1", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "~2.4.1", - "range-parser": "~1.2.1", - "statuses": "~2.0.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, "node_modules/serialize-javascript": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", @@ -4105,165 +3310,6 @@ "randombytes": "^2.1.0" } }, - "node_modules/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/serve-index/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/serve-index/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true, - "license": "ISC" - }, - "node_modules/serve-index/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/serve-index/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-static": { - "version": "1.16.3", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", - "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "~0.19.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/server-destroy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", - "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/servez": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/servez/-/servez-2.3.2.tgz", - "integrity": "sha512-XnaRlRfU92uvLgBUJw5UOxJUOZJFF+p/5wbcWFSokQfwnDc54bh8G/NoLIrEu23hWMmlmcN+TSEFpiytn9+u0w==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-colors": "^4.1.3", - "color-support": "^1.1.3", - "commander": "^12.1.0", - "servez-lib": "^2.10.2" - }, - "bin": { - "servez": "bin/servez" - } - }, - "node_modules/servez-lib": { - "version": "2.10.2", - "resolved": "https://registry.npmjs.org/servez-lib/-/servez-lib-2.10.2.tgz", - "integrity": "sha512-8aFgto9z344qu24/YWTwvHblI2TOcRkiVSnyxGDI5o6NKONbhHC3MdQRr1IHzsuqBBX+/GvfF6mqEvOm7P/JOA==", - "dev": true, - "license": "MIT", - "dependencies": { - "basic-auth": "^2.0.1", - "cors": "^2.8.5", - "debug": "^4.4.0", - "express": "^4.21.2", - "secure-compare": "^3.0.1", - "selfsigned": "^2.4.1", - "serve-index": "^1.9.1", - "server-destroy": "^1.0.1" - } - }, - "node_modules/servez/node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true, - "license": "ISC" - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -4300,82 +3346,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -4470,16 +3440,6 @@ "dev": true, "license": "CC0-1.0" }, - "node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/streamx": { "version": "2.23.0", "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz", @@ -4653,16 +3613,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, "node_modules/tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", @@ -4693,20 +3643,6 @@ "node": ">= 0.8.0" } }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/typed-query-selector": { "version": "2.12.0", "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.0.tgz", @@ -4735,16 +3671,6 @@ "dev": true, "license": "MIT" }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/update-browserslist-db": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", @@ -4786,26 +3712,6 @@ "punycode": "^2.1.0" } }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/webdriver-bidi-protocol": { "version": "0.3.10", "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.3.10.tgz", diff --git a/package.json b/package.json index 53d5f025ff0edb..6df4ea7c4d092d 100644 --- a/package.json +++ b/package.json @@ -48,10 +48,10 @@ "build": "rollup -c utils/build/rollup.config.js", "build-module": "rollup -c utils/build/rollup.config.js --configOnlyModule", "build-docs": "jsdoc -c utils/docs/jsdoc.config.json", - "dev": "node utils/build/dev.js && servez -p 8080", - "dev-ssl": "node utils/build/dev.js && servez -p 8080 --ssl", - "preview": "concurrently --names \"ROLLUP,HTTP\" -c \"bgBlue.bold,bgGreen.bold\" \"rollup -c utils/build/rollup.config.js -w -m inline\" \"servez -p 8080\"", - "preview-ssl": "concurrently --names \"ROLLUP,HTTPS\" -c \"bgBlue.bold,bgGreen.bold\" \"rollup -c utils/build/rollup.config.js -w -m inline\" \"servez -p 8080 --ssl\"", + "dev": "node utils/build/dev.js && node utils/server.js -p 8080", + "dev-ssl": "node utils/build/dev.js && node utils/server.js -p 8080 --ssl", + "preview": "concurrently --names \"ROLLUP,HTTP\" -c \"bgBlue.bold,bgGreen.bold\" \"rollup -c utils/build/rollup.config.js -w -m inline\" \"node utils/server.js -p 8080\"", + "preview-ssl": "concurrently --names \"ROLLUP,HTTPS\" -c \"bgBlue.bold,bgGreen.bold\" \"rollup -c utils/build/rollup.config.js -w -m inline\" \"node utils/server.js -p 8080 --ssl\"", "lint-core": "eslint src", "lint-addons": "eslint examples/jsm", "lint-examples": "eslint examples", @@ -111,7 +111,7 @@ "puppeteer": "^24.25.0", "qunit": "^2.19.4", "rollup": "^4.6.0", - "servez": "^2.2.4" + "selfsigned": "^2.4.1" }, "jspm": { "files": [ diff --git a/test/e2e/puppeteer.js b/test/e2e/puppeteer.js index 5f517033e2cae2..ff4c342f1ec35b 100644 --- a/test/e2e/puppeteer.js +++ b/test/e2e/puppeteer.js @@ -2,7 +2,9 @@ import puppeteer from 'puppeteer'; import pixelmatch from 'pixelmatch'; import { Image } from './image.js'; import * as fs from 'fs/promises'; -import server from './server.js'; +import { createServer } from '../../utils/server.js'; + +const server = createServer(); const exceptionList = [ diff --git a/test/e2e/server.js b/test/e2e/server.js deleted file mode 100644 index c014058e6b3822..00000000000000 --- a/test/e2e/server.js +++ /dev/null @@ -1,89 +0,0 @@ -import http from 'http'; -import path from 'path'; -import { createReadStream, existsSync, statSync } from 'fs'; - -const mimeTypes = { - '.html': 'text/html', - '.js': 'application/javascript', - '.css': 'text/css', - '.json': 'application/json', - '.png': 'image/png', - '.jpg': 'image/jpeg', - '.gif': 'image/gif', - '.svg': 'image/svg+xml', - '.mp3': 'audio/mpeg', - '.mp4': 'video/mp4', - '.webm': 'video/webm', - '.ogv': 'video/ogg', - '.ogg': 'audio/ogg', - '.woff': 'font/woff', - '.woff2': 'font/woff2', - '.ttf': 'font/ttf', - '.glb': 'model/gltf-binary', - '.gltf': 'model/gltf+json', - '.hdr': 'application/octet-stream', - '.exr': 'application/octet-stream', - '.fbx': 'application/octet-stream', - '.bin': 'application/octet-stream', - '.cube': 'text/plain' -}; - -const rootDirectory = path.resolve(); - -const server = http.createServer( ( req, res ) => { - - const pathname = decodeURIComponent( req.url.split( '?' )[ 0 ] ); - const filePath = path.normalize( path.join( rootDirectory, pathname ) ); - - // Prevent path traversal attacks - if ( ! filePath.startsWith( rootDirectory ) ) { - - res.writeHead( 403 ); - res.end( 'Forbidden' ); - return; - - } - - if ( ! existsSync( filePath ) ) { - - res.writeHead( 404 ); - res.end( 'File not found' ); - return; - - } - - const ext = path.extname( filePath ).toLowerCase(); - const contentType = mimeTypes[ ext ] || 'application/octet-stream'; - const stat = statSync( filePath ); - const fileSize = stat.size; - const range = req.headers.range; - - if ( range ) { - - const parts = range.replace( /bytes=/, '' ).split( '-' ); - const start = parseInt( parts[ 0 ], 10 ); - const end = parts[ 1 ] ? parseInt( parts[ 1 ], 10 ) : fileSize - 1; - - res.writeHead( 206, { - 'Content-Range': `bytes ${start}-${end}/${fileSize}`, - 'Accept-Ranges': 'bytes', - 'Content-Length': end - start + 1, - 'Content-Type': contentType - } ); - - createReadStream( filePath, { start, end } ).pipe( res ); - - } else { - - res.writeHead( 200, { - 'Content-Length': fileSize, - 'Content-Type': contentType - } ); - - createReadStream( filePath ).pipe( res ); - - } - -} ); - -export default server; diff --git a/utils/server.js b/utils/server.js new file mode 100644 index 00000000000000..e3ce113d345ef1 --- /dev/null +++ b/utils/server.js @@ -0,0 +1,381 @@ +import http from 'http'; +import https from 'https'; +import path from 'path'; +import os from 'os'; +import { createReadStream, existsSync, statSync, readFileSync, mkdirSync, readdirSync, openSync, writeSync, closeSync, fstatSync, constants } from 'fs'; + +function escapeHtml( str ) { + + return str + .replace( /&/g, '&' ) + .replace( //g, '>' ) + .replace( /"/g, '"' ); + +} + +const mimeTypes = { + '.html': 'text/html', + '.js': 'application/javascript', + '.css': 'text/css', + '.json': 'application/json', + '.png': 'image/png', + '.jpg': 'image/jpeg', + '.gif': 'image/gif', + '.svg': 'image/svg+xml', + '.mp3': 'audio/mpeg', + '.mp4': 'video/mp4', + '.webm': 'video/webm', + '.ogv': 'video/ogg', + '.ogg': 'audio/ogg', + '.woff': 'font/woff', + '.woff2': 'font/woff2', + '.ttf': 'font/ttf', + '.glb': 'model/gltf-binary', + '.gltf': 'model/gltf+json', + '.hdr': 'application/octet-stream', + '.exr': 'application/octet-stream', + '.fbx': 'application/octet-stream', + '.bin': 'application/octet-stream', + '.cube': 'text/plain', + '.wasm': 'application/wasm', + '.ktx2': 'image/ktx2' +}; + +function createHandler( rootDirectory ) { + + return ( req, res ) => { + + const pathname = decodeURIComponent( req.url.split( '?' )[ 0 ] ); + let filePath = path.normalize( path.join( rootDirectory, pathname ) ); + + // Prevent path traversal attacks + if ( ! filePath.startsWith( rootDirectory ) ) { + + res.writeHead( 403 ); + res.end( 'Forbidden' ); + return; + + } + + // Handle directories + if ( existsSync( filePath ) && statSync( filePath ).isDirectory() ) { + + const indexPath = path.join( filePath, 'index.html' ); + + if ( existsSync( indexPath ) ) { + + filePath = indexPath; + + } else { + + // Show directory listing + const files = readdirSync( filePath ) + .filter( f => ! f.startsWith( '.' ) ) + .sort( ( a, b ) => { + + const aIsDir = statSync( path.join( filePath, a ) ).isDirectory(); + const bIsDir = statSync( path.join( filePath, b ) ).isDirectory(); + if ( aIsDir && ! bIsDir ) return - 1; + if ( ! aIsDir && bIsDir ) return 1; + return a.localeCompare( b ); + + } ); + + const base = pathname.endsWith( '/' ) ? pathname : pathname + '/'; + const items = files.map( file => { + + const fullPath = path.join( filePath, file ); + const isDir = statSync( fullPath ).isDirectory(); + const safeFile = escapeHtml( file ); + const safeHref = escapeHtml( base + file + ( isDir ? '/' : '' ) ); + const icon = isDir ? '📁' : '📄'; + return `${icon}${safeFile}`; + + } ).join( '\n' ); + + const safePath = escapeHtml( pathname ); + const html = ` + + + + + +Index of ${safePath} + + + +

Index of ${safePath}

+${pathname !== '/' ? '📁..' : ''} +${items} + +`; + + res.writeHead( 200, { 'Content-Type': 'text/html' } ); + res.end( html ); + return; + + } + + } + + if ( ! existsSync( filePath ) ) { + + res.writeHead( 404 ); + res.end( 'File not found' ); + return; + + } + + const ext = path.extname( filePath ).toLowerCase(); + const contentType = mimeTypes[ ext ] || 'application/octet-stream'; + const stat = statSync( filePath ); + const fileSize = stat.size; + const range = req.headers.range; + + if ( range ) { + + const parts = range.replace( /bytes=/, '' ).split( '-' ); + const start = parseInt( parts[ 0 ], 10 ); + const end = parts[ 1 ] ? parseInt( parts[ 1 ], 10 ) : fileSize - 1; + + res.writeHead( 206, { + 'Content-Range': `bytes ${start}-${end}/${fileSize}`, + 'Accept-Ranges': 'bytes', + 'Content-Length': end - start + 1, + 'Content-Type': contentType + } ); + + createReadStream( filePath, { start, end } ).pipe( res ); + + } else { + + res.writeHead( 200, { + 'Content-Length': fileSize, + 'Content-Type': contentType + } ); + + createReadStream( filePath ).pipe( res ); + + } + + }; + +} + +function getCacheDir() { + + const appName = 'three-dev-server'; + + if ( process.platform === 'darwin' ) { + + return path.join( os.homedir(), 'Library', 'Application Support', appName ); + + } else if ( process.platform === 'win32' ) { + + return path.join( process.env.LOCALAPPDATA || process.env.APPDATA, appName ); + + } else { + + return path.join( os.homedir(), '.config', appName ); + + } + +} + +async function getCertificate() { + + // Cache certificate in platform-specific data directory + const cacheDir = getCacheDir(); + const certPath = path.join( cacheDir, 'cert.pem' ); + const keyPath = path.join( cacheDir, 'key.pem' ); + + // Try to use cached certificate (valid for 7 days) + try { + + const certFd = openSync( certPath, constants.O_RDONLY ); + const stat = fstatSync( certFd ); + const age = Date.now() - stat.mtimeMs; + const maxAge = 7 * 24 * 60 * 60 * 1000; // 7 days + + if ( age < maxAge ) { + + const cert = readFileSync( certFd, 'utf8' ); + closeSync( certFd ); + const key = readFileSync( keyPath, 'utf8' ); + return { cert, key }; + + } + + closeSync( certFd ); + + } catch ( e ) { + + // Cache miss or invalid, generate new certificate + + } + + // Generate new self-signed certificate using selfsigned + let selfsigned; + try { + + selfsigned = ( await import( 'selfsigned' ) ).default; + + } catch ( e ) { + + console.error( 'For HTTPS support, install selfsigned: npm install selfsigned' ); + process.exit( 1 ); + + } + + const attrs = [ { name: 'commonName', value: 'localhost' } ]; + const pems = selfsigned.generate( attrs, { + algorithm: 'sha256', + days: 30, + keySize: 2048, + extensions: [ + { name: 'keyUsage', keyCertSign: true, digitalSignature: true, keyEncipherment: true }, + { name: 'subjectAltName', altNames: [ + { type: 2, value: 'localhost' }, + { type: 7, ip: '127.0.0.1' } + ] } + ] + } ); + + // Cache the certificate with restrictive permissions + try { + + mkdirSync( cacheDir, { recursive: true, mode: 0o700 } ); + + const certFd = openSync( certPath, constants.O_WRONLY | constants.O_CREAT | constants.O_TRUNC, 0o600 ); + writeSync( certFd, pems.cert ); + closeSync( certFd ); + + const keyFd = openSync( keyPath, constants.O_WRONLY | constants.O_CREAT | constants.O_TRUNC, 0o600 ); + writeSync( keyFd, pems.private ); + closeSync( keyFd ); + + } catch ( e ) { + + // Caching failed, but certificate is still valid for this session + + } + + return { cert: pems.cert, key: pems.private }; + +} + +export function createServer( options = {} ) { + + const rootDirectory = options.root || path.resolve(); + const handler = createHandler( rootDirectory ); + + return http.createServer( handler ); + +} + +function tryListen( server, port, maxAttempts = 20 ) { + + return new Promise( ( resolve, reject ) => { + + let attempts = 0; + + const onError = ( err ) => { + + if ( err.code === 'EADDRINUSE' && attempts < maxAttempts ) { + + attempts ++; + server.listen( port + attempts ); + + } else { + + reject( err ); + + } + + }; + + const onListening = () => { + + server.off( 'error', onError ); + resolve( server.address().port ); + + }; + + server.once( 'error', onError ); + server.once( 'listening', onListening ); + server.listen( port ); + + } ); + +} + +// CLI mode +const isMain = process.argv[ 1 ] && path.resolve( process.argv[ 1 ] ) === path.resolve( import.meta.url.replace( 'file://', '' ) ); + +if ( isMain ) { + + const args = process.argv.slice( 2 ); + const requestedPort = parseInt( args.find( ( _, i, arr ) => arr[ i - 1 ] === '-p' ) || '8080', 10 ); + const useSSL = args.includes( '--ssl' ); + const rootDirectory = path.resolve(); + + const protocol = useSSL ? 'https' : 'http'; + const handler = createHandler( rootDirectory ); + + let server; + + if ( useSSL ) { + + const credentials = await getCertificate(); + server = https.createServer( credentials, handler ); + + } else { + + server = http.createServer( handler ); + + } + + const port = await tryListen( server, requestedPort ); + + if ( port !== requestedPort ) { + + console.log( `\x1b[33mPort ${requestedPort} in use, using ${port} instead.\x1b[0m` ); + + } + + console.log( `\x1b[32mServer running at ${protocol}://localhost:${port}/\x1b[0m` ); + + // Show network addresses + const interfaces = os.networkInterfaces(); + for ( const name of Object.keys( interfaces ) ) { + + for ( const net of interfaces[ name ] ) { + + if ( net.family === 'IPv4' && ! net.internal ) { + + console.log( ` ${protocol}://${net.address}:${port}/` ); + + } + + } + + } + + console.log( '\nPress Ctrl+C to stop.' ); + + process.on( 'SIGINT', () => { + + console.log( '\nShutting down...' ); + server.close(); + process.exit( 0 ); + + } ); + +} From 48f168d4f02f5f8c9ac84afe7690a349350b86c5 Mon Sep 17 00:00:00 2001 From: mrdoob Date: Fri, 2 Jan 2026 23:47:24 +0900 Subject: [PATCH 6/7] Replaced concurrently with custom preview.js. (#32655) --- package-lock.json | 83 ++---------------------------------------- package.json | 5 +-- utils/build/preview.js | 66 +++++++++++++++++++++++++++++++++ 3 files changed, 72 insertions(+), 82 deletions(-) create mode 100644 utils/build/preview.js diff --git a/package-lock.json b/package-lock.json index f062432bcacad4..6dd32e7f8921fe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,6 @@ "@eslint/js": "^9.0.0", "@rollup/plugin-node-resolve": "^16.0.0", "@rollup/plugin-terser": "^0.4.0", - "concurrently": "^9.0.0", "eslint": "^9.0.0", "eslint-config-mdcs": "^5.0.0", "eslint-plugin-compat": "^6.0.0", @@ -1298,19 +1297,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/chromium-bidi": { "version": "12.0.1", "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-12.0.1.tgz", @@ -1387,31 +1373,6 @@ "dev": true, "license": "MIT" }, - "node_modules/concurrently": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.2.1.tgz", - "integrity": "sha512-fsfrO0MxV64Znoy8/l1vVIjjHa29SZyyqPgQBwhiDcaW8wJc2W3XWVOGx4M3oJBnv/zdUZIIp1gDeS98GzP8Ng==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "4.1.2", - "rxjs": "7.8.2", - "shell-quote": "1.8.3", - "supports-color": "8.1.1", - "tree-kill": "1.2.2", - "yargs": "17.7.2" - }, - "bin": { - "conc": "dist/bin/concurrently.js", - "concurrently": "dist/bin/concurrently.js" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" - } - }, "node_modules/cosmiconfig": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", @@ -3242,16 +3203,6 @@ "fsevents": "~2.3.2" } }, - "node_modules/rxjs": { - "version": "7.8.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", - "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -3333,19 +3284,6 @@ "node": ">=8" } }, - "node_modules/shell-quote": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", - "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -3494,19 +3432,16 @@ } }, "node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": ">=8" } }, "node_modules/supports-preserve-symlinks-flag": { @@ -3613,16 +3548,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true, - "license": "MIT", - "bin": { - "tree-kill": "cli.js" - } - }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", diff --git a/package.json b/package.json index 6df4ea7c4d092d..187495cfb58f05 100644 --- a/package.json +++ b/package.json @@ -50,8 +50,8 @@ "build-docs": "jsdoc -c utils/docs/jsdoc.config.json", "dev": "node utils/build/dev.js && node utils/server.js -p 8080", "dev-ssl": "node utils/build/dev.js && node utils/server.js -p 8080 --ssl", - "preview": "concurrently --names \"ROLLUP,HTTP\" -c \"bgBlue.bold,bgGreen.bold\" \"rollup -c utils/build/rollup.config.js -w -m inline\" \"node utils/server.js -p 8080\"", - "preview-ssl": "concurrently --names \"ROLLUP,HTTPS\" -c \"bgBlue.bold,bgGreen.bold\" \"rollup -c utils/build/rollup.config.js -w -m inline\" \"node utils/server.js -p 8080 --ssl\"", + "preview": "node utils/build/preview.js", + "preview-ssl": "node utils/build/preview.js --ssl", "lint-core": "eslint src", "lint-addons": "eslint examples/jsm", "lint-examples": "eslint examples", @@ -96,7 +96,6 @@ "@eslint/js": "^9.0.0", "@rollup/plugin-node-resolve": "^16.0.0", "@rollup/plugin-terser": "^0.4.0", - "concurrently": "^9.0.0", "eslint": "^9.0.0", "eslint-config-mdcs": "^5.0.0", "eslint-plugin-compat": "^6.0.0", diff --git a/utils/build/preview.js b/utils/build/preview.js new file mode 100644 index 00000000000000..7937e5df636bbf --- /dev/null +++ b/utils/build/preview.js @@ -0,0 +1,66 @@ +import { spawn } from 'child_process'; +import path from 'path'; +import { fileURLToPath } from 'url'; + +const __dirname = path.dirname( fileURLToPath( import.meta.url ) ); +const rootDir = path.resolve( __dirname, '../..' ); + +const useSSL = process.argv.includes( '--ssl' ); + +// Start rollup in watch mode +const rollup = spawn( 'npx', [ + 'rollup', + '-c', 'utils/build/rollup.config.js', + '-w', + '-m', 'inline' +], { + cwd: rootDir, + stdio: [ 'ignore', 'pipe', 'pipe' ], + shell: true +} ); + +// Start server +const serverArgs = [ 'utils/server.js', '-p', '8080' ]; +if ( useSSL ) serverArgs.push( '--ssl' ); + +const server = spawn( 'node', serverArgs, { + cwd: rootDir, + stdio: [ 'ignore', 'pipe', 'pipe' ], + shell: false +} ); + +// Prefix output +const prefix = ( name, color ) => { + + return ( data ) => { + + const lines = data.toString().split( '\n' ).filter( l => l.trim() ); + for ( const line of lines ) { + + console.log( `${color}[${name}]\x1b[0m ${line}` ); + + } + + }; + +}; + +rollup.stdout.on( 'data', prefix( 'ROLLUP', '\x1b[44m\x1b[1m' ) ); +rollup.stderr.on( 'data', prefix( 'ROLLUP', '\x1b[44m\x1b[1m' ) ); +server.stdout.on( 'data', prefix( 'HTTP', '\x1b[42m\x1b[1m' ) ); +server.stderr.on( 'data', prefix( 'HTTP', '\x1b[42m\x1b[1m' ) ); + +// Handle cleanup +const cleanup = () => { + + rollup.kill(); + server.kill(); + process.exit( 0 ); + +}; + +process.on( 'SIGINT', cleanup ); +process.on( 'SIGTERM', cleanup ); + +rollup.on( 'close', cleanup ); +server.on( 'close', cleanup ); From 650d20e23d8cf64546678d95628d6b583fb33fa5 Mon Sep 17 00:00:00 2001 From: mrdoob Date: Sat, 3 Jan 2026 00:56:13 +0900 Subject: [PATCH 7/7] Puppeteer: Removed pixelmatch dependency. (#32656) --- examples/screenshots/svg_sandbox.jpg | Bin 118318 -> 66434 bytes examples/screenshots/webaudio_visualizer.jpg | Bin 9254 -> 6561 bytes .../screenshots/webgpu_shadow_contact.jpg | Bin 27289 -> 15076 bytes package-lock.json | 14 ------ package.json | 1 - test/e2e/image.js | 46 ++++++++++++++++++ test/e2e/puppeteer.js | 8 +-- 7 files changed, 48 insertions(+), 21 deletions(-) diff --git a/examples/screenshots/svg_sandbox.jpg b/examples/screenshots/svg_sandbox.jpg index f6d261ab313b753551bed27ab4a277bb8b884f60..4664781665dfbce94e33ee332ab6b6dec29eaa43 100644 GIT binary patch literal 66434 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/Z`7)Atu;qBu-iyQ|Fa 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

bfznRpXS02uJRNL%A{R$pxQM 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 diff --git a/examples/screenshots/webaudio_visualizer.jpg b/examples/screenshots/webaudio_visualizer.jpg index ff7eb80188899a4ba927fb70709ad3f5fb08a32e..783d31abca3d6672b182b33b00dacafdd523e641 100644 GIT binary patch literal 6561 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 literal 9254 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 diff --git a/examples/screenshots/webgpu_shadow_contact.jpg b/examples/screenshots/webgpu_shadow_contact.jpg index 42a2d81014ff64dcdb148e57c9812d2d2e07bd5d..fd10102a9b1bc1579b2ebbc8ddfa2416ad78300a 100644 GIT binary patch delta 12815 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 F{{d+*+h_m) delta 25098 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 K@c!`c$NvK$pAkF& diff --git a/package-lock.json b/package-lock.json index 6dd32e7f8921fe..0992370037cfa7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,6 @@ "jpeg-js": "^0.4.4", "jsdoc": "^4.0.5", "magic-string": "^0.30.0", - "pixelmatch": "^7.0.0", "pngjs": "^7.0.0", "puppeteer": "^24.25.0", "qunit": "^2.19.4", @@ -2927,19 +2926,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pixelmatch": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-7.1.0.tgz", - "integrity": "sha512-1wrVzJ2STrpmONHKBy228LM1b84msXDUoAzVEl0R8Mz4Ce6EPr+IVtxm8+yvrqLYMHswREkjYFaMxnyGnaY3Ng==", - "dev": true, - "license": "ISC", - "dependencies": { - "pngjs": "^7.0.0" - }, - "bin": { - "pixelmatch": "bin/pixelmatch" - } - }, "node_modules/pngjs": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-7.0.0.tgz", diff --git a/package.json b/package.json index 187495cfb58f05..5bf0f1875d86bd 100644 --- a/package.json +++ b/package.json @@ -106,7 +106,6 @@ "jsdoc": "^4.0.5", "pngjs": "^7.0.0", "magic-string": "^0.30.0", - "pixelmatch": "^7.0.0", "puppeteer": "^24.25.0", "qunit": "^2.19.4", "rollup": "^4.6.0", diff --git a/test/e2e/image.js b/test/e2e/image.js index 7281f22016e634..cecdc5598e827d 100644 --- a/test/e2e/image.js +++ b/test/e2e/image.js @@ -102,6 +102,52 @@ class Image { } + compare( other, diff, threshold = 0.1 ) { + + if ( this.width !== other.width || this.height !== other.height ) { + + throw new Error( 'Image sizes do not match' ); + + } + + const maxDelta = 255 * 255 * 3; // Max squared distance in RGB space + let numDiffPixels = 0; + + for ( let i = 0; i < this.data.length; i += 4 ) { + + const dr = this.data[ i ] - other.data[ i ]; + const dg = this.data[ i + 1 ] - other.data[ i + 1 ]; + const db = this.data[ i + 2 ] - other.data[ i + 2 ]; + + // Squared Euclidean distance normalized to 0-1 + const delta = ( dr * dr + dg * dg + db * db ) / maxDelta; + + if ( delta > threshold * threshold ) { + + numDiffPixels ++; + + // Mark difference in red + diff.data[ i ] = 255; + diff.data[ i + 1 ] = 0; + diff.data[ i + 2 ] = 0; + diff.data[ i + 3 ] = 255; + + } else { + + // Dim matching pixels + diff.data[ i ] = this.data[ i ] * 0.2; + diff.data[ i + 1 ] = this.data[ i + 1 ] * 0.2; + diff.data[ i + 2 ] = this.data[ i + 2 ] * 0.2; + diff.data[ i + 3 ] = 255; + + } + + } + + return numDiffPixels; + + } + async write( filepath, quality = 95 ) { const rawImageData = { diff --git a/test/e2e/puppeteer.js b/test/e2e/puppeteer.js index ff4c342f1ec35b..d2046fcf42d85c 100644 --- a/test/e2e/puppeteer.js +++ b/test/e2e/puppeteer.js @@ -1,5 +1,4 @@ import puppeteer from 'puppeteer'; -import pixelmatch from 'pixelmatch'; import { Image } from './image.js'; import * as fs from 'fs/promises'; import { createServer } from '../../utils/server.js'; @@ -524,16 +523,13 @@ async function makeAttempt( page, failedScreenshots, cleanPage, isMakeScreenshot try { - numDifferentPixels = pixelmatch( expected.bitmap.data, actual.data, diff.bitmap.data, actual.width, actual.height, { - threshold: pixelThreshold, - alpha: 0.2 - } ); + numDifferentPixels = expected.compare( screenshot, diff, pixelThreshold ); } catch ( e ) { await screenshot.write( `test/e2e/output-screenshots/${ file }-actual.jpg`, jpgQuality ); await expected.write( `test/e2e/output-screenshots/${ file }-expected.jpg`, jpgQuality ); - throw new Error( `Image sizes does not match in file: ${ file }` ); + throw new Error( `Image sizes do not match in file: ${ file }` ); }