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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 KVyI}}r2haK&p(6! literal 6786 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 S7T}>0=(UojVvYPe`2PSKhzZdE 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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 C02(O( literal 6915 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 z�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 C@6m$* literal 21260 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 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