diff --git a/CHANGELOG.md b/CHANGELOG.md index a0201e600..034eeeee5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ### Unreleased +- [BREAKING CHANGE] Remove the virtual file system (`pdfkit/virtual-fs`). Browser builds no longer depend on `fs`: pass a `Uint8Array`, `ArrayBuffer` or data URL to `registerFont`, `image` and `file` instead of a path - [BREAKING CHANGE] Restrict AcroForm options to documented mappings and explicit escape hatches. - [BREAKING CHANGE] Stop automatically uppercasing annotation option keys. - Do not mutate options passed to `doc.annotate()` and its convenience methods (link, note, strike, lineAnnotation, rectAnnotation, ellipseAnnotation, textAnnotation, fileAnnotation) diff --git a/README.md b/README.md index 5847ce878..9fec1cf3b 100644 --- a/README.md +++ b/README.md @@ -175,10 +175,9 @@ stream.on('finish', function() { You can see an interactive in-browser demo of PDFKit [here](http://pdfkit.org/demo/browser.html). -Note that in order to Browserify a project using PDFKit, you need to install the `brfs` module, -which is used to load built-in font data into the package. It is listed as a `devDependency` in -PDFKit's `package.json`, so it isn't installed by default for Node users. -If you forget to install it, Browserify will print an error message. +Note that the browser build has no access to the file system: passing a file path to +`registerFont`, `image` or `file` throws. Pass a `Uint8Array`, an `ArrayBuffer` or a +data URL instead. ## Documentation diff --git a/examples/webpack/README.md b/examples/webpack/README.md index b8dfd8a96..fb69a4f55 100644 --- a/examples/webpack/README.md +++ b/examples/webpack/README.md @@ -5,22 +5,20 @@ Simple example of using PdfKit with webpack ### Features - Minimal webpack 5 setup -- Automatically register binary files added to static-assets folder -- Register AFM fonts provided by pdfkit -- Shows how to load and register files lazily +- Bundle binary files added to static-assets folder +- Register standard fonts provided by pdfkit +- Shows how to load files lazily ### Technical details [`webpack.config.js`](webpack.config.js) -- add alias to map `fs` calls to pdfkit virtual file system [implementation](../../lib/virtual-fs.js) - ignore crypto package to save bundle file size - add aliases to native node packages (buffer, stream, zlib, util, assert) -- configure `*.afm` files to be imported as text - configure all files in `src/static-assets` folder to be imported encoded as base64 - configure all files in `src/lazy-assets` folder to be imported as URLs - convert binary files used by linebreak and fontkit to base64 ### Caveats -The strategy to register binary files and AFM fonts inlines them in source code, increasing the bundle size significantly +The strategy to bundle binary files and standard fonts inlines them in source code, increasing the bundle size significantly diff --git a/examples/webpack/src/assets.js b/examples/webpack/src/assets.js new file mode 100644 index 000000000..ce265d222 --- /dev/null +++ b/examples/webpack/src/assets.js @@ -0,0 +1,21 @@ +import { registerStdFonts } from 'pdfkit'; +import Courier from 'pdfkit/standard-fonts/Courier'; +import CourierBold from 'pdfkit/standard-fonts/CourierBold'; +import Helvetica from 'pdfkit/standard-fonts/Helvetica'; +// webpack is configured to load files in static-assets as base64 +import robotoRegular from './static-assets/fonts/Roboto-Regular.ttf'; +import bee from './static-assets/images/bee.png'; + +// is good practice to register only required fonts to avoid the bundle size increase too much +registerStdFonts(Courier, CourierBold, Helvetica); + +const toBytes = base64 => + Uint8Array.from(atob(base64), char => char.charCodeAt(0)); + +export const fonts = { + Roboto: toBytes(robotoRegular) +}; + +export const images = { + bee: `data:image/png;base64,${bee}` +}; diff --git a/examples/webpack/src/index.js b/examples/webpack/src/index.js index 3dd64cd62..7de1404e2 100644 --- a/examples/webpack/src/index.js +++ b/examples/webpack/src/index.js @@ -1,4 +1,3 @@ -import fs from 'fs'; import PDFDocument from 'pdfkit'; import ace from 'brace'; import 'brace/mode/javascript'; @@ -7,15 +6,15 @@ import { waitForData } from './pdfkitHelpers.js'; import { fetchFile } from './httpHelpers.js'; // testImage is an URL import testImageURL from './lazy-assets/test.jpeg'; -// bundle font and image files and register them in the virtual fs -import './registerStaticFiles.js'; +// bundled font and image files +import { fonts, images } from './assets.js'; var lorem = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam in suscipit purus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vivamus nec hendrerit felis. Morbi aliquam facilisis risus eu lacinia. Sed eu leo in turpis fringilla hendrerit. Ut nec accumsan nisl. Suspendisse rhoncus nisl posuere tortor tempus et dapibus elit porta. Cras leo neque, elementum a rhoncus ut, vestibulum non nibh. Phasellus pretium justo turpis. Etiam vulputate, odio vitae tincidunt ultricies, eros odio dapibus nisi, ut tincidunt lacus arcu eu elit. Aenean velit erat, vehicula eget lacinia ut, dignissim non tellus. Aliquam nec lacus mi, sed vestibulum nunc. Suspendisse potenti. Curabitur vitae sem turpis. Vestibulum sed neque eget dolor dapibus porttitor at sit amet sem. Fusce a turpis lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;\nMauris at ante tellus. Vestibulum a metus lectus. Praesent tempor purus a lacus blandit eget gravida ante hendrerit. Cras et eros metus. Sed commodo malesuada eros, vitae interdum augue semper quis. Fusce id magna nunc. Curabitur sollicitudin placerat semper. Cras et mi neque, a dignissim risus. Nulla venenatis porta lacus, vel rhoncus lectus tempor vitae. Duis sagittis venenatis rutrum. Curabitur tempor massa tortor.'; fetchFile(testImageURL) .then(testImageData => { - fs.writeFileSync('images/test.jpg', testImageData); + images.test = testImageData; }) .catch(error => { console.error(error); @@ -24,7 +23,7 @@ fetchFile(testImageURL) var initialFnCode = `// create a document var doc = new PDFDocument(); -doc.registerFont('Roboto', 'fonts/Roboto-Regular.ttf'); +doc.registerFont('Roboto', fonts.Roboto); // draw some text doc.fontSize(25).text('Here is some vector graphics...', 100, 80); @@ -68,7 +67,7 @@ doc .fontSize(25) .font('Courier') .text('And an image...') - .image('images/bee.png'); + .image(images.bee); doc.font('Courier-Bold').text('Finish...'); @@ -80,7 +79,7 @@ doc .text('Not yet. Lets try to show an image lazy loaded'); try { - doc.image('images/test.jpg'); + doc.image(images.test); } catch (error) { doc.moveDown().text(\`\${error}\`); doc.text('Image not loaded. Try again later.'); @@ -99,8 +98,16 @@ waitForData(doc) doc.end();`; function executeFn(code, PDFDocument, lorem, waitForData, iframe) { - var fn = new Function('PDFDocument', 'lorem', 'waitForData', 'iframe', code); - fn(PDFDocument, lorem, waitForData, iframe); + var fn = new Function( + 'PDFDocument', + 'lorem', + 'waitForData', + 'iframe', + 'fonts', + 'images', + code + ); + fn(PDFDocument, lorem, waitForData, iframe, fonts, images); } var editor = ace.edit('editor'); diff --git a/examples/webpack/src/registerStaticFiles.js b/examples/webpack/src/registerStaticFiles.js deleted file mode 100644 index eba56f638..000000000 --- a/examples/webpack/src/registerStaticFiles.js +++ /dev/null @@ -1,33 +0,0 @@ -// the fs here is not node fs but the provided virtual one -import fs from 'fs'; -// the content file is returned as is (webpack is configured to load *.afm files as asset/source) -import Courier from 'pdfkit/js/data/Courier.afm'; -import CourierBold from 'pdfkit/js/data/Courier-Bold.afm'; - -function registerBinaryFiles(ctx) { - ctx.keys().forEach(key => { - // extracts "./" from beginning of the key - fs.writeFileSync(key.substring(2), ctx(key)); - }); -} - -function registerAFMFonts(ctx) { - ctx.keys().forEach(key => { - const match = key.match(/([^/]*\.afm$)/); - if (match) { - // afm files must be stored on data path - fs.writeFileSync(`data/${match[0]}`, ctx(key)); - } - }); -} - -// register all files found in assets folder (relative to src) -registerBinaryFiles(require.context('./static-assets', true)); - -// register AFM fonts distributed with pdfkit -// is good practice to register only required fonts to avoid the bundle size increase too much -registerAFMFonts(require.context('pdfkit/js/data', false, /Helvetica.*\.afm$/)); - -// register files imported directly -fs.writeFileSync('data/Courier.afm', Courier); -fs.writeFileSync('data/Courier-Bold.afm', CourierBold); diff --git a/examples/webpack/webpack.config.js b/examples/webpack/webpack.config.js index f31b03cae..7905edd27 100644 --- a/examples/webpack/webpack.config.js +++ b/examples/webpack/webpack.config.js @@ -14,10 +14,6 @@ module.exports = { ], resolve: { symlinks: false, - alias: { - // maps fs to a virtual one allowing to register file content dynamically - fs: __dirname + '/../../js/virtual-fs.js' - }, fallback: { // crypto module is not necessary at browser crypto: false, @@ -31,8 +27,6 @@ module.exports = { }, module: { rules: [ - // bundle and load afm files verbatim - { test: /\.afm$/, type: 'asset/source' }, // bundle and load binary files inside static-assets folder as base64 { test: /src[/\\]static-assets/, diff --git a/lib/font_factory.js b/lib/font_factory.js index f8a7bb149..7ba1ab3c3 100644 --- a/lib/font_factory.js +++ b/lib/font_factory.js @@ -1,4 +1,4 @@ -import fs from 'fs'; +import fs from '#fs'; import { create } from 'fontkit'; import StandardFont from './font/standard'; import EmbeddedFont from './font/embedded'; diff --git a/lib/fs/browser.js b/lib/fs/browser.js new file mode 100644 index 000000000..af6659396 --- /dev/null +++ b/lib/fs/browser.js @@ -0,0 +1,11 @@ +const unsupported = (path) => { + throw new Error( + `Cannot read '${path}': file paths are not supported outside of Node. ` + + 'Pass a Uint8Array, ArrayBuffer or a data URL instead.', + ); +}; + +export default { + readFileSync: unsupported, + statSync: unsupported, +}; diff --git a/lib/fs/node.js b/lib/fs/node.js new file mode 100644 index 000000000..50098e8e9 --- /dev/null +++ b/lib/fs/node.js @@ -0,0 +1 @@ +export { default } from 'fs'; diff --git a/lib/image.js b/lib/image.js index 528cfa6f7..b40e12fa4 100644 --- a/lib/image.js +++ b/lib/image.js @@ -3,7 +3,7 @@ PDFImage - embeds images in PDF documents By Devon Govett */ -import fs from 'fs'; +import fs from '#fs'; import { fromBase64 } from './binary'; import JPEG from './image/jpeg'; import PNG from './image/png'; diff --git a/lib/mixins/attachments.js b/lib/mixins/attachments.js index 60950383b..9585e55f4 100644 --- a/lib/mixins/attachments.js +++ b/lib/mixins/attachments.js @@ -1,4 +1,4 @@ -import fs from 'fs'; +import fs from '#fs'; import { md5Hex } from '../crypto/md5'; import { escapeName } from '../object.js'; diff --git a/lib/mixins/pdfa.js b/lib/mixins/pdfa.js index 1a93ffe64..4e586c039 100644 --- a/lib/mixins/pdfa.js +++ b/lib/mixins/pdfa.js @@ -1,4 +1,7 @@ -import fs from 'fs'; +import { fromBase64 } from '../binary'; +import iccProfileBase64 from './data/sRGB_IEC61966_2_1.icc'; + +let iccProfile; export default { initPDFA(pSubset) { @@ -20,9 +23,9 @@ export default { }, _addColorOutputIntent() { - const iccProfile = fs.readFileSync( - `${__dirname}/data/sRGB_IEC61966_2_1.icc`, - ); + if (!iccProfile) { + iccProfile = fromBase64(iccProfileBase64); + } const colorProfileRef = this.ref({ Length: iccProfile.length, diff --git a/lib/virtual-fs.js b/lib/virtual-fs.js deleted file mode 100644 index 029189d7f..000000000 --- a/lib/virtual-fs.js +++ /dev/null @@ -1,34 +0,0 @@ -class VirtualFileSystem { - constructor() { - this.files = {}; - } - - readFileSync(fileName, options = {}) { - const encoding = typeof options === 'string' ? options : options.encoding; - const data = this.files[fileName]; - if (data == null) { - throw new Error(`File '${fileName}' not found in virtual file system`); - } - - if (encoding) { - // return a string - return typeof data === 'string' ? data : data.toString(encoding); - } - - return Buffer.from(data, typeof data === 'string' ? 'base64' : undefined); - } - - writeFileSync(fileName, content) { - this.files[fileName] = content; - } - - bindFileData(data = {}, options = {}) { - if (options.reset) { - this.files = data; - } else { - Object.assign(this.files, data); - } - } -} - -export default new VirtualFileSystem(); diff --git a/package.json b/package.json index a1e5aa4a9..d616d1269 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,6 @@ "@rollup/plugin-node-resolve": "^16.0.3", "blob-stream": "^0.1.3", "brace": "^0.11.1", - "brfs": "~2.0.2", "browserify": "^17.0.1", "canvas": "^3.2.3", "codemirror": "~5.65.21", @@ -45,7 +44,6 @@ "prettier": "3.4.2", "pug": "^3.0.4", "rollup": "^4.61.1", - "rollup-plugin-copy": "^3.5.0", "vitest": "^4.1.8" }, "dependencies": { @@ -82,9 +80,6 @@ }, "default": "./js/pdfkit.browser.mjs" }, - "./virtual-fs": { - "default": "./js/virtual-fs.js" - }, "./standard-fonts/Courier": { "require": "./js/standard-fonts/Courier.cjs", "default": "./js/standard-fonts/Courier.mjs" @@ -143,6 +138,10 @@ } }, "imports": { + "#fs": { + "node": "./lib/fs/node.js", + "default": "./lib/fs/browser.js" + }, "#zlib": { "node": "./lib/zlib/node.js", "default": "./lib/zlib/browser.js" @@ -152,11 +151,6 @@ "default": "./js/standard-fonts/*.mjs" } }, - "browserify": { - "transform": [ - "brfs" - ] - }, "engine": [ "node >= v20.0.0" ], diff --git a/rollup.config.mjs b/rollup.config.mjs index c59fb2517..0678c3e11 100644 --- a/rollup.config.mjs +++ b/rollup.config.mjs @@ -1,6 +1,6 @@ import { babel } from '@rollup/plugin-babel'; import { nodeResolve } from '@rollup/plugin-node-resolve'; -import copy from 'rollup-plugin-copy'; +import binary from './tools/binary-plugin.mjs'; const external = [ 'stream', @@ -55,6 +55,7 @@ export default [ interop: 'default', }, plugins: [ + binary('.icc'), nodeResolve({ exportConditions: ['node'], }), @@ -74,14 +75,6 @@ export default [ ], comments: false, }), - copy({ - targets: [ - { - src: ['lib/font/data/*.afm', 'lib/mixins/data/*.icc'], - dest: 'js/data', - }, - ], - }), ], }, // ES for green browsers @@ -95,6 +88,7 @@ export default [ sourcemap: true, }, plugins: [ + binary('.icc'), nodeResolve({ exportConditions: ['default'], }), @@ -144,32 +138,4 @@ export default [ }), ], }, - { - input: 'lib/virtual-fs.js', - external, - output: { - name: 'virtual-fs', - file: 'js/virtual-fs.js', - format: 'es', - sourcemap: false, - }, - plugins: [ - babel({ - babelHelpers: 'bundled', - babelrc: false, - presets: [ - [ - '@babel/preset-env', - { - loose: true, - modules: false, - targets: { - browsers: supportedBrowsers, - }, - }, - ], - ], - }), - ], - }, ]; diff --git a/tests/unit/fs.spec.js b/tests/unit/fs.spec.js new file mode 100644 index 000000000..f1a2c08b9 --- /dev/null +++ b/tests/unit/fs.spec.js @@ -0,0 +1,13 @@ +import fs from '../../lib/fs/browser'; + +describe('browser fs', function () { + test('readFileSync throws with the offending path', function () { + expect(() => fs.readFileSync('fonts/Roboto.ttf')).toThrow( + /Cannot read 'fonts\/Roboto\.ttf'/, + ); + }); + + test('statSync throws', function () { + expect(() => fs.statSync('file.txt')).toThrow(); + }); +}); diff --git a/tests/unit/virtual-fs.spec.js b/tests/unit/virtual-fs.spec.js deleted file mode 100644 index 81637498a..000000000 --- a/tests/unit/virtual-fs.spec.js +++ /dev/null @@ -1,90 +0,0 @@ -import fs from '../../lib/virtual-fs'; - -function checkMissingFiles(files) { - for (let file of files) { - expect(() => fs.readFileSync(`files/${file}`)).toThrow( - `File 'files/${file}' not found in virtual file system`, - ); - } -} - -describe('virtual-fs', function () { - beforeEach(() => { - fs.files = {}; - }); - - test('readFileSync', function () { - checkMissingFiles(['encoded', 'raw', 'binary']); - - fs.bindFileData({ - 'files/binary': Buffer.from('Buffer content'), - }); - - const base64Data = fs.readFileSync('files/binary', 'base64'); - expect(base64Data).toEqual('QnVmZmVyIGNvbnRlbnQ='); - }); - - test('writeFileSync', function () { - checkMissingFiles(['encoded', 'raw', 'binary']); - - fs.writeFileSync( - 'files/encoded', - Buffer.from('File content').toString('base64'), - ); - fs.writeFileSync('files/raw', 'File content'); - fs.writeFileSync('files/binary', new Uint8Array([4, 3, 1, 2])); - - const encodedData = fs.readFileSync('files/encoded'); - expect(encodedData).toBeInstanceOf(Buffer); - expect(encodedData.toString('utf8')).toEqual('File content'); - - const rawData = fs.readFileSync('files/raw', 'utf8'); - expect(rawData).toEqual('File content'); - - const binaryData = fs.readFileSync('files/binary'); - expect(binaryData).toBeInstanceOf(Buffer); - expect(binaryData.toJSON()).toEqual({ data: [4, 3, 1, 2], type: 'Buffer' }); - }); - - test('bindFileData', function () { - checkMissingFiles(['encoded', 'raw', 'binary']); - - fs.bindFileData({ - 'files/encoded': Buffer.from('File content').toString('base64'), - }); - - fs.bindFileData({ - 'files/raw': 'File content', - 'files/binary': new Uint8Array([4, 3, 1, 2]), - }); - - const encodedData = fs.readFileSync('files/encoded'); - expect(encodedData).toBeInstanceOf(Buffer); - expect(encodedData.toString('utf8')).toEqual('File content'); - - let rawData = fs.readFileSync('files/raw', 'utf8'); - expect(rawData).toEqual('File content'); - - let binaryData = fs.readFileSync('files/binary'); - expect(binaryData).toBeInstanceOf(Buffer); - expect(binaryData.toJSON()).toEqual({ data: [4, 3, 1, 2], type: 'Buffer' }); - - // reset option - fs.bindFileData( - { - 'files/raw': 'New File content', - 'files/binary2': new Uint8Array([4, 3, 1, 2]), - }, - { reset: true }, - ); - - checkMissingFiles(['encoded', 'binary']); - - rawData = fs.readFileSync('files/raw', 'utf8'); - expect(rawData).toEqual('New File content'); - - binaryData = fs.readFileSync('files/binary2'); - expect(binaryData).toBeInstanceOf(Buffer); - expect(binaryData.toJSON()).toEqual({ data: [4, 3, 1, 2], type: 'Buffer' }); - }); -}); diff --git a/tools/binary-plugin.mjs b/tools/binary-plugin.mjs new file mode 100644 index 000000000..da13abcf5 --- /dev/null +++ b/tools/binary-plugin.mjs @@ -0,0 +1,18 @@ +import { readFile } from 'fs/promises'; + +/** + * Bundles binary files (by extension) as base64 strings, so they can be + * imported without reading them from disk at runtime. + */ +export default function binary(...extensions) { + return { + name: 'binary', + enforce: 'pre', + async load(id) { + if (!extensions.some((extension) => id.endsWith(extension))) return null; + + const data = await readFile(id); + return `export default ${JSON.stringify(data.toString('base64'))};`; + }, + }; +} diff --git a/vitest.config.js b/vitest.config.js index ad561ded0..8964b1b78 100644 --- a/vitest.config.js +++ b/vitest.config.js @@ -1,6 +1,8 @@ import { defineConfig } from 'vitest/config'; +import binary from './tools/binary-plugin.mjs'; export default defineConfig({ + plugins: [binary('.icc')], test: { globals: true, environment: 'node', diff --git a/yarn.lock b/yarn.lock index 663dbbb8c..42c3eee32 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2179,25 +2179,6 @@ __metadata: languageName: node linkType: hard -"@types/fs-extra@npm:^8.0.1": - version: 8.1.5 - resolution: "@types/fs-extra@npm:8.1.5" - dependencies: - "@types/node": "npm:*" - checksum: 10c0/c9f7965bc499a6cc1cadb37a4e9002c0f33810867a0a47a132c4165cbe3b49c6ea52e26c3c38f07720540dd5c470619254c0ef00a2e14a8bf4971ec5d478ba69 - languageName: node - linkType: hard - -"@types/glob@npm:^7.1.1": - version: 7.2.0 - resolution: "@types/glob@npm:7.2.0" - dependencies: - "@types/minimatch": "npm:*" - "@types/node": "npm:*" - checksum: 10c0/a8eb5d5cb5c48fc58c7ca3ff1e1ddf771ee07ca5043da6e4871e6757b4472e2e73b4cfef2644c38983174a4bc728c73f8da02845c28a1212f98cabd293ecae98 - languageName: node - linkType: hard - "@types/json-schema@npm:^7.0.15": version: 7.0.15 resolution: "@types/json-schema@npm:7.0.15" @@ -2205,22 +2186,6 @@ __metadata: languageName: node linkType: hard -"@types/minimatch@npm:*": - version: 5.1.2 - resolution: "@types/minimatch@npm:5.1.2" - checksum: 10c0/83cf1c11748891b714e129de0585af4c55dd4c2cafb1f1d5233d79246e5e1e19d1b5ad9e8db449667b3ffa2b6c80125c429dbee1054e9efb45758dbc4e118562 - languageName: node - linkType: hard - -"@types/node@npm:*": - version: 22.14.1 - resolution: "@types/node@npm:22.14.1" - dependencies: - undici-types: "npm:~6.21.0" - checksum: 10c0/d49c4d00403b1c2348cf0701b505fd636d80aabe18102105998dc62fdd36dcaf911e73c7a868c48c21c1022b825c67b475b65b1222d84b704d8244d152bb7f86 - languageName: node - linkType: hard - "@types/resolve@npm:1.20.2": version: 1.20.2 resolution: "@types/resolve@npm:1.20.2" @@ -2437,13 +2402,6 @@ __metadata: languageName: node linkType: hard -"array-from@npm:^2.1.1": - version: 2.1.1 - resolution: "array-from@npm:2.1.1" - checksum: 10c0/565fe078a3fb8be3d1b17d1b1a6b514d14d7f6c7349fb1de0b0f4cb7e0e4ffb6d35e03ff234ac978cffb67fc8f1e93e477271b70fe2f9e0ef76d10b0402d4d26 - languageName: node - linkType: hard - "array-union@npm:^2.1.0": version: 2.1.0 resolution: "array-union@npm:2.1.0" @@ -2676,20 +2634,6 @@ __metadata: languageName: node linkType: hard -"brfs@npm:~2.0.2": - version: 2.0.2 - resolution: "brfs@npm:2.0.2" - dependencies: - quote-stream: "npm:^1.0.1" - resolve: "npm:^1.1.5" - static-module: "npm:^3.0.2" - through2: "npm:^2.0.0" - bin: - brfs: bin/cmd.js - checksum: 10c0/dea04175edeee8c42ab58c5782de1a55c0809f74d2cedd66a2714eb41ca5094ee5641a939b2f83c77e560d021f640fa9947524ee544ed0fa8415c2aa1f7d97de - languageName: node - linkType: hard - "brorand@npm:^1.0.1, brorand@npm:^1.1.0": version: 1.1.0 resolution: "brorand@npm:1.1.0" @@ -2893,13 +2837,6 @@ __metadata: languageName: node linkType: hard -"buffer-equal@npm:0.0.1": - version: 0.0.1 - resolution: "buffer-equal@npm:0.0.1" - checksum: 10c0/2fdcc84ac89032c1db8f393a550f6936f407796c15c9a2eac7b5d1cd1481621215e33d7c768a948e906ea6ae9cf054bbd5aa4492dd68d343f5a12fd48e1c1f67 - languageName: node - linkType: hard - "buffer-from@npm:^1.0.0": version: 1.1.2 resolution: "buffer-from@npm:1.1.2" @@ -3105,13 +3042,6 @@ __metadata: languageName: node linkType: hard -"colorette@npm:^1.1.0": - version: 1.4.0 - resolution: "colorette@npm:1.4.0" - checksum: 10c0/4955c8f7daafca8ae7081d672e4bd89d553bd5782b5846d5a7e05effe93c2f15f7e9c0cb46f341b59f579a39fcf436241ff79594899d75d5f3460c03d607fe9e - languageName: node - linkType: hard - "combine-source-map@npm:^0.8.0, combine-source-map@npm:~0.8.0": version: 0.8.0 resolution: "combine-source-map@npm:0.8.0" @@ -3181,13 +3111,6 @@ __metadata: languageName: node linkType: hard -"convert-source-map@npm:^1.5.1": - version: 1.9.0 - resolution: "convert-source-map@npm:1.9.0" - checksum: 10c0/281da55454bf8126cbc6625385928c43479f2060984180c42f3a86c8b8c12720a24eac260624a7d1e090004028d2dee78602330578ceec1a08e27cb8bb0a8a5b - languageName: node - linkType: hard - "convert-source-map@npm:^2.0.0": version: 2.0.0 resolution: "convert-source-map@npm:2.0.0" @@ -3286,16 +3209,6 @@ __metadata: languageName: node linkType: hard -"d@npm:1, d@npm:^1.0.1, d@npm:^1.0.2": - version: 1.0.2 - resolution: "d@npm:1.0.2" - dependencies: - es5-ext: "npm:^0.10.64" - type: "npm:^2.7.2" - checksum: 10c0/3e6ede10cd3b77586c47da48423b62bed161bf1a48bdbcc94d87263522e22f5dfb0e678a6dba5323fdc14c5d8612b7f7eb9e7d9e37b2e2d67a7bf9f116dabe5a - languageName: node - linkType: hard - "dash-ast@npm:^1.0.0": version: 1.0.0 resolution: "dash-ast@npm:1.0.0" @@ -3303,13 +3216,6 @@ __metadata: languageName: node linkType: hard -"dash-ast@npm:^2.0.1": - version: 2.0.1 - resolution: "dash-ast@npm:2.0.1" - checksum: 10c0/7729c7b2f5c80389066e5a9fb2da4a1c2338d888c801f6e32c4620c7b9b4980cd8d79bf2e15972b82f212025239aaa970cab491612545e1587ceba0c091a90de - languageName: node - linkType: hard - "debug@npm:4, debug@npm:^4.3.4, debug@npm:^4.4.3": version: 4.4.3 resolution: "debug@npm:4.4.3" @@ -3350,7 +3256,7 @@ __metadata: languageName: node linkType: hard -"deep-is@npm:^0.1.3, deep-is@npm:~0.1.3": +"deep-is@npm:^0.1.3": version: 0.1.4 resolution: "deep-is@npm:0.1.4" checksum: 10c0/7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c @@ -3496,7 +3402,7 @@ __metadata: languageName: node linkType: hard -"duplexer2@npm:^0.1.2, duplexer2@npm:~0.1.0, duplexer2@npm:~0.1.2, duplexer2@npm:~0.1.4": +"duplexer2@npm:^0.1.2, duplexer2@npm:~0.1.0, duplexer2@npm:~0.1.2": version: 0.1.4 resolution: "duplexer2@npm:0.1.4" dependencies: @@ -3624,67 +3530,6 @@ __metadata: languageName: node linkType: hard -"es5-ext@npm:^0.10.35, es5-ext@npm:^0.10.62, es5-ext@npm:^0.10.64, es5-ext@npm:~0.10.14": - version: 0.10.64 - resolution: "es5-ext@npm:0.10.64" - dependencies: - es6-iterator: "npm:^2.0.3" - es6-symbol: "npm:^3.1.3" - esniff: "npm:^2.0.1" - next-tick: "npm:^1.1.0" - checksum: 10c0/4459b6ae216f3c615db086e02437bdfde851515a101577fd61b19f9b3c1ad924bab4d197981eb7f0ccb915f643f2fc10ff76b97a680e96cbb572d15a27acd9a3 - languageName: node - linkType: hard - -"es6-iterator@npm:^2.0.3, es6-iterator@npm:~2.0.1, es6-iterator@npm:~2.0.3": - version: 2.0.3 - resolution: "es6-iterator@npm:2.0.3" - dependencies: - d: "npm:1" - es5-ext: "npm:^0.10.35" - es6-symbol: "npm:^3.1.1" - checksum: 10c0/91f20b799dba28fb05bf623c31857fc1524a0f1c444903beccaf8929ad196c8c9ded233e5ac7214fc63a92b3f25b64b7f2737fcca8b1f92d2d96cf3ac902f5d8 - languageName: node - linkType: hard - -"es6-map@npm:^0.1.5": - version: 0.1.5 - resolution: "es6-map@npm:0.1.5" - dependencies: - d: "npm:1" - es5-ext: "npm:~0.10.14" - es6-iterator: "npm:~2.0.1" - es6-set: "npm:~0.1.5" - es6-symbol: "npm:~3.1.1" - event-emitter: "npm:~0.3.5" - checksum: 10c0/62fe1a90ead1704bed699cb9c975e642023f590d5338c2a640d60ce0a846de7d5197561393ac03dd11473b96087cf8793c9e4836fe05ad4d2ef6afda6b9a3511 - languageName: node - linkType: hard - -"es6-set@npm:^0.1.5, es6-set@npm:~0.1.5": - version: 0.1.6 - resolution: "es6-set@npm:0.1.6" - dependencies: - d: "npm:^1.0.1" - es5-ext: "npm:^0.10.62" - es6-iterator: "npm:~2.0.3" - es6-symbol: "npm:^3.1.3" - event-emitter: "npm:^0.3.5" - type: "npm:^2.7.2" - checksum: 10c0/50416775e45350b5c55b35aeb18dc25e6c2017af0ec056336b8e9e7c57e73d8342df398557909e815c523779628c842fbf1b0126c4483a9fbf42b0414358866a - languageName: node - linkType: hard - -"es6-symbol@npm:^3.1.1, es6-symbol@npm:^3.1.3, es6-symbol@npm:~3.1.1": - version: 3.1.4 - resolution: "es6-symbol@npm:3.1.4" - dependencies: - d: "npm:^1.0.2" - ext: "npm:^1.7.0" - checksum: 10c0/777bf3388db5d7919e09a0fd175aa5b8a62385b17cb2227b7a137680cba62b4d9f6193319a102642aa23d5840d38a62e4784f19cfa5be4a2210a3f0e9b23d15d - languageName: node - linkType: hard - "escalade@npm:^3.2.0": version: 3.2.0 resolution: "escalade@npm:3.2.0" @@ -3706,43 +3551,6 @@ __metadata: languageName: node linkType: hard -"escodegen@npm:^1.11.1": - version: 1.14.3 - resolution: "escodegen@npm:1.14.3" - dependencies: - esprima: "npm:^4.0.1" - estraverse: "npm:^4.2.0" - esutils: "npm:^2.0.2" - optionator: "npm:^0.8.1" - source-map: "npm:~0.6.1" - dependenciesMeta: - source-map: - optional: true - bin: - escodegen: bin/escodegen.js - esgenerate: bin/esgenerate.js - checksum: 10c0/30d337803e8f44308c90267bf6192399e4b44792497c77a7506b68ab802ba6a48ebbe1ce77b219aba13dfd2de5f5e1c267e35be1ed87b2a9c3315e8b283e302a - languageName: node - linkType: hard - -"escodegen@npm:^2.1.0": - version: 2.1.0 - resolution: "escodegen@npm:2.1.0" - dependencies: - esprima: "npm:^4.0.1" - estraverse: "npm:^5.2.0" - esutils: "npm:^2.0.2" - source-map: "npm:~0.6.1" - dependenciesMeta: - source-map: - optional: true - bin: - escodegen: bin/escodegen.js - esgenerate: bin/esgenerate.js - checksum: 10c0/e1450a1f75f67d35c061bf0d60888b15f62ab63aef9df1901cffc81cffbbb9e8b3de237c5502cf8613a017c1df3a3003881307c78835a1ab54d8c8d2206e01d3 - languageName: node - linkType: hard - "eslint-scope@npm:^9.1.2": version: 9.1.2 resolution: "eslint-scope@npm:9.1.2" @@ -3814,18 +3622,6 @@ __metadata: languageName: node linkType: hard -"esniff@npm:^2.0.1": - version: 2.0.1 - resolution: "esniff@npm:2.0.1" - dependencies: - d: "npm:^1.0.1" - es5-ext: "npm:^0.10.62" - event-emitter: "npm:^0.3.5" - type: "npm:^2.7.2" - checksum: 10c0/7efd8d44ac20e5db8cb0ca77eb65eca60628b2d0f3a1030bcb05e71cc40e6e2935c47b87dba3c733db12925aa5b897f8e0e7a567a2c274206f184da676ea2e65 - languageName: node - linkType: hard - "espree@npm:^11.2.0": version: 11.2.0 resolution: "espree@npm:11.2.0" @@ -3837,16 +3633,6 @@ __metadata: languageName: node linkType: hard -"esprima@npm:^4.0.1": - version: 4.0.1 - resolution: "esprima@npm:4.0.1" - bin: - esparse: ./bin/esparse.js - esvalidate: ./bin/esvalidate.js - checksum: 10c0/ad4bab9ead0808cf56501750fd9d3fb276f6b105f987707d059005d57e182d18a7c9ec7f3a01794ebddcca676773e42ca48a32d67a250c9d35e009ca613caba3 - languageName: node - linkType: hard - "esquery@npm:^1.7.0": version: 1.7.0 resolution: "esquery@npm:1.7.0" @@ -3865,13 +3651,6 @@ __metadata: languageName: node linkType: hard -"estraverse@npm:^4.2.0": - version: 4.3.0 - resolution: "estraverse@npm:4.3.0" - checksum: 10c0/9cb46463ef8a8a4905d3708a652d60122a0c20bb58dec7e0e12ab0e7235123d74214fc0141d743c381813e1b992767e2708194f6f6e0f9fd00c1b4e0887b8b6d - languageName: node - linkType: hard - "estraverse@npm:^5.1.0, estraverse@npm:^5.2.0": version: 5.3.0 resolution: "estraverse@npm:5.3.0" @@ -3879,13 +3658,6 @@ __metadata: languageName: node linkType: hard -"estree-is-function@npm:^1.0.0": - version: 1.0.0 - resolution: "estree-is-function@npm:1.0.0" - checksum: 10c0/1bf354fd0dc7f0cf2535c46b752c58ad37384ad68281d48d3899b39d9247c33ca859ed1de94da89786b4cc79f2ae868cc55c8b63e3b8b31e59e9810a9714d07f - languageName: node - linkType: hard - "estree-walker@npm:^2.0.2": version: 2.0.2 resolution: "estree-walker@npm:2.0.2" @@ -3909,16 +3681,6 @@ __metadata: languageName: node linkType: hard -"event-emitter@npm:^0.3.5, event-emitter@npm:~0.3.5": - version: 0.3.5 - resolution: "event-emitter@npm:0.3.5" - dependencies: - d: "npm:1" - es5-ext: "npm:~0.10.14" - checksum: 10c0/75082fa8ffb3929766d0f0a063bfd6046bd2a80bea2666ebaa0cfd6f4a9116be6647c15667bea77222afc12f5b4071b68d393cf39fdaa0e8e81eda006160aff0 - languageName: node - linkType: hard - "events@npm:^3.0.0": version: 3.3.0 resolution: "events@npm:3.3.0" @@ -3958,15 +3720,6 @@ __metadata: languageName: node linkType: hard -"ext@npm:^1.7.0": - version: 1.7.0 - resolution: "ext@npm:1.7.0" - dependencies: - type: "npm:^2.7.2" - checksum: 10c0/a8e5f34e12214e9eee3a4af3b5c9d05ba048f28996450975b369fc86e5d0ef13b6df0615f892f5396a9c65d616213c25ec5b0ad17ef42eac4a500512a19da6c7 - languageName: node - linkType: hard - "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": version: 3.1.3 resolution: "fast-deep-equal@npm:3.1.3" @@ -3974,7 +3727,7 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:^3.0.3, fast-glob@npm:^3.2.9": +"fast-glob@npm:^3.2.9": version: 3.3.3 resolution: "fast-glob@npm:3.3.3" dependencies: @@ -3994,7 +3747,7 @@ __metadata: languageName: node linkType: hard -"fast-levenshtein@npm:^2.0.6, fast-levenshtein@npm:~2.0.6": +"fast-levenshtein@npm:^2.0.6": version: 2.0.6 resolution: "fast-levenshtein@npm:2.0.6" checksum: 10c0/111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4 @@ -4174,17 +3927,6 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:^8.1.0": - version: 8.1.0 - resolution: "fs-extra@npm:8.1.0" - dependencies: - graceful-fs: "npm:^4.2.0" - jsonfile: "npm:^4.0.0" - universalify: "npm:^0.1.0" - checksum: 10c0/259f7b814d9e50d686899550c4f9ded85c46c643f7fe19be69504888e007fcbc08f306fae8ec495b8b998635e997c9e3e175ff2eeed230524ef1c1684cc96423 - languageName: node - linkType: hard - "fs-minipass@npm:^3.0.0": version: 3.0.3 resolution: "fs-minipass@npm:3.0.3" @@ -4234,7 +3976,7 @@ __metadata: languageName: node linkType: hard -"get-assigned-identifiers@npm:^1.1.0, get-assigned-identifiers@npm:^1.2.0": +"get-assigned-identifiers@npm:^1.2.0": version: 1.2.0 resolution: "get-assigned-identifiers@npm:1.2.0" checksum: 10c0/11197056cac88615dddb10ef79720dd1ce844729a066ca139e447803c91a4c5d3ff127737e9598d3ef6f423c3ec5eef7828b2b10a72ec2a5a84464c5e7ac4e28 @@ -4335,7 +4077,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^7.1.0, glob@npm:^7.1.3": +"glob@npm:^7.1.0": version: 7.2.3 resolution: "glob@npm:7.2.3" dependencies: @@ -4363,22 +4105,6 @@ __metadata: languageName: node linkType: hard -"globby@npm:10.0.1": - version: 10.0.1 - resolution: "globby@npm:10.0.1" - dependencies: - "@types/glob": "npm:^7.1.1" - array-union: "npm:^2.1.0" - dir-glob: "npm:^3.0.1" - fast-glob: "npm:^3.0.3" - glob: "npm:^7.1.3" - ignore: "npm:^5.1.1" - merge2: "npm:^1.2.3" - slash: "npm:^3.0.0" - checksum: 10c0/048f8e19a5ff1b3d565372e66ac22050fcc9225ccf931ce7b0971bf264fd31ea19cdd8b8ba71e4af68d8264789c1534c23939bd56b3a5b0092c52d315ecc5f1b - languageName: node - linkType: hard - "globby@npm:^11.1.0": version: 11.1.0 resolution: "globby@npm:11.1.0" @@ -4446,13 +4172,6 @@ __metadata: languageName: node linkType: hard -"has@npm:^1.0.1": - version: 1.0.4 - resolution: "has@npm:1.0.4" - checksum: 10c0/82c1220573dc1f0a014a5d6189ae52a1f820f99dfdc00323c3a725b5002dcb7f04e44f460fea7af068474b2dd7c88cbe1846925c84017be9e31e1708936d305b - languageName: node - linkType: hard - "hash-base@npm:^3.0.0": version: 3.1.0 resolution: "hash-base@npm:3.1.0" @@ -4573,7 +4292,7 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^5.1.1, ignore@npm:^5.2.0": +"ignore@npm:^5.2.0": version: 5.3.2 resolution: "ignore@npm:5.3.2" checksum: 10c0/f9f652c957983634ded1e7f02da3b559a0d4cc210fca3792cb67f1b153623c9c42efdc1c4121af171e295444459fc4a9201101fb041b1104a3c000bccb188337 @@ -4746,13 +4465,6 @@ __metadata: languageName: node linkType: hard -"is-plain-object@npm:^3.0.0": - version: 3.0.1 - resolution: "is-plain-object@npm:3.0.1" - checksum: 10c0/eac88599d3f030b313aa5a12d09bd3c52ce3b8cd975b2fdda6bb3bb69ac0bc1b93cd292123769eb480b914d1dd1fed7633cdeb490458d41294eb32efdedec230 - languageName: node - linkType: hard - "is-promise@npm:^2.0.0": version: 2.2.2 resolution: "is-promise@npm:2.2.2" @@ -4923,18 +4635,6 @@ __metadata: languageName: node linkType: hard -"jsonfile@npm:^4.0.0": - version: 4.0.0 - resolution: "jsonfile@npm:4.0.0" - dependencies: - graceful-fs: "npm:^4.1.6" - dependenciesMeta: - graceful-fs: - optional: true - checksum: 10c0/7dc94b628d57a66b71fb1b79510d460d662eb975b5f876d723f81549c2e9cd316d58a2ddf742b2b93a4fa6b17b2accaf1a738a0e2ea114bdfb13a32e5377e480 - languageName: node - linkType: hard - "jsonfile@npm:^6.0.1": version: 6.1.0 resolution: "jsonfile@npm:6.1.0" @@ -4994,16 +4694,6 @@ __metadata: languageName: node linkType: hard -"levn@npm:~0.3.0": - version: 0.3.0 - resolution: "levn@npm:0.3.0" - dependencies: - prelude-ls: "npm:~1.1.2" - type-check: "npm:~0.3.2" - checksum: 10c0/e440df9de4233da0b389cd55bd61f0f6aaff766400bebbccd1231b81801f6dbc1d816c676ebe8d70566394b749fa624b1ed1c68070e9c94999f0bdecc64cb676 - languageName: node - linkType: hard - "lightningcss-android-arm64@npm:1.32.0": version: 1.32.0 resolution: "lightningcss-android-arm64@npm:1.32.0" @@ -5189,15 +4879,6 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:0.25.1": - version: 0.25.1 - resolution: "magic-string@npm:0.25.1" - dependencies: - sourcemap-codec: "npm:^1.4.1" - checksum: 10c0/028e49d1608932975a0499572848c916ac813cad841d8fe6ab17da47e22f47f25137b2230d88c63e517f31e3aebec71db646059079e18fe7459f634d7d1c3d3f - languageName: node - linkType: hard - "magic-string@npm:^0.30.21": version: 0.30.21 resolution: "magic-string@npm:0.30.21" @@ -5264,16 +4945,7 @@ __metadata: languageName: node linkType: hard -"merge-source-map@npm:1.0.4": - version: 1.0.4 - resolution: "merge-source-map@npm:1.0.4" - dependencies: - source-map: "npm:^0.5.6" - checksum: 10c0/6a154baada8c77ee3e3aa5ff3240d1ba9203ba93c1eaee54b4ac49b6d1057b693e17913147626aae10610a23cd5e87ea962fc0ff1cc047295d8ed1155b9848da - languageName: node - linkType: hard - -"merge2@npm:^1.2.3, merge2@npm:^1.3.0, merge2@npm:^1.4.1": +"merge2@npm:^1.3.0, merge2@npm:^1.4.1": version: 1.4.1 resolution: "merge2@npm:1.4.1" checksum: 10c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb @@ -5350,7 +5022,7 @@ __metadata: languageName: node linkType: hard -"minimist@npm:^1.1.0, minimist@npm:^1.1.3, minimist@npm:^1.2.0, minimist@npm:^1.2.3, minimist@npm:^1.2.6": +"minimist@npm:^1.1.0, minimist@npm:^1.2.0, minimist@npm:^1.2.3, minimist@npm:^1.2.6": version: 1.2.8 resolution: "minimist@npm:1.2.8" checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 @@ -5502,13 +5174,6 @@ __metadata: languageName: node linkType: hard -"next-tick@npm:^1.1.0": - version: 1.1.0 - resolution: "next-tick@npm:1.1.0" - checksum: 10c0/3ba80dd805fcb336b4f52e010992f3e6175869c8d88bf4ff0a81d5d66e6049f89993463b28211613e58a6b7fe93ff5ccbba0da18d4fa574b96289e8f0b577f28 - languageName: node - linkType: hard - "node-abi@npm:^3.3.0": version: 3.74.0 resolution: "node-abi@npm:3.74.0" @@ -5590,7 +5255,7 @@ __metadata: languageName: node linkType: hard -"object-inspect@npm:^1.13.3, object-inspect@npm:^1.6.0": +"object-inspect@npm:^1.13.3": version: 1.13.4 resolution: "object-inspect@npm:1.13.4" checksum: 10c0/d7f8711e803b96ea3191c745d6f8056ce1f2496e530e6a19a0e92d89b0fa3c76d910c31f0aa270432db6bd3b2f85500a376a83aaba849a8d518c8845b3211692 @@ -5634,20 +5299,6 @@ __metadata: languageName: node linkType: hard -"optionator@npm:^0.8.1": - version: 0.8.3 - resolution: "optionator@npm:0.8.3" - dependencies: - deep-is: "npm:~0.1.3" - fast-levenshtein: "npm:~2.0.6" - levn: "npm:~0.3.0" - prelude-ls: "npm:~1.1.2" - type-check: "npm:~0.3.2" - word-wrap: "npm:~1.2.3" - checksum: 10c0/ad7000ea661792b3ec5f8f86aac28895850988926f483b5f308f59f4607dfbe24c05df2d049532ee227c040081f39401a268cf7bbf3301512f74c4d760dc6dd8 - languageName: node - linkType: hard - "optionator@npm:^0.9.3": version: 0.9.4 resolution: "optionator@npm:0.9.4" @@ -5869,7 +5520,6 @@ __metadata: "@rollup/plugin-node-resolve": "npm:^16.0.3" blob-stream: "npm:^0.1.3" brace: "npm:^0.11.1" - brfs: "npm:~2.0.2" browserify: "npm:^17.0.1" canvas: "npm:^3.2.3" codemirror: "npm:~5.65.21" @@ -5888,7 +5538,6 @@ __metadata: prettier: "npm:3.4.2" pug: "npm:^3.0.4" rollup: "npm:^4.61.1" - rollup-plugin-copy: "npm:^3.5.0" vitest: "npm:^4.1.8" languageName: unknown linkType: soft @@ -6011,13 +5660,6 @@ __metadata: languageName: node linkType: hard -"prelude-ls@npm:~1.1.2": - version: 1.1.2 - resolution: "prelude-ls@npm:1.1.2" - checksum: 10c0/7284270064f74e0bb7f04eb9bff7be677e4146417e599ccc9c1200f0f640f8b11e592d94eb1b18f7aa9518031913bb42bea9c86af07ba69902864e61005d6f18 - languageName: node - linkType: hard - "prettier@npm:3.4.2": version: 3.4.2 resolution: "prettier@npm:3.4.2" @@ -6267,19 +5909,6 @@ __metadata: languageName: node linkType: hard -"quote-stream@npm:^1.0.1": - version: 1.0.2 - resolution: "quote-stream@npm:1.0.2" - dependencies: - buffer-equal: "npm:0.0.1" - minimist: "npm:^1.1.3" - through2: "npm:^2.0.0" - bin: - quote-stream: bin/cmd.js - checksum: 10c0/e0333a30ce04c56fa93b82ee9d41ea9f36c48d24ff4b44e416c01daee78ed31ac95f30c1c3a097f1350ab883496240c9975d53cc3ce8c737934e22e7a964e563 - languageName: node - linkType: hard - "randombytes@npm:^2.0.0, randombytes@npm:^2.0.1, randombytes@npm:^2.0.5, randombytes@npm:^2.1.0": version: 2.1.0 resolution: "randombytes@npm:2.1.0" @@ -6336,7 +5965,7 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^2.0.2, readable-stream@npm:^2.2.2, readable-stream@npm:^2.3.8, readable-stream@npm:~2.3.3, readable-stream@npm:~2.3.6": +"readable-stream@npm:^2.0.2, readable-stream@npm:^2.2.2, readable-stream@npm:^2.3.8, readable-stream@npm:~2.3.6": version: 2.3.8 resolution: "readable-stream@npm:2.3.8" dependencies: @@ -6444,7 +6073,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.1.4, resolve@npm:^1.1.5, resolve@npm:^1.15.1, resolve@npm:^1.17.0, resolve@npm:^1.4.0": +"resolve@npm:^1.1.4, resolve@npm:^1.15.1, resolve@npm:^1.17.0, resolve@npm:^1.4.0": version: 1.22.10 resolution: "resolve@npm:1.22.10" dependencies: @@ -6484,7 +6113,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@npm%3A^1.1.4#optional!builtin, resolve@patch:resolve@npm%3A^1.1.5#optional!builtin, resolve@patch:resolve@npm%3A^1.15.1#optional!builtin, resolve@patch:resolve@npm%3A^1.17.0#optional!builtin, resolve@patch:resolve@npm%3A^1.4.0#optional!builtin": +"resolve@patch:resolve@npm%3A^1.1.4#optional!builtin, resolve@patch:resolve@npm%3A^1.15.1#optional!builtin, resolve@patch:resolve@npm%3A^1.17.0#optional!builtin, resolve@patch:resolve@npm%3A^1.4.0#optional!builtin": version: 1.22.10 resolution: "resolve@patch:resolve@npm%3A1.22.10#optional!builtin::version=1.22.10&hash=c3c19d" dependencies: @@ -6623,19 +6252,6 @@ __metadata: languageName: node linkType: hard -"rollup-plugin-copy@npm:^3.5.0": - version: 3.5.0 - resolution: "rollup-plugin-copy@npm:3.5.0" - dependencies: - "@types/fs-extra": "npm:^8.0.1" - colorette: "npm:^1.1.0" - fs-extra: "npm:^8.1.0" - globby: "npm:10.0.1" - is-plain-object: "npm:^3.0.0" - checksum: 10c0/163a27756fa2dd1cf50e5b05c82c530fce05c58f11d4f400797e3c6ff3fc6787426f781d71749e15d90fa98917fe5b8caf70d88e08a574fe52574c835ba15e84 - languageName: node - linkType: hard - "rollup@npm:^4.61.1": version: 4.61.1 resolution: "rollup@npm:4.61.1" @@ -6767,21 +6383,6 @@ __metadata: languageName: node linkType: hard -"scope-analyzer@npm:^2.0.1": - version: 2.1.2 - resolution: "scope-analyzer@npm:2.1.2" - dependencies: - array-from: "npm:^2.1.1" - dash-ast: "npm:^2.0.1" - es6-map: "npm:^0.1.5" - es6-set: "npm:^0.1.5" - es6-symbol: "npm:^3.1.1" - estree-is-function: "npm:^1.0.0" - get-assigned-identifiers: "npm:^1.1.0" - checksum: 10c0/fa7bcd2207357f7c5a0d4603063afc6819ca47509c118fa531d39726ebdec2650a9b248d861c0d528a094b5f38c4f6aedf6d33665d35158bdb42bbdc6407ab13 - languageName: node - linkType: hard - "semver@npm:^6.0.0, semver@npm:^6.3.1": version: 6.3.1 resolution: "semver@npm:6.3.1" @@ -6839,13 +6440,6 @@ __metadata: languageName: node linkType: hard -"shallow-copy@npm:~0.0.1": - version: 0.0.1 - resolution: "shallow-copy@npm:0.0.1" - checksum: 10c0/ab1c762e36fa3a02cec228e111f227be0b46457a82f123c5ef13f3bc970be16b74dbfd0f1b6ffb450a66db856832800c86713ffc1ec5733d61f59f23fe114769 - languageName: node - linkType: hard - "shasum-object@npm:^1.0.0": version: 1.0.0 resolution: "shasum-object@npm:1.0.0" @@ -7000,27 +6594,13 @@ __metadata: languageName: node linkType: hard -"source-map@npm:^0.5.6, source-map@npm:~0.5.3": +"source-map@npm:~0.5.3": version: 0.5.7 resolution: "source-map@npm:0.5.7" checksum: 10c0/904e767bb9c494929be013017380cbba013637da1b28e5943b566031e29df04fba57edf3f093e0914be094648b577372bd8ad247fa98cfba9c600794cd16b599 languageName: node linkType: hard -"source-map@npm:~0.6.1": - version: 0.6.1 - resolution: "source-map@npm:0.6.1" - checksum: 10c0/ab55398007c5e5532957cb0beee2368529618ac0ab372d789806f5718123cc4367d57de3904b4e6a4170eb5a0b0f41373066d02ca0735a0c4d75c7d328d3e011 - languageName: node - linkType: hard - -"sourcemap-codec@npm:^1.4.1": - version: 1.4.8 - resolution: "sourcemap-codec@npm:1.4.8" - checksum: 10c0/f099279fdaae070ff156df7414bbe39aad69cdd615454947ed3e19136bfdfcb4544952685ee73f56e17038f4578091e12b17b283ed8ac013882916594d95b9e6 - languageName: node - linkType: hard - "ssim.js@npm:^3.1.1": version: 3.5.0 resolution: "ssim.js@npm:3.5.0" @@ -7044,37 +6624,6 @@ __metadata: languageName: node linkType: hard -"static-eval@npm:^2.0.5": - version: 2.1.1 - resolution: "static-eval@npm:2.1.1" - dependencies: - escodegen: "npm:^2.1.0" - checksum: 10c0/ad8ab8f86e6f82e3ff6c80d60a4c0ccfb086082cf594fa71a5c38cb6ed59607660e7a3e0103f3583ca38716744321d487bbe55a5ae2c6a9c965b5cf4d4cf2960 - languageName: node - linkType: hard - -"static-module@npm:^3.0.2": - version: 3.0.4 - resolution: "static-module@npm:3.0.4" - dependencies: - acorn-node: "npm:^1.3.0" - concat-stream: "npm:~1.6.0" - convert-source-map: "npm:^1.5.1" - duplexer2: "npm:~0.1.4" - escodegen: "npm:^1.11.1" - has: "npm:^1.0.1" - magic-string: "npm:0.25.1" - merge-source-map: "npm:1.0.4" - object-inspect: "npm:^1.6.0" - readable-stream: "npm:~2.3.3" - scope-analyzer: "npm:^2.0.1" - shallow-copy: "npm:~0.0.1" - static-eval: "npm:^2.0.5" - through2: "npm:~2.0.3" - checksum: 10c0/fadfe810a014564c60ce69b5b4f4fb6c66375f13ae220c6f89f8f9e5449d23cfa972481cac390e79811b1f5c9e46ee82369dca0acc1f8cc6246ed8d5eb5f4a6b - languageName: node - linkType: hard - "std-env@npm:^4.0.0-rc.1": version: 4.0.0 resolution: "std-env@npm:4.0.0" @@ -7270,7 +6819,7 @@ __metadata: languageName: node linkType: hard -"through2@npm:^2.0.0, through2@npm:~2.0.3": +"through2@npm:^2.0.0": version: 2.0.5 resolution: "through2@npm:2.0.5" dependencies: @@ -7412,22 +6961,6 @@ __metadata: languageName: node linkType: hard -"type-check@npm:~0.3.2": - version: 0.3.2 - resolution: "type-check@npm:0.3.2" - dependencies: - prelude-ls: "npm:~1.1.2" - checksum: 10c0/776217116b2b4e50e368c7ee0c22c0a85e982881c16965b90d52f216bc296d6a52ef74f9202d22158caacc092a7645b0b8d5fe529a96e3fe35d0fb393966c875 - languageName: node - linkType: hard - -"type@npm:^2.7.2": - version: 2.7.3 - resolution: "type@npm:2.7.3" - checksum: 10c0/dec6902c2c42fcb86e3adf8cdabdf80e5ef9de280872b5fd547351e9cca2fe58dd2aa6d2547626ddff174145db272f62d95c7aa7038e27c11315657d781a688d - languageName: node - linkType: hard - "typed-array-buffer@npm:^1.0.3": version: 1.0.3 resolution: "typed-array-buffer@npm:1.0.3" @@ -7470,13 +7003,6 @@ __metadata: languageName: node linkType: hard -"undici-types@npm:~6.21.0": - version: 6.21.0 - resolution: "undici-types@npm:6.21.0" - checksum: 10c0/c01ed51829b10aa72fc3ce64b747f8e74ae9b60eafa19a7b46ef624403508a54c526ffab06a14a26b3120d055e1104d7abe7c9017e83ced038ea5cf52f8d5e04 - languageName: node - linkType: hard - "unicode-canonical-property-names-ecmascript@npm:^2.0.0": version: 2.0.1 resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.1" @@ -7553,13 +7079,6 @@ __metadata: languageName: node linkType: hard -"universalify@npm:^0.1.0": - version: 0.1.2 - resolution: "universalify@npm:0.1.2" - checksum: 10c0/e70e0339f6b36f34c9816f6bf9662372bd241714dc77508d231d08386d94f2c4aa1ba1318614f92015f40d45aae1b9075cd30bd490efbe39387b60a76ca3f045 - languageName: node - linkType: hard - "universalify@npm:^2.0.0": version: 2.0.1 resolution: "universalify@npm:2.0.1" @@ -7843,7 +7362,7 @@ __metadata: languageName: node linkType: hard -"word-wrap@npm:^1.2.5, word-wrap@npm:~1.2.3": +"word-wrap@npm:^1.2.5": version: 1.2.5 resolution: "word-wrap@npm:1.2.5" checksum: 10c0/e0e4a1ca27599c92a6ca4c32260e8a92e8a44f4ef6ef93f803f8ed823f486e0889fc0b93be4db59c8d51b3064951d25e43d434e95dc8c960cc3a63d65d00ba20