From 89b4be057b4da7fef671bf83aacae6655e3c894b Mon Sep 17 00:00:00 2001 From: silverwind Date: Fri, 5 Sep 2025 23:06:02 +0200 Subject: [PATCH] Switch to `@resvg/resvg-wasm` for `generate-images` (#35415) Use the WASM module of [`resvg-js`](https://github.com/thx/resvg-js) to replace `fabric` and the problematic native `canvas` dependency. WASM works cross-platform so we can include it in the main `package.json`. --- .gitignore | 1 - Makefile | 8 +- package.json | 1 + pnpm-lock.yaml | 9 + public/assets/img/apple-touch-icon.png | Bin 6786 -> 3884 bytes public/assets/img/avatar_default.png | Bin 7697 -> 4786 bytes public/assets/img/favicon.png | Bin 6915 -> 4335 bytes public/assets/img/logo.png | Bin 21260 -> 12927 bytes tools/generate-images.js | 38 +- tools/package.json | 21 - tools/pnpm-lock.yaml | 1227 ------------------------ 11 files changed, 24 insertions(+), 1281 deletions(-) delete mode 100644 tools/package.json delete mode 100644 tools/pnpm-lock.yaml diff --git a/.gitignore b/.gitignore index 3f87ef433c..a580861a51 100644 --- a/.gitignore +++ b/.gitignore @@ -74,7 +74,6 @@ cpu.out /tests/*.ini /tests/**/*.git/**/*.sample /node_modules -/tools/node_modules /.venv /yarn.lock /yarn-error.log diff --git a/Makefile b/Makefile index cd4967d8f3..793e60acb2 100644 --- a/Makefile +++ b/Makefile @@ -230,7 +230,7 @@ node-check: .PHONY: clean-all clean-all: clean ## delete backend, frontend and integration files - rm -rf $(WEBPACK_DEST_ENTRIES) node_modules tools/node_modules + rm -rf $(WEBPACK_DEST_ENTRIES) node_modules .PHONY: clean clean: ## delete backend and integration files @@ -847,10 +847,6 @@ node_modules: pnpm-lock.yaml pnpm install --frozen-lockfile @touch node_modules -tools/node_modules: tools/package.json - cd tools && pnpm install - @touch tools/node_modules - .venv: uv.lock uv sync @touch .venv @@ -925,7 +921,7 @@ generate-gitignore: ## update gitignore files $(GO) run build/generate-gitignores.go .PHONY: generate-images -generate-images: | node_modules tools/node_modules ## generate images (requires cairo development packages) +generate-images: | node_modules ## generate images cd tools && node generate-images.js $(TAGS) .PHONY: generate-manpage diff --git a/package.json b/package.json index 8dce445e12..4748946aa7 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "@github/text-expander-element": "2.9.2", "@mcaptcha/vanilla-glue": "0.1.0-alpha-3", "@primer/octicons": "19.15.5", + "@resvg/resvg-wasm": "2.6.2", "@silverwind/vue3-calendar-heatmap": "2.0.6", "@techknowlogick/license-checker-webpack-plugin": "0.3.0", "add-asset-webpack-plugin": "3.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 894e896e87..a5f877c6d8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -35,6 +35,9 @@ importers: '@primer/octicons': specifier: 19.15.5 version: 19.15.5 + '@resvg/resvg-wasm': + specifier: 2.6.2 + version: 2.6.2 '@silverwind/vue3-calendar-heatmap': specifier: 2.0.6 version: 2.0.6(tippy.js@6.3.7)(vue@3.5.18(typescript@5.8.3)) @@ -797,6 +800,10 @@ packages: '@primer/octicons@19.15.5': resolution: {integrity: sha512-FCXPTlXlHvAS3rRBd1C/xVBYSYzPPwS8tNcUxnvUYK6L4/d+zUy2KExLtzW+L9xKo2z8J9uY+c1VCsNRf+b4MQ==} + '@resvg/resvg-wasm@2.6.2': + resolution: {integrity: sha512-FqALmHI8D4o6lk/LRWDnhw95z5eO+eAa6ORjVg09YRR7BkcM6oPHU9uyC0gtQG5vpFLvgpeU4+zEAz2H8APHNw==} + engines: {node: '>= 10'} + '@rolldown/pluginutils@1.0.0-beta.29': resolution: {integrity: sha512-NIJgOsMjbxAXvoGq/X0gD7VPMQ8j9g0BiDaNjVNVjvl+iKXxL3Jre0v31RmBYeLEmkbj2s02v8vFTbUXi5XS2Q==} @@ -5481,6 +5488,8 @@ snapshots: dependencies: object-assign: 4.1.1 + '@resvg/resvg-wasm@2.6.2': {} + '@rolldown/pluginutils@1.0.0-beta.29': {} '@rollup/plugin-commonjs@22.0.2(rollup@2.79.2)': diff --git a/public/assets/img/apple-touch-icon.png b/public/assets/img/apple-touch-icon.png index 2afc74db06ba23fbcce59552eb9ef5880977ef8f..5d7b9deccfe2df86b63ced70781cc5290d2e1e41 100644 GIT binary patch literal 3884 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 diff --git a/public/assets/img/avatar_default.png b/public/assets/img/avatar_default.png index cac990b56f778b0dd6de34b42a0769bde04cd01f..c1adceff7b1b457a68cf569b8be8407ed8e761d5 100644 GIT binary patch literal 4786 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 diff --git a/public/assets/img/favicon.png b/public/assets/img/favicon.png index 75bbf247d5dd2416ca669bc90c2d378c3cd670de..d0950548f2391204c87f01a4e45cfe5e571daaa8 100644 GIT binary patch literal 4335 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 KelF{r5}E+W02(O( literal 6915 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 N;OXk;vd$@?2>|PRESUfR diff --git a/public/assets/img/logo.png b/public/assets/img/logo.png index fcea13ecbdea37c69a68f4f1bf8ee33022a7ed44..c467f93ddccb5a1061aed31d5e8d3fe6294e0514 100644 GIT binary patch literal 12927 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 literal 21260 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 aGoE20%gpB9qlfB2q2cN3=d#Wzp$P!oI7qPo diff --git a/tools/generate-images.js b/tools/generate-images.js index 051446f8c1..6a4796dd48 100755 --- a/tools/generate-images.js +++ b/tools/generate-images.js @@ -1,5 +1,5 @@ #!/usr/bin/env node -import {loadSVGFromString, Canvas, Rect, util} from 'fabric/node'; // eslint-disable-line import-x/no-unresolved +import {initWasm, Resvg} from '@resvg/resvg-wasm'; import {optimize} from 'svgo'; import {readFile, writeFile} from 'node:fs/promises'; import {argv, exit} from 'node:process'; @@ -27,37 +27,23 @@ async function generate(svg, path, {size, bg}) { return; } - const {objects, options} = await loadSVGFromString(svg); - const canvas = new Canvas(); - canvas.setDimensions({width: size, height: size}); - const ctx = canvas.getContext('2d'); - ctx.scale(options.width ? (size / options.width) : 1, options.height ? (size / options.height) : 1); - - if (bg) { - canvas.add(new Rect({ - left: 0, - top: 0, - height: size * (1 / (size / options.height)), - width: size * (1 / (size / options.width)), - fill: 'white', - })); - } - - canvas.add(util.groupSVGElements(objects, options)); - canvas.renderAll(); - - let png = Buffer.from([]); - for await (const chunk of canvas.createPNGStream()) { - png = Buffer.concat([png, chunk]); - } - - await writeFile(outputFile, png); + const resvgJS = new Resvg(svg, { + fitTo: { + mode: 'width', + value: size, + }, + ...(bg && {background: 'white'}), + }); + const renderedImage = resvgJS.render(); + const pngBytes = renderedImage.asPng(); + await writeFile(outputFile, Buffer.from(pngBytes)); } async function main() { const gitea = argv.slice(2).includes('gitea'); const logoSvg = await readFile(new URL('../assets/logo.svg', import.meta.url), 'utf8'); const faviconSvg = await readFile(new URL('../assets/favicon.svg', import.meta.url), 'utf8'); + await initWasm(await readFile(new URL(import.meta.resolve('@resvg/resvg-wasm/index_bg.wasm')))); await Promise.all([ generate(logoSvg, '../public/assets/img/logo.svg', {size: 32}), diff --git a/tools/package.json b/tools/package.json deleted file mode 100644 index cd0dd1f430..0000000000 --- a/tools/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "gitea-tools", - "version": "1.0.0", - "description": "Build tools for Gitea", - "type": "module", - "private": true, - "dependencies": { - "fabric": "^6.7.1", - "svgo": "^4.0.0", - "fast-glob": "^3.3.3" - }, - "optionalDependencies": { - "canvas": "^3.2.0" - }, - "pnpm": { - "onlyBuiltDependencies": ["canvas"], - "overrides": { - "canvas": "3.2.0" - } - } -} diff --git a/tools/pnpm-lock.yaml b/tools/pnpm-lock.yaml deleted file mode 100644 index 6a6fb5f209..0000000000 --- a/tools/pnpm-lock.yaml +++ /dev/null @@ -1,1227 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -overrides: - canvas: 3.2.0 - -importers: - - .: - dependencies: - fabric: - specifier: ^6.7.1 - version: 6.7.1 - fast-glob: - specifier: ^3.3.3 - version: 3.3.3 - svgo: - specifier: ^4.0.0 - version: 4.0.0 - optionalDependencies: - canvas: - specifier: 3.2.0 - version: 3.2.0 - -packages: - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - - '@tootallnate/once@2.0.0': - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} - engines: {node: '>= 10'} - - abab@2.0.6: - resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} - deprecated: Use your platform's native atob() and btoa() methods instead - - acorn-globals@7.0.1: - resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} - - acorn-walk@8.3.4: - resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} - engines: {node: '>=0.4.0'} - - acorn@8.15.0: - resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} - engines: {node: '>=0.4.0'} - hasBin: true - - agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - - asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - - boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - - call-bind-apply-helpers@1.0.2: - resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} - engines: {node: '>= 0.4'} - - canvas@3.2.0: - resolution: {integrity: sha512-jk0GxrLtUEmW/TmFsk2WghvgHe8B0pxGilqCL21y8lHkPUGa6FTsnCNtHPOzT8O3y+N+m3espawV80bbBlgfTA==} - engines: {node: ^18.12.0 || >= 20.9.0} - - chownr@1.1.4: - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - - combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - - commander@11.1.0: - resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} - engines: {node: '>=16'} - - css-select@5.2.2: - resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} - - css-tree@2.2.1: - resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - - css-tree@3.1.0: - resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} - - css-what@6.2.2: - resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} - engines: {node: '>= 6'} - - csso@5.0.5: - resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - - cssom@0.3.8: - resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} - - cssom@0.5.0: - resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} - - cssstyle@2.3.0: - resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} - engines: {node: '>=8'} - - data-urls@3.0.2: - resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} - engines: {node: '>=12'} - - debug@4.4.1: - resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decimal.js@10.6.0: - resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} - - decompress-response@6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} - engines: {node: '>=10'} - - deep-extend@0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} - - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - - detect-libc@2.0.4: - resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} - engines: {node: '>=8'} - - dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} - - domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - - domexception@4.0.0: - resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} - engines: {node: '>=12'} - deprecated: Use your platform's native DOMException instead - - domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} - - domutils@3.2.2: - resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} - - dunder-proto@1.0.1: - resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} - engines: {node: '>= 0.4'} - - end-of-stream@1.4.5: - resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} - - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - - entities@6.0.1: - resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} - engines: {node: '>=0.12'} - - es-define-property@1.0.1: - resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} - engines: {node: '>= 0.4'} - - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - - es-object-atoms@1.1.1: - resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} - engines: {node: '>= 0.4'} - - es-set-tostringtag@2.1.0: - resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} - engines: {node: '>= 0.4'} - - escodegen@2.1.0: - resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} - engines: {node: '>=6.0'} - hasBin: true - - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - - expand-template@2.0.3: - resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} - engines: {node: '>=6'} - - fabric@6.7.1: - resolution: {integrity: sha512-dLxSmIvN4InJf4xOjbl1LFWh8WGOUIYtcuDIGs2IN0Z9lI0zGobfesDauyEhI1+owMLTPCCiEv01rpYXm7g2EQ==} - engines: {node: '>=16.20.0'} - - fast-glob@3.3.3: - resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} - engines: {node: '>=8.6.0'} - - fastq@1.19.1: - resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - form-data@4.0.4: - resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} - engines: {node: '>= 6'} - - fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - get-intrinsic@1.3.0: - resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} - engines: {node: '>= 0.4'} - - get-proto@1.0.1: - resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} - engines: {node: '>= 0.4'} - - github-from-package@0.0.0: - resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - gopd@1.2.0: - resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} - engines: {node: '>= 0.4'} - - has-symbols@1.1.0: - resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} - engines: {node: '>= 0.4'} - - has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - html-encoding-sniffer@3.0.0: - resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} - engines: {node: '>=12'} - - http-proxy-agent@5.0.0: - resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} - engines: {node: '>= 6'} - - https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - - iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-potential-custom-element-name@1.0.1: - resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - - jsdom@20.0.3: - resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} - engines: {node: '>=14'} - peerDependencies: - canvas: 3.2.0 - peerDependenciesMeta: - canvas: - optional: true - - math-intrinsics@1.1.0: - resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} - engines: {node: '>= 0.4'} - - mdn-data@2.0.28: - resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} - - mdn-data@2.12.2: - resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} - - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - - mimic-response@3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} - engines: {node: '>=10'} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - mkdirp-classic@0.5.3: - resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - napi-build-utils@2.0.0: - resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} - - node-abi@3.77.0: - resolution: {integrity: sha512-DSmt0OEcLoK4i3NuscSbGjOf3bqiDEutejqENSplMSFA/gmB8mkED9G4pKWnPl7MDU4rSHebKPHeitpDfyH0cQ==} - engines: {node: '>=10'} - - node-addon-api@7.1.1: - resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} - - nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - - nwsapi@2.2.21: - resolution: {integrity: sha512-o6nIY3qwiSXl7/LuOU0Dmuctd34Yay0yeuZRLFmDPrrdHpXKFndPj3hM+YEPVHYC5fx2otBx4Ilc/gyYSAUaIA==} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - parse5@7.3.0: - resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} - - picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - prebuild-install@7.1.3: - resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} - engines: {node: '>=10'} - hasBin: true - - psl@1.15.0: - resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} - - pump@3.0.3: - resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==} - - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - - querystringify@2.2.0: - resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - rc@1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true - - readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - - requires-port@1.0.0: - resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - - reusify@1.1.0: - resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - - sax@1.4.1: - resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} - - saxes@6.0.0: - resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} - engines: {node: '>=v12.22.7'} - - semver@7.7.2: - resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} - engines: {node: '>=10'} - hasBin: true - - simple-concat@1.0.1: - resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} - - simple-get@4.0.1: - resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} - - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - - strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - - svgo@4.0.0: - resolution: {integrity: sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw==} - engines: {node: '>=16'} - hasBin: true - - symbol-tree@3.2.4: - resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - - tar-fs@2.1.3: - resolution: {integrity: sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg==} - - tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - tough-cookie@4.1.4: - resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} - engines: {node: '>=6'} - - tr46@3.0.0: - resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} - engines: {node: '>=12'} - - tunnel-agent@0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - - universalify@0.2.0: - resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} - engines: {node: '>= 4.0.0'} - - url-parse@1.5.10: - resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - w3c-xmlserializer@4.0.0: - resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} - engines: {node: '>=14'} - - webidl-conversions@7.0.0: - resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} - engines: {node: '>=12'} - - whatwg-encoding@2.0.0: - resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} - engines: {node: '>=12'} - - whatwg-mimetype@3.0.0: - resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} - engines: {node: '>=12'} - - whatwg-url@11.0.0: - resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} - engines: {node: '>=12'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - ws@8.18.3: - resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - xml-name-validator@4.0.0: - resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} - engines: {node: '>=12'} - - xmlchars@2.2.0: - resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - -snapshots: - - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.19.1 - - '@tootallnate/once@2.0.0': - optional: true - - abab@2.0.6: - optional: true - - acorn-globals@7.0.1: - dependencies: - acorn: 8.15.0 - acorn-walk: 8.3.4 - optional: true - - acorn-walk@8.3.4: - dependencies: - acorn: 8.15.0 - optional: true - - acorn@8.15.0: - optional: true - - agent-base@6.0.2: - dependencies: - debug: 4.4.1 - transitivePeerDependencies: - - supports-color - optional: true - - asynckit@0.4.0: - optional: true - - base64-js@1.5.1: - optional: true - - bl@4.1.0: - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - optional: true - - boolbase@1.0.0: {} - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - buffer@5.7.1: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - optional: true - - call-bind-apply-helpers@1.0.2: - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - optional: true - - canvas@3.2.0: - dependencies: - node-addon-api: 7.1.1 - prebuild-install: 7.1.3 - optional: true - - chownr@1.1.4: - optional: true - - combined-stream@1.0.8: - dependencies: - delayed-stream: 1.0.0 - optional: true - - commander@11.1.0: {} - - css-select@5.2.2: - dependencies: - boolbase: 1.0.0 - css-what: 6.2.2 - domhandler: 5.0.3 - domutils: 3.2.2 - nth-check: 2.1.1 - - css-tree@2.2.1: - dependencies: - mdn-data: 2.0.28 - source-map-js: 1.2.1 - - css-tree@3.1.0: - dependencies: - mdn-data: 2.12.2 - source-map-js: 1.2.1 - - css-what@6.2.2: {} - - csso@5.0.5: - dependencies: - css-tree: 2.2.1 - - cssom@0.3.8: - optional: true - - cssom@0.5.0: - optional: true - - cssstyle@2.3.0: - dependencies: - cssom: 0.3.8 - optional: true - - data-urls@3.0.2: - dependencies: - abab: 2.0.6 - whatwg-mimetype: 3.0.0 - whatwg-url: 11.0.0 - optional: true - - debug@4.4.1: - dependencies: - ms: 2.1.3 - optional: true - - decimal.js@10.6.0: - optional: true - - decompress-response@6.0.0: - dependencies: - mimic-response: 3.1.0 - optional: true - - deep-extend@0.6.0: - optional: true - - delayed-stream@1.0.0: - optional: true - - detect-libc@2.0.4: - optional: true - - dom-serializer@2.0.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - entities: 4.5.0 - - domelementtype@2.3.0: {} - - domexception@4.0.0: - dependencies: - webidl-conversions: 7.0.0 - optional: true - - domhandler@5.0.3: - dependencies: - domelementtype: 2.3.0 - - domutils@3.2.2: - dependencies: - dom-serializer: 2.0.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - - dunder-proto@1.0.1: - dependencies: - call-bind-apply-helpers: 1.0.2 - es-errors: 1.3.0 - gopd: 1.2.0 - optional: true - - end-of-stream@1.4.5: - dependencies: - once: 1.4.0 - optional: true - - entities@4.5.0: {} - - entities@6.0.1: - optional: true - - es-define-property@1.0.1: - optional: true - - es-errors@1.3.0: - optional: true - - es-object-atoms@1.1.1: - dependencies: - es-errors: 1.3.0 - optional: true - - es-set-tostringtag@2.1.0: - dependencies: - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - optional: true - - escodegen@2.1.0: - dependencies: - esprima: 4.0.1 - estraverse: 5.3.0 - esutils: 2.0.3 - optionalDependencies: - source-map: 0.6.1 - optional: true - - esprima@4.0.1: - optional: true - - estraverse@5.3.0: - optional: true - - esutils@2.0.3: - optional: true - - expand-template@2.0.3: - optional: true - - fabric@6.7.1: - optionalDependencies: - canvas: 3.2.0 - jsdom: 20.0.3(canvas@3.2.0) - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - fast-glob@3.3.3: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 - - fastq@1.19.1: - dependencies: - reusify: 1.1.0 - - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - form-data@4.0.4: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - es-set-tostringtag: 2.1.0 - hasown: 2.0.2 - mime-types: 2.1.35 - optional: true - - fs-constants@1.0.0: - optional: true - - function-bind@1.1.2: - optional: true - - get-intrinsic@1.3.0: - 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 - optional: true - - get-proto@1.0.1: - dependencies: - dunder-proto: 1.0.1 - es-object-atoms: 1.1.1 - optional: true - - github-from-package@0.0.0: - optional: true - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - gopd@1.2.0: - optional: true - - has-symbols@1.1.0: - optional: true - - has-tostringtag@1.0.2: - dependencies: - has-symbols: 1.1.0 - optional: true - - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - optional: true - - html-encoding-sniffer@3.0.0: - dependencies: - whatwg-encoding: 2.0.0 - optional: true - - http-proxy-agent@5.0.0: - dependencies: - '@tootallnate/once': 2.0.0 - agent-base: 6.0.2 - debug: 4.4.1 - transitivePeerDependencies: - - supports-color - optional: true - - https-proxy-agent@5.0.1: - dependencies: - agent-base: 6.0.2 - debug: 4.4.1 - transitivePeerDependencies: - - supports-color - optional: true - - iconv-lite@0.6.3: - dependencies: - safer-buffer: 2.1.2 - optional: true - - ieee754@1.2.1: - optional: true - - inherits@2.0.4: - optional: true - - ini@1.3.8: - optional: true - - is-extglob@2.1.1: {} - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-number@7.0.0: {} - - is-potential-custom-element-name@1.0.1: - optional: true - - jsdom@20.0.3(canvas@3.2.0): - dependencies: - abab: 2.0.6 - acorn: 8.15.0 - acorn-globals: 7.0.1 - cssom: 0.5.0 - cssstyle: 2.3.0 - data-urls: 3.0.2 - decimal.js: 10.6.0 - domexception: 4.0.0 - escodegen: 2.1.0 - form-data: 4.0.4 - html-encoding-sniffer: 3.0.0 - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 - is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.21 - parse5: 7.3.0 - saxes: 6.0.0 - symbol-tree: 3.2.4 - tough-cookie: 4.1.4 - w3c-xmlserializer: 4.0.0 - webidl-conversions: 7.0.0 - whatwg-encoding: 2.0.0 - whatwg-mimetype: 3.0.0 - whatwg-url: 11.0.0 - ws: 8.18.3 - xml-name-validator: 4.0.0 - optionalDependencies: - canvas: 3.2.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - optional: true - - math-intrinsics@1.1.0: - optional: true - - mdn-data@2.0.28: {} - - mdn-data@2.12.2: {} - - merge2@1.4.1: {} - - micromatch@4.0.8: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - - mime-db@1.52.0: - optional: true - - mime-types@2.1.35: - dependencies: - mime-db: 1.52.0 - optional: true - - mimic-response@3.1.0: - optional: true - - minimist@1.2.8: - optional: true - - mkdirp-classic@0.5.3: - optional: true - - ms@2.1.3: - optional: true - - napi-build-utils@2.0.0: - optional: true - - node-abi@3.77.0: - dependencies: - semver: 7.7.2 - optional: true - - node-addon-api@7.1.1: - optional: true - - nth-check@2.1.1: - dependencies: - boolbase: 1.0.0 - - nwsapi@2.2.21: - optional: true - - once@1.4.0: - dependencies: - wrappy: 1.0.2 - optional: true - - parse5@7.3.0: - dependencies: - entities: 6.0.1 - optional: true - - picocolors@1.1.1: {} - - picomatch@2.3.1: {} - - prebuild-install@7.1.3: - dependencies: - detect-libc: 2.0.4 - expand-template: 2.0.3 - github-from-package: 0.0.0 - minimist: 1.2.8 - mkdirp-classic: 0.5.3 - napi-build-utils: 2.0.0 - node-abi: 3.77.0 - pump: 3.0.3 - rc: 1.2.8 - simple-get: 4.0.1 - tar-fs: 2.1.3 - tunnel-agent: 0.6.0 - optional: true - - psl@1.15.0: - dependencies: - punycode: 2.3.1 - optional: true - - pump@3.0.3: - dependencies: - end-of-stream: 1.4.5 - once: 1.4.0 - optional: true - - punycode@2.3.1: - optional: true - - querystringify@2.2.0: - optional: true - - queue-microtask@1.2.3: {} - - rc@1.2.8: - dependencies: - deep-extend: 0.6.0 - ini: 1.3.8 - minimist: 1.2.8 - strip-json-comments: 2.0.1 - optional: true - - readable-stream@3.6.2: - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - optional: true - - requires-port@1.0.0: - optional: true - - reusify@1.1.0: {} - - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 - - safe-buffer@5.2.1: - optional: true - - safer-buffer@2.1.2: - optional: true - - sax@1.4.1: {} - - saxes@6.0.0: - dependencies: - xmlchars: 2.2.0 - optional: true - - semver@7.7.2: - optional: true - - simple-concat@1.0.1: - optional: true - - simple-get@4.0.1: - dependencies: - decompress-response: 6.0.0 - once: 1.4.0 - simple-concat: 1.0.1 - optional: true - - source-map-js@1.2.1: {} - - source-map@0.6.1: - optional: true - - string_decoder@1.3.0: - dependencies: - safe-buffer: 5.2.1 - optional: true - - strip-json-comments@2.0.1: - optional: true - - svgo@4.0.0: - dependencies: - commander: 11.1.0 - css-select: 5.2.2 - css-tree: 3.1.0 - css-what: 6.2.2 - csso: 5.0.5 - picocolors: 1.1.1 - sax: 1.4.1 - - symbol-tree@3.2.4: - optional: true - - tar-fs@2.1.3: - dependencies: - chownr: 1.1.4 - mkdirp-classic: 0.5.3 - pump: 3.0.3 - tar-stream: 2.2.0 - optional: true - - tar-stream@2.2.0: - dependencies: - bl: 4.1.0 - end-of-stream: 1.4.5 - fs-constants: 1.0.0 - inherits: 2.0.4 - readable-stream: 3.6.2 - optional: true - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - tough-cookie@4.1.4: - dependencies: - psl: 1.15.0 - punycode: 2.3.1 - universalify: 0.2.0 - url-parse: 1.5.10 - optional: true - - tr46@3.0.0: - dependencies: - punycode: 2.3.1 - optional: true - - tunnel-agent@0.6.0: - dependencies: - safe-buffer: 5.2.1 - optional: true - - universalify@0.2.0: - optional: true - - url-parse@1.5.10: - dependencies: - querystringify: 2.2.0 - requires-port: 1.0.0 - optional: true - - util-deprecate@1.0.2: - optional: true - - w3c-xmlserializer@4.0.0: - dependencies: - xml-name-validator: 4.0.0 - optional: true - - webidl-conversions@7.0.0: - optional: true - - whatwg-encoding@2.0.0: - dependencies: - iconv-lite: 0.6.3 - optional: true - - whatwg-mimetype@3.0.0: - optional: true - - whatwg-url@11.0.0: - dependencies: - tr46: 3.0.0 - webidl-conversions: 7.0.0 - optional: true - - wrappy@1.0.2: - optional: true - - ws@8.18.3: - optional: true - - xml-name-validator@4.0.0: - optional: true - - xmlchars@2.2.0: - optional: true