From ec7a3b653e604f2782a49bc31d450d73ed216447 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Thu, 6 Feb 2025 16:11:46 +0100 Subject: [PATCH 1/3] Add `--analyze` flag to enable bundle analyzer to CLI --- packages/snaps-cli/package.json | 2 + packages/snaps-cli/src/builders.ts | 10 +- .../src/commands/build/build.test.ts | 1 + .../snaps-cli/src/commands/build/build.ts | 12 +- .../src/commands/build/index.test.ts | 4 +- .../snaps-cli/src/commands/build/index.ts | 4 +- packages/snaps-cli/src/types/yargs.d.ts | 1 + .../webpack/__snapshots__/config.test.ts.snap | 199 +++++++ packages/snaps-cli/src/webpack/config.test.ts | 19 + packages/snaps-cli/src/webpack/config.ts | 11 +- yarn.lock | 506 +++++++++++++++++- 11 files changed, 756 insertions(+), 13 deletions(-) diff --git a/packages/snaps-cli/package.json b/packages/snaps-cli/package.json index b4f00a9c49..f2ba46b56a 100644 --- a/packages/snaps-cli/package.json +++ b/packages/snaps-cli/package.json @@ -112,6 +112,7 @@ "util": "^0.12.5", "vm-browserify": "^1.1.2", "webpack": "^5.88.0", + "webpack-bundle-analyzer": "^4.10.2", "webpack-merge": "^5.9.0", "yargs": "^17.7.1" }, @@ -128,6 +129,7 @@ "@types/jest": "^27.5.1", "@types/node": "18.14.2", "@types/serve-handler": "^6.1.0", + "@types/webpack-bundle-analyzer": "^4.7.0", "@types/yargs": "^17.0.24", "@typescript-eslint/eslint-plugin": "^5.42.1", "@typescript-eslint/parser": "^6.21.0", diff --git a/packages/snaps-cli/src/builders.ts b/packages/snaps-cli/src/builders.ts index 8a4b002220..00020e40bf 100644 --- a/packages/snaps-cli/src/builders.ts +++ b/packages/snaps-cli/src/builders.ts @@ -6,8 +6,12 @@ export enum TranspilationModes { None = 'none', } -const builders: Record> = { - // eslint-disable-next-line @typescript-eslint/naming-convention +const builders = { + analyze: { + describe: 'Analyze the Snap bundle', + type: 'boolean', + }, + config: { alias: 'c', describe: 'Path to config file', @@ -146,6 +150,6 @@ const builders: Record> = { type: 'boolean', deprecated: true, }, -}; +} as const satisfies Record>; export default builders; diff --git a/packages/snaps-cli/src/commands/build/build.test.ts b/packages/snaps-cli/src/commands/build/build.test.ts index f8c774304c..7b26e287b8 100644 --- a/packages/snaps-cli/src/commands/build/build.test.ts +++ b/packages/snaps-cli/src/commands/build/build.test.ts @@ -27,6 +27,7 @@ describe('buildHandler', () => { expect(process.exitCode).not.toBe(1); expect(build).toHaveBeenCalledWith(config, { + analyze: false, evaluate: false, spinner: expect.any(Object), }); diff --git a/packages/snaps-cli/src/commands/build/build.ts b/packages/snaps-cli/src/commands/build/build.ts index c10aecb491..d6acdb906a 100644 --- a/packages/snaps-cli/src/commands/build/build.ts +++ b/packages/snaps-cli/src/commands/build/build.ts @@ -9,6 +9,7 @@ import { evaluate } from '../eval'; import { build } from './implementation'; type BuildContext = { + analyze: boolean; config: ProcessedWebpackConfig; }; @@ -27,10 +28,10 @@ const steps: Steps = [ }, { name: 'Building the snap bundle.', - task: async ({ config, spinner }) => { + task: async ({ analyze, config, spinner }) => { // We don't evaluate the bundle here, because it's done in a separate // step. - return await build(config, { evaluate: false, spinner }); + return await build(config, { analyze, evaluate: false, spinner }); }, }, { @@ -57,10 +58,15 @@ const steps: Steps = [ * This creates the destination directory if it doesn't exist. * * @param config - The config object. + * @param analyze - Whether to analyze the bundle. * @returns Nothing. */ -export async function buildHandler(config: ProcessedConfig): Promise { +export async function buildHandler( + config: ProcessedConfig, + analyze = false, +): Promise { return await executeSteps(steps, { config, + analyze, }); } diff --git a/packages/snaps-cli/src/commands/build/index.test.ts b/packages/snaps-cli/src/commands/build/index.test.ts index 85a7c82082..a400072577 100644 --- a/packages/snaps-cli/src/commands/build/index.test.ts +++ b/packages/snaps-cli/src/commands/build/index.test.ts @@ -10,8 +10,8 @@ describe('build command', () => { const config = getMockConfig('webpack'); // @ts-expect-error - Partial `YargsArgs` is fine for testing. - await command.handler({ context: { config } }); + await command.handler({ analyze: false, context: { config } }); - expect(buildHandler).toHaveBeenCalledWith(config); + expect(buildHandler).toHaveBeenCalledWith(config, false); }); }); diff --git a/packages/snaps-cli/src/commands/build/index.ts b/packages/snaps-cli/src/commands/build/index.ts index 28b8c687c3..31fcc08b01 100644 --- a/packages/snaps-cli/src/commands/build/index.ts +++ b/packages/snaps-cli/src/commands/build/index.ts @@ -9,6 +9,7 @@ const command = { desc: 'Build snap from source', builder: (yarg: yargs.Argv) => { yarg + .option('analyze', builders.analyze) .option('dist', builders.dist) .option('eval', builders.eval) .option('manifest', builders.manifest) @@ -22,7 +23,8 @@ const command = { .implies('writeManifest', 'manifest') .implies('depsToTranspile', 'transpilationMode'); }, - handler: async (argv: YargsArgs) => buildHandler(argv.context.config), + handler: async (argv: YargsArgs) => + buildHandler(argv.context.config, argv.analyze), }; export * from './implementation'; diff --git a/packages/snaps-cli/src/types/yargs.d.ts b/packages/snaps-cli/src/types/yargs.d.ts index 3a55d5e928..cfcfe31003 100644 --- a/packages/snaps-cli/src/types/yargs.d.ts +++ b/packages/snaps-cli/src/types/yargs.d.ts @@ -20,6 +20,7 @@ type YargsArgs = { config: ProcessedConfig; }; + analyze?: boolean; fix?: boolean; input?: string; diff --git a/packages/snaps-cli/src/webpack/__snapshots__/config.test.ts.snap b/packages/snaps-cli/src/webpack/__snapshots__/config.test.ts.snap index a55cc5eeae..382933b893 100644 --- a/packages/snaps-cli/src/webpack/__snapshots__/config.test.ts.snap +++ b/packages/snaps-cli/src/webpack/__snapshots__/config.test.ts.snap @@ -3440,3 +3440,202 @@ exports[`getDefaultConfiguration returns the default Webpack configuration for t "target": "browserslist:/foo/bar/.browserslistrc", } `; + +exports[`getDefaultConfiguration returns the default Webpack configuration when \`analyze\` is \`true\` 1`] = ` +{ + "devtool": false, + "entry": "/foo/bar/src/index.js", + "infrastructureLogging": { + "level": "none", + }, + "mode": "production", + "module": { + "rules": [ + { + "exclude": /node_modules/u, + "test": /\\\\\\.\\(js\\|jsx\\|mjs\\|cjs\\|ts\\|tsx\\)\\$/u, + "use": { + "loader": "/foo/bar/node_modules/swc-loader/index.js", + "options": { + "env": { + "targets": "chrome >= 90, firefox >= 91", + }, + "jsc": { + "parser": { + "syntax": "typescript", + "tsx": true, + }, + "transform": { + "react": { + "importSource": "@metamask/snaps-sdk", + "runtime": "automatic", + "useBuiltins": true, + }, + }, + }, + "module": { + "type": "es6", + }, + "sourceMaps": false, + "sync": false, + }, + }, + }, + { + "resolve": { + "fullySpecified": false, + }, + "test": /\\\\\\.m\\?js\\$/u, + }, + { + "test": /\\\\\\.svg\\$/u, + "type": "asset/source", + }, + { + "generator": { + "dataUrl": [Function], + }, + "test": /\\\\\\.png\\$/u, + "type": "asset/inline", + }, + { + "generator": { + "dataUrl": [Function], + }, + "test": /\\\\\\.jpe\\?g\\$/u, + "type": "asset/inline", + }, + false, + ], + }, + "optimization": { + "minimize": true, + "minimizer": [ + TerserPlugin { + "options": { + "exclude": undefined, + "extractComments": true, + "include": undefined, + "minimizer": { + "implementation": [Function], + "options": {}, + }, + "parallel": true, + "test": /\\\\\\.\\[cm\\]\\?js\\(\\\\\\?\\.\\*\\)\\?\\$/i, + }, + }, + ], + "nodeEnv": false, + }, + "output": { + "chunkFormat": "commonjs", + "clean": false, + "filename": "bundle.js", + "library": { + "name": "module.exports", + "type": "assign", + }, + "path": "/foo/bar/dist", + "publicPath": "/", + }, + "performance": { + "hints": false, + }, + "plugins": [ + BundleAnalyzerPlugin { + "logger": Logger { + "activeLevels": Set { + "info", + "warn", + "error", + "silent", + }, + }, + "opts": { + "analyzerHost": "127.0.0.1", + "analyzerMode": "server", + "analyzerPort": 8888, + "analyzerUrl": [Function], + "defaultSizes": "parsed", + "excludeAssets": null, + "generateStatsFile": false, + "logLevel": "info", + "openAnalyzer": true, + "reportFilename": null, + "reportTitle": [Function], + "startAnalyzer": true, + "statsFilename": "stats.json", + "statsOptions": null, + }, + "server": null, + }, + SnapsWebpackPlugin { + "options": { + "eval": undefined, + "manifestPath": "/foo/bar/snap.manifest.json", + "writeManifest": true, + }, + }, + SnapsStatsPlugin { + "options": { + "verbose": false, + }, + }, + DefinePlugin { + "definitions": { + "process.env.DEBUG": ""false"", + "process.env.NODE_DEBUG": ""false"", + "process.env.NODE_ENV": ""production"", + }, + }, + ProgressPlugin { + "dependenciesCount": 10000, + "handler": [Function], + "modulesCount": 5000, + "percentBy": undefined, + "profile": false, + "showActiveModules": false, + "showDependencies": true, + "showEntries": true, + "showModules": true, + }, + SnapsBundleWarningsPlugin { + "options": { + "buffer": true, + "builtInResolver": SnapsBuiltInResolver { + "options": { + "ignore": [], + }, + "unresolvedModules": Set {}, + }, + "builtIns": true, + }, + }, + ], + "resolve": { + "extensions": [ + ".js", + ".jsx", + ".mjs", + ".cjs", + ".ts", + ".tsx", + ], + "fallback": { + "buffer": false, + "fs": false, + "path": false, + }, + "plugins": [ + SnapsBuiltInResolver { + "options": { + "ignore": [], + }, + "unresolvedModules": Set {}, + }, + ], + }, + "stats": "none", + "target": "browserslist:/foo/bar/.browserslistrc", +} +`; diff --git a/packages/snaps-cli/src/webpack/config.test.ts b/packages/snaps-cli/src/webpack/config.test.ts index 0bc5bc56e4..168e4cebff 100644 --- a/packages/snaps-cli/src/webpack/config.test.ts +++ b/packages/snaps-cli/src/webpack/config.test.ts @@ -200,6 +200,25 @@ describe('getDefaultConfiguration', () => { }, ); + it('returns the default Webpack configuration when `analyze` is `true`', async () => { + const config = getMockConfig('webpack', { + input: 'src/index.js', + output: { + path: 'dist', + }, + manifest: { + path: 'snap.manifest.json', + }, + }); + + jest.spyOn(process, 'cwd').mockReturnValue('/foo/bar'); + + const output = await getDefaultConfiguration(config, { analyze: true }); + + // eslint-disable-next-line jest/no-restricted-matchers + expect(normalizeConfig(output)).toMatchSnapshot(); + }); + it.each([ getMockConfig('browserify', { cliOptions: { diff --git a/packages/snaps-cli/src/webpack/config.ts b/packages/snaps-cli/src/webpack/config.ts index 8fd69173ca..e2666c2504 100644 --- a/packages/snaps-cli/src/webpack/config.ts +++ b/packages/snaps-cli/src/webpack/config.ts @@ -3,8 +3,9 @@ import ForkTsCheckerWebpackPlugin from 'fork-ts-checker-webpack-plugin'; import type { Ora } from 'ora'; import { resolve } from 'path'; import TerserPlugin from 'terser-webpack-plugin'; -import type { Configuration } from 'webpack'; +import type { Configuration, WebpackPluginInstance } from 'webpack'; import { DefinePlugin, ProgressPlugin, ProvidePlugin } from 'webpack'; +import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'; import type { ProcessedWebpackConfig } from '../config'; import { getFunctionLoader, wasm } from './loaders'; @@ -25,6 +26,11 @@ import { } from './utils'; export type WebpackOptions = { + /** + * Whether to analyze the bundle. + */ + analyze?: boolean; + /** * Whether to watch for changes. */ @@ -282,6 +288,9 @@ export async function getDefaultConfiguration( * @see https://webpack.js.org/configuration/plugins/ */ plugins: [ + options.analyze && + (new BundleAnalyzerPlugin() as unknown as WebpackPluginInstance), + /** * The `ForkTsCheckerWebpackPlugin` is a Webpack plugin that checks * Typescript type definitions, it does this in a separate process for speed. diff --git a/yarn.lock b/yarn.lock index dac0223492..5160fb6c02 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2645,6 +2645,13 @@ __metadata: languageName: node linkType: hard +"@discoveryjs/json-ext@npm:0.5.7": + version: 0.5.7 + resolution: "@discoveryjs/json-ext@npm:0.5.7" + checksum: 10/b95682a852448e8ef50d6f8e3b7ba288aab3fd98a2bafbe46881a3db0c6e7248a2debe9e1ee0d4137c521e4743ca5bbcb1c0765c9d7b3e0ef53231506fec42b4 + languageName: node + linkType: hard + "@discoveryjs/json-ext@npm:^0.5.0": version: 0.5.6 resolution: "@discoveryjs/json-ext@npm:0.5.6" @@ -3697,6 +3704,13 @@ __metadata: languageName: node linkType: hard +"@jridgewell/resolve-uri@npm:^3.1.0": + version: 3.1.2 + resolution: "@jridgewell/resolve-uri@npm:3.1.2" + checksum: 10/97106439d750a409c22c8bff822d648f6a71f3aa9bc8e5129efdc36343cd3096ddc4eeb1c62d2fe48e9bdd4db37b05d4646a17114ecebd3bbcacfa2de51c3c1d + languageName: node + linkType: hard + "@jridgewell/set-array@npm:^1.0.0, @jridgewell/set-array@npm:^1.0.1": version: 1.1.2 resolution: "@jridgewell/set-array@npm:1.1.2" @@ -3728,6 +3742,13 @@ __metadata: languageName: node linkType: hard +"@jridgewell/sourcemap-codec@npm:^1.4.14": + version: 1.5.0 + resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" + checksum: 10/4ed6123217569a1484419ac53f6ea0d9f3b57e5b57ab30d7c267bdb27792a27eb0e4b08e84a2680aa55cc2f2b411ffd6ec3db01c44fdc6dc43aca4b55f8374fd + languageName: node + linkType: hard + "@jridgewell/trace-mapping@npm:0.3.9": version: 0.3.9 resolution: "@jridgewell/trace-mapping@npm:0.3.9" @@ -3748,6 +3769,16 @@ __metadata: languageName: node linkType: hard +"@jridgewell/trace-mapping@npm:^0.3.25": + version: 0.3.25 + resolution: "@jridgewell/trace-mapping@npm:0.3.25" + dependencies: + "@jridgewell/resolve-uri": "npm:^3.1.0" + "@jridgewell/sourcemap-codec": "npm:^1.4.14" + checksum: 10/dced32160a44b49d531b80a4a2159dceab6b3ddf0c8e95a0deae4b0e894b172defa63d5ac52a19c2068e1fe7d31ea4ba931fbeec103233ecb4208953967120fc + languageName: node + linkType: hard + "@jspm/core@npm:^2.0.1": version: 2.0.1 resolution: "@jspm/core@npm:2.0.1" @@ -5639,6 +5670,7 @@ __metadata: "@types/jest": "npm:^27.5.1" "@types/node": "npm:18.14.2" "@types/serve-handler": "npm:^6.1.0" + "@types/webpack-bundle-analyzer": "npm:^4.7.0" "@types/yargs": "npm:^17.0.24" "@typescript-eslint/eslint-plugin": "npm:^5.42.1" "@typescript-eslint/parser": "npm:^6.21.0" @@ -5697,6 +5729,7 @@ __metadata: util: "npm:^0.12.5" vm-browserify: "npm:^1.1.2" webpack: "npm:^5.88.0" + webpack-bundle-analyzer: "npm:^4.10.2" webpack-merge: "npm:^5.9.0" yargs: "npm:^17.7.1" bin: @@ -6916,6 +6949,13 @@ __metadata: languageName: node linkType: hard +"@polka/url@npm:^1.0.0-next.24": + version: 1.0.0-next.28 + resolution: "@polka/url@npm:1.0.0-next.28" + checksum: 10/7402aaf1de781d0eb0870d50cbcd394f949aee11b38a267a5c3b4e3cfee117e920693e6e93ce24c87ae2d477a59634f39d9edde8e86471cae756839b07c79af7 + languageName: node + linkType: hard + "@popperjs/core@npm:^2.11.6, @popperjs/core@npm:^2.11.8, @popperjs/core@npm:^2.9.3": version: 2.11.8 resolution: "@popperjs/core@npm:2.11.8" @@ -7689,6 +7729,16 @@ __metadata: languageName: node linkType: hard +"@types/eslint-scope@npm:^3.7.7": + version: 3.7.7 + resolution: "@types/eslint-scope@npm:3.7.7" + dependencies: + "@types/eslint": "npm:*" + "@types/estree": "npm:*" + checksum: 10/e2889a124aaab0b89af1bab5959847c5bec09809209255de0e63b9f54c629a94781daa04adb66bffcdd742f5e25a17614fb933965093c0eea64aacda4309380e + languageName: node + linkType: hard + "@types/eslint@npm:*": version: 8.4.1 resolution: "@types/eslint@npm:8.4.1" @@ -7706,6 +7756,13 @@ __metadata: languageName: node linkType: hard +"@types/estree@npm:^1.0.6": + version: 1.0.6 + resolution: "@types/estree@npm:1.0.6" + checksum: 10/9d35d475095199c23e05b431bcdd1f6fec7380612aed068b14b2a08aa70494de8a9026765a5a91b1073f636fb0368f6d8973f518a31391d519e20c59388ed88d + languageName: node + linkType: hard + "@types/express-serve-static-core@npm:*, @types/express-serve-static-core@npm:^4.17.33": version: 4.17.35 resolution: "@types/express-serve-static-core@npm:4.17.35" @@ -8219,6 +8276,17 @@ __metadata: languageName: node linkType: hard +"@types/webpack-bundle-analyzer@npm:^4.7.0": + version: 4.7.0 + resolution: "@types/webpack-bundle-analyzer@npm:4.7.0" + dependencies: + "@types/node": "npm:*" + tapable: "npm:^2.2.0" + webpack: "npm:^5" + checksum: 10/2d9a2d4e26b1239623df97caceddd37a14c258623bccf27aca9da65b963cad33fdbfdc3a4770a58dbd2f9e6f591f62990616938aa52edf58aae3f6166c0045c1 + languageName: node + linkType: hard + "@types/webpack-env@npm:^1.18.1": version: 1.18.1 resolution: "@types/webpack-env@npm:1.18.1" @@ -8804,6 +8872,16 @@ __metadata: languageName: node linkType: hard +"@webassemblyjs/ast@npm:1.14.1, @webassemblyjs/ast@npm:^1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/ast@npm:1.14.1" + dependencies: + "@webassemblyjs/helper-numbers": "npm:1.13.2" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" + checksum: 10/f83e6abe38057f5d87c1fb356513a371a8b43c9b87657f2790741a66b1ef8ecf958d1391bc42f27c5fb33f58ab8286a38ea849fdd21f433cd4df1307424bab45 + languageName: node + linkType: hard + "@webassemblyjs/floating-point-hex-parser@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.6" @@ -8811,6 +8889,13 @@ __metadata: languageName: node linkType: hard +"@webassemblyjs/floating-point-hex-parser@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.13.2" + checksum: 10/e866ec8433f4a70baa511df5e8f2ebcd6c24f4e2cc6274c7c5aabe2bcce3459ea4680e0f35d450e1f3602acf3913b6b8e4f15069c8cfd34ae8609fb9a7d01795 + languageName: node + linkType: hard + "@webassemblyjs/helper-api-error@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/helper-api-error@npm:1.11.6" @@ -8818,6 +8903,13 @@ __metadata: languageName: node linkType: hard +"@webassemblyjs/helper-api-error@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/helper-api-error@npm:1.13.2" + checksum: 10/48b5df7fd3095bb252f59a139fe2cbd999a62ac9b488123e9a0da3906ad8a2f2da7b2eb21d328c01a90da987380928706395c2897d1f3ed9e2125b6d75a920d0 + languageName: node + linkType: hard + "@webassemblyjs/helper-buffer@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/helper-buffer@npm:1.11.6" @@ -8825,6 +8917,13 @@ __metadata: languageName: node linkType: hard +"@webassemblyjs/helper-buffer@npm:1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/helper-buffer@npm:1.14.1" + checksum: 10/9690afeafa5e765a34620aa6216e9d40f9126d4e37e9726a2594bf60cab6b211ef20ab6670fd3c4449dd4a3497e69e49b2b725c8da0fb213208c7f45f15f5d5b + languageName: node + linkType: hard + "@webassemblyjs/helper-numbers@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/helper-numbers@npm:1.11.6" @@ -8836,6 +8935,17 @@ __metadata: languageName: node linkType: hard +"@webassemblyjs/helper-numbers@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/helper-numbers@npm:1.13.2" + dependencies: + "@webassemblyjs/floating-point-hex-parser": "npm:1.13.2" + "@webassemblyjs/helper-api-error": "npm:1.13.2" + "@xtuc/long": "npm:4.2.2" + checksum: 10/e4c7d0b09811e1cda8eec644a022b560b28f4e974f50195375ccd007df5ee48a922a6dcff5ac40b6a8ec850d56d0ea6419318eee49fec7819ede14e90417a6a4 + languageName: node + linkType: hard + "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6" @@ -8843,6 +8953,13 @@ __metadata: languageName: node linkType: hard +"@webassemblyjs/helper-wasm-bytecode@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.13.2" + checksum: 10/3edd191fff7296df1ef3b023bdbe6cb5ea668f6386fd197ccfce46015c6f2a8cc9763cfb86503a0b94973ad27996645afff2252ee39a236513833259a47af6ed + languageName: node + linkType: hard + "@webassemblyjs/helper-wasm-section@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/helper-wasm-section@npm:1.11.6" @@ -8855,6 +8972,18 @@ __metadata: languageName: node linkType: hard +"@webassemblyjs/helper-wasm-section@npm:1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/helper-wasm-section@npm:1.14.1" + dependencies: + "@webassemblyjs/ast": "npm:1.14.1" + "@webassemblyjs/helper-buffer": "npm:1.14.1" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" + "@webassemblyjs/wasm-gen": "npm:1.14.1" + checksum: 10/6b73874f906532512371181d7088460f767966f26309e836060c5a8e4e4bfe6d523fb5f4c034b34aa22ebb1192815f95f0e264298769485c1f0980fdd63ae0ce + languageName: node + linkType: hard + "@webassemblyjs/ieee754@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/ieee754@npm:1.11.6" @@ -8864,6 +8993,15 @@ __metadata: languageName: node linkType: hard +"@webassemblyjs/ieee754@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/ieee754@npm:1.13.2" + dependencies: + "@xtuc/ieee754": "npm:^1.2.0" + checksum: 10/d7e3520baa37a7309fa7db4d73d69fb869878853b1ebd4b168821bd03fcc4c0e1669c06231315b0039035d9a7a462e53de3ad982da4a426a4b0743b5888e8673 + languageName: node + linkType: hard + "@webassemblyjs/leb128@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/leb128@npm:1.11.6" @@ -8873,6 +9011,15 @@ __metadata: languageName: node linkType: hard +"@webassemblyjs/leb128@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/leb128@npm:1.13.2" + dependencies: + "@xtuc/long": "npm:4.2.2" + checksum: 10/3a10542c86807061ec3230bac8ee732289c852b6bceb4b88ebd521a12fbcecec7c432848284b298154f28619e2746efbed19d6904aef06c49ef20a0b85f650cf + languageName: node + linkType: hard + "@webassemblyjs/utf8@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/utf8@npm:1.11.6" @@ -8880,6 +9027,13 @@ __metadata: languageName: node linkType: hard +"@webassemblyjs/utf8@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/utf8@npm:1.13.2" + checksum: 10/27885e5d19f339501feb210867d69613f281eda695ac508f04d69fa3398133d05b6870969c0242b054dc05420ed1cc49a64dea4fe0588c18d211cddb0117cc54 + languageName: node + linkType: hard + "@webassemblyjs/wasm-edit@npm:^1.11.5": version: 1.11.6 resolution: "@webassemblyjs/wasm-edit@npm:1.11.6" @@ -8896,6 +9050,22 @@ __metadata: languageName: node linkType: hard +"@webassemblyjs/wasm-edit@npm:^1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/wasm-edit@npm:1.14.1" + dependencies: + "@webassemblyjs/ast": "npm:1.14.1" + "@webassemblyjs/helper-buffer": "npm:1.14.1" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" + "@webassemblyjs/helper-wasm-section": "npm:1.14.1" + "@webassemblyjs/wasm-gen": "npm:1.14.1" + "@webassemblyjs/wasm-opt": "npm:1.14.1" + "@webassemblyjs/wasm-parser": "npm:1.14.1" + "@webassemblyjs/wast-printer": "npm:1.14.1" + checksum: 10/c62c50eadcf80876713f8c9f24106b18cf208160ab842fcb92060fd78c37bf37e7fcf0b7cbf1afc05d230277c2ce0f3f728432082c472dd1293e184a95f9dbdd + languageName: node + linkType: hard + "@webassemblyjs/wasm-gen@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/wasm-gen@npm:1.11.6" @@ -8909,6 +9079,19 @@ __metadata: languageName: node linkType: hard +"@webassemblyjs/wasm-gen@npm:1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/wasm-gen@npm:1.14.1" + dependencies: + "@webassemblyjs/ast": "npm:1.14.1" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" + "@webassemblyjs/ieee754": "npm:1.13.2" + "@webassemblyjs/leb128": "npm:1.13.2" + "@webassemblyjs/utf8": "npm:1.13.2" + checksum: 10/6085166b0987d3031355fe17a4f9ef0f412e08098d95454059aced2bd72a4c3df2bc099fa4d32d640551fc3eca1ac1a997b44432e46dc9d84642688e42c17ed4 + languageName: node + linkType: hard + "@webassemblyjs/wasm-opt@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/wasm-opt@npm:1.11.6" @@ -8921,6 +9104,18 @@ __metadata: languageName: node linkType: hard +"@webassemblyjs/wasm-opt@npm:1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/wasm-opt@npm:1.14.1" + dependencies: + "@webassemblyjs/ast": "npm:1.14.1" + "@webassemblyjs/helper-buffer": "npm:1.14.1" + "@webassemblyjs/wasm-gen": "npm:1.14.1" + "@webassemblyjs/wasm-parser": "npm:1.14.1" + checksum: 10/fa5d1ef8d2156e7390927f938f513b7fb4440dd6804b3d6c8622b7b1cf25a3abf1a5809f615896d4918e04b27b52bc3cbcf18faf2d563cb563ae0a9204a492db + languageName: node + linkType: hard + "@webassemblyjs/wasm-parser@npm:1.11.6, @webassemblyjs/wasm-parser@npm:^1.11.5": version: 1.11.6 resolution: "@webassemblyjs/wasm-parser@npm:1.11.6" @@ -8935,6 +9130,20 @@ __metadata: languageName: node linkType: hard +"@webassemblyjs/wasm-parser@npm:1.14.1, @webassemblyjs/wasm-parser@npm:^1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/wasm-parser@npm:1.14.1" + dependencies: + "@webassemblyjs/ast": "npm:1.14.1" + "@webassemblyjs/helper-api-error": "npm:1.13.2" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" + "@webassemblyjs/ieee754": "npm:1.13.2" + "@webassemblyjs/leb128": "npm:1.13.2" + "@webassemblyjs/utf8": "npm:1.13.2" + checksum: 10/07d9805fda88a893c984ed93d5a772d20d671e9731358ab61c6c1af8e0e58d1c42fc230c18974dfddebc9d2dd7775d514ba4d445e70080b16478b4b16c39c7d9 + languageName: node + linkType: hard + "@webassemblyjs/wast-printer@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/wast-printer@npm:1.11.6" @@ -8945,6 +9154,16 @@ __metadata: languageName: node linkType: hard +"@webassemblyjs/wast-printer@npm:1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/wast-printer@npm:1.14.1" + dependencies: + "@webassemblyjs/ast": "npm:1.14.1" + "@xtuc/long": "npm:4.2.2" + checksum: 10/cef09aad2fcd291bfcf9efdae2ea1e961a1ba0f925d1d9dcdd8c746d32fbaf431b6d26a0241699c0e39f82139018aa720b4ceb84ac6f4c78f13072747480db69 + languageName: node + linkType: hard + "@webpack-cli/configtest@npm:^2.1.1": version: 2.1.1 resolution: "@webpack-cli/configtest@npm:2.1.1" @@ -9120,6 +9339,15 @@ __metadata: languageName: node linkType: hard +"acorn-walk@npm:^8.0.0": + version: 8.3.4 + resolution: "acorn-walk@npm:8.3.4" + dependencies: + acorn: "npm:^8.11.0" + checksum: 10/871386764e1451c637bb8ab9f76f4995d408057e9909be6fb5ad68537ae3375d85e6a6f170b98989f44ab3ff6c74ad120bc2779a3d577606e7a0cd2b4efcaf77 + languageName: node + linkType: hard + "acorn-walk@npm:^8.0.2, acorn-walk@npm:^8.1.1": version: 8.2.0 resolution: "acorn-walk@npm:8.2.0" @@ -9136,6 +9364,15 @@ __metadata: languageName: node linkType: hard +"acorn@npm:^8.0.4, acorn@npm:^8.11.0, acorn@npm:^8.14.0": + version: 8.14.0 + resolution: "acorn@npm:8.14.0" + bin: + acorn: bin/acorn + checksum: 10/6df29c35556782ca9e632db461a7f97947772c6c1d5438a81f0c873a3da3a792487e83e404d1c6c25f70513e91aa18745f6eafb1fcc3a43ecd1920b21dd173d2 + languageName: node + linkType: hard + "acorn@npm:^8.1.0, acorn@npm:^8.10.0, acorn@npm:^8.4.1, acorn@npm:^8.7.1, acorn@npm:^8.8.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": version: 8.12.1 resolution: "acorn@npm:8.12.1" @@ -10240,6 +10477,20 @@ __metadata: languageName: node linkType: hard +"browserslist@npm:^4.24.0": + version: 4.24.4 + resolution: "browserslist@npm:4.24.4" + dependencies: + caniuse-lite: "npm:^1.0.30001688" + electron-to-chromium: "npm:^1.5.73" + node-releases: "npm:^2.0.19" + update-browserslist-db: "npm:^1.1.1" + bin: + browserslist: cli.js + checksum: 10/11fda105e803d891311a21a1f962d83599319165faf471c2d70e045dff82a12128f5b50b1fcba665a2352ad66147aaa248a9d2355a80aadc3f53375eb3de2e48 + languageName: node + linkType: hard + "bs-logger@npm:0.x": version: 0.2.6 resolution: "bs-logger@npm:0.2.6" @@ -10525,6 +10776,13 @@ __metadata: languageName: node linkType: hard +"caniuse-lite@npm:^1.0.30001688": + version: 1.0.30001697 + resolution: "caniuse-lite@npm:1.0.30001697" + checksum: 10/cd0ca97e71f4157ff3d26990a24122586a973a14086ad43c459c2f0f2f9876b327eee57c2315bb04bd5e826e77d0b6f55723c583c78be0eaf0f3f171afaf7eff + languageName: node + linkType: hard + "chainsaw@npm:~0.1.0": version: 0.1.0 resolution: "chainsaw@npm:0.1.0" @@ -10952,6 +11210,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:^7.2.0": + version: 7.2.0 + resolution: "commander@npm:7.2.0" + checksum: 10/9973af10727ad4b44f26703bf3e9fdc323528660a7590efe3aa9ad5042b4584c0deed84ba443f61c9d6f02dade54a5a5d3c95e306a1e1630f8374ae6db16c06d + languageName: node + linkType: hard + "commander@npm:^8.3.0": version: 8.3.0 resolution: "commander@npm:8.3.0" @@ -12146,7 +12411,7 @@ __metadata: languageName: node linkType: hard -"duplexer@npm:~0.1.1": +"duplexer@npm:^0.1.2, duplexer@npm:~0.1.1": version: 0.1.2 resolution: "duplexer@npm:0.1.2" checksum: 10/62ba61a830c56801db28ff6305c7d289b6dc9f859054e8c982abd8ee0b0a14d2e9a8e7d086ffee12e868d43e2bbe8a964be55ddbd8c8957714c87373c7a4f9b0 @@ -12236,6 +12501,13 @@ __metadata: languageName: node linkType: hard +"electron-to-chromium@npm:^1.5.73": + version: 1.5.93 + resolution: "electron-to-chromium@npm:1.5.93" + checksum: 10/14fed9c0a0b4db86aff4267aa66afa5072a1b779b687252a059e25b2e72d2bf7c09147cf4ae8eae866c1ed7552b022d0f18239a00cda9e31b216eb5f203c72cc + languageName: node + linkType: hard + "elliptic@npm:^6.5.3, elliptic@npm:^6.5.4": version: 6.5.7 resolution: "elliptic@npm:6.5.7" @@ -12321,6 +12593,16 @@ __metadata: languageName: node linkType: hard +"enhanced-resolve@npm:^5.17.1": + version: 5.18.1 + resolution: "enhanced-resolve@npm:5.18.1" + dependencies: + graceful-fs: "npm:^4.2.4" + tapable: "npm:^2.2.0" + checksum: 10/50e81c7fe2239fba5670ebce78a34709906ed3a79274aa416434f7307b252e0b7824d76a7dd403eca795571dc6afd9a44183fc45a68475e8f2fdfbae6e92fcc3 + languageName: node + linkType: hard + "entities@npm:^2.0.0": version: 2.2.0 resolution: "entities@npm:2.2.0" @@ -12856,6 +13138,13 @@ __metadata: languageName: node linkType: hard +"escalade@npm:^3.2.0": + version: 3.2.0 + resolution: "escalade@npm:3.2.0" + checksum: 10/9d7169e3965b2f9ae46971afa392f6e5a25545ea30f2e2dd99c9b0a95a3f52b5653681a84f5b2911a413ddad2d7a93d3514165072f349b5ffc59c75a899970d6 + languageName: node + linkType: hard + "escape-html@npm:^1.0.3, escape-html@npm:~1.0.3": version: 1.0.3 resolution: "escape-html@npm:1.0.3" @@ -14577,7 +14866,7 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.2, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": +"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.2, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: 10/bf152d0ed1dc159239db1ba1f74fdbc40cb02f626770dcd5815c427ce0688c2635a06ed69af364396da4636d0408fcf7d4afdf7881724c3307e46aff30ca49e2 @@ -14591,6 +14880,15 @@ __metadata: languageName: node linkType: hard +"gzip-size@npm:^6.0.0": + version: 6.0.0 + resolution: "gzip-size@npm:6.0.0" + dependencies: + duplexer: "npm:^0.1.2" + checksum: 10/2df97f359696ad154fc171dcb55bc883fe6e833bca7a65e457b9358f3cb6312405ed70a8da24a77c1baac0639906cd52358dc0ce2ec1a937eaa631b934c94194 + languageName: node + linkType: hard + "handle-thing@npm:^2.0.0": version: 2.0.1 resolution: "handle-thing@npm:2.0.1" @@ -14795,7 +15093,7 @@ __metadata: languageName: node linkType: hard -"html-escaper@npm:^2.0.0": +"html-escaper@npm:^2.0.0, html-escaper@npm:^2.0.2": version: 2.0.2 resolution: "html-escaper@npm:2.0.2" checksum: 10/034d74029dcca544a34fb6135e98d427acd73019796ffc17383eaa3ec2fe1c0471dcbbc8f8ed39e46e86d43ccd753a160631615e4048285e313569609b66d5b7 @@ -17908,6 +18206,13 @@ __metadata: languageName: node linkType: hard +"mrmime@npm:^2.0.0": + version: 2.0.0 + resolution: "mrmime@npm:2.0.0" + checksum: 10/8d95f714ea200c6cf3e3777cbc6168be04b05ac510090a9b41eef5ec081efeb1d1de3e535ffb9c9689fffcc42f59864fd52a500e84a677274f070adeea615c45 + languageName: node + linkType: hard + "ms@npm:2.0.0": version: 2.0.0 resolution: "ms@npm:2.0.0" @@ -18181,6 +18486,13 @@ __metadata: languageName: node linkType: hard +"node-releases@npm:^2.0.19": + version: 2.0.19 + resolution: "node-releases@npm:2.0.19" + checksum: 10/c2b33b4f0c40445aee56141f13ca692fa6805db88510e5bbb3baadb2da13e1293b738e638e15e4a8eb668bb9e97debb08e7a35409b477b5cc18f171d35a83045 + languageName: node + linkType: hard + "nopt@npm:^5.0.0": version: 5.0.0 resolution: "nopt@npm:5.0.0" @@ -18483,6 +18795,15 @@ __metadata: languageName: node linkType: hard +"opener@npm:^1.5.2": + version: 1.5.2 + resolution: "opener@npm:1.5.2" + bin: + opener: bin/opener-bin.js + checksum: 10/0504efcd6546e14c016a261f58a68acf9f2e5c23d84865d7d5470d5169788327ceaa5386253682f533b3fba4821748aa37ecb395f3dae7acb3261b9b22e36814 + languageName: node + linkType: hard + "optionator@npm:^0.9.1": version: 0.9.1 resolution: "optionator@npm:0.9.1" @@ -18945,6 +19266,13 @@ __metadata: languageName: node linkType: hard +"picocolors@npm:^1.1.1": + version: 1.1.1 + resolution: "picocolors@npm:1.1.1" + checksum: 10/e1cf46bf84886c79055fdfa9dcb3e4711ad259949e3565154b004b260cd356c5d54b31a1437ce9782624bf766272fe6b0154f5f0c744fb7af5d454d2b60db045 + languageName: node + linkType: hard + "picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" @@ -20655,6 +20983,18 @@ __metadata: languageName: node linkType: hard +"schema-utils@npm:^4.3.0": + version: 4.3.0 + resolution: "schema-utils@npm:4.3.0" + dependencies: + "@types/json-schema": "npm:^7.0.9" + ajv: "npm:^8.9.0" + ajv-formats: "npm:^2.1.1" + ajv-keywords: "npm:^5.1.0" + checksum: 10/86c5a7c72a275c56f140bc3cdd832d56efb11428c88ad588127db12cb9b2c83ccaa9540e115d7baa9c6175b5e360094457e29c44e6fb76787c9498c2eb6df5d6 + languageName: node + linkType: hard + "select-hose@npm:^2.0.0": version: 2.0.0 resolution: "select-hose@npm:2.0.0" @@ -20753,6 +21093,15 @@ __metadata: languageName: node linkType: hard +"serialize-javascript@npm:^6.0.2": + version: 6.0.2 + resolution: "serialize-javascript@npm:6.0.2" + dependencies: + randombytes: "npm:^2.1.0" + checksum: 10/445a420a6fa2eaee4b70cbd884d538e259ab278200a2ededd73253ada17d5d48e91fb1f4cd224a236ab62ea7ba0a70c6af29fc93b4f3d3078bf7da1c031fde58 + languageName: node + linkType: hard + "serve-handler@npm:^6.1.5": version: 6.1.6 resolution: "serve-handler@npm:6.1.6" @@ -20990,6 +21339,17 @@ __metadata: languageName: node linkType: hard +"sirv@npm:^2.0.3": + version: 2.0.4 + resolution: "sirv@npm:2.0.4" + dependencies: + "@polka/url": "npm:^1.0.0-next.24" + mrmime: "npm:^2.0.0" + totalist: "npm:^3.0.0" + checksum: 10/24f42cf06895017e589c9d16fc3f1c6c07fe8b0dbafce8a8b46322cfba67b7f2498610183954cb0e9d089c8cb60002a7ee7e8bca6a91a0d7042bfbc3473c95c3 + languageName: node + linkType: hard + "sisteransi@npm:^1.0.5": version: 1.0.5 resolution: "sisteransi@npm:1.0.5" @@ -21803,6 +22163,28 @@ __metadata: languageName: node linkType: hard +"terser-webpack-plugin@npm:^5.3.10": + version: 5.3.11 + resolution: "terser-webpack-plugin@npm:5.3.11" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.25" + jest-worker: "npm:^27.4.5" + schema-utils: "npm:^4.3.0" + serialize-javascript: "npm:^6.0.2" + terser: "npm:^5.31.1" + peerDependencies: + webpack: ^5.1.0 + peerDependenciesMeta: + "@swc/core": + optional: true + esbuild: + optional: true + uglify-js: + optional: true + checksum: 10/a8f7c92c75aa42628adfa4d171d4695c366c1852ecb4a24e72dd6fec86e383e12ac24b627e798fedff4e213c21fe851cebc61be3ab5a2537e6e42bea46690aa3 + languageName: node + linkType: hard + "terser-webpack-plugin@npm:^5.3.7, terser-webpack-plugin@npm:^5.3.9": version: 5.3.9 resolution: "terser-webpack-plugin@npm:5.3.9" @@ -21839,6 +22221,20 @@ __metadata: languageName: node linkType: hard +"terser@npm:^5.31.1": + version: 5.38.0 + resolution: "terser@npm:5.38.0" + dependencies: + "@jridgewell/source-map": "npm:^0.3.3" + acorn: "npm:^8.8.2" + commander: "npm:^2.20.0" + source-map-support: "npm:~0.5.20" + bin: + terser: bin/terser + checksum: 10/91d20ab35836861e1500a298b3f401b93f0a564cd4a52cd0da79f1a0a8fdbce4967cfc9b77f037603273a31af698eee2b27bbfab4dc5812d334035c9be18256b + languageName: node + linkType: hard + "test-exclude@npm:^6.0.0": version: 6.0.0 resolution: "test-exclude@npm:6.0.0" @@ -21968,6 +22364,13 @@ __metadata: languageName: node linkType: hard +"totalist@npm:^3.0.0": + version: 3.0.1 + resolution: "totalist@npm:3.0.1" + checksum: 10/5132d562cf88ff93fd710770a92f31dbe67cc19b5c6ccae2efc0da327f0954d211bbfd9456389655d726c624f284b4a23112f56d1da931ca7cfabbe1f45e778a + languageName: node + linkType: hard + "tough-cookie@npm:^4.1.2": version: 4.1.3 resolution: "tough-cookie@npm:4.1.3" @@ -22550,6 +22953,20 @@ __metadata: languageName: node linkType: hard +"update-browserslist-db@npm:^1.1.1": + version: 1.1.2 + resolution: "update-browserslist-db@npm:1.1.2" + dependencies: + escalade: "npm:^3.2.0" + picocolors: "npm:^1.1.1" + peerDependencies: + browserslist: ">= 4.21.0" + bin: + update-browserslist-db: cli.js + checksum: 10/e7bf8221dfb21eba4a770cd803df94625bb04f65a706aa94c567de9600fe4eb6133fda016ec471dad43b9e7959c1bffb6580b5e20a87808d2e8a13e3892699a9 + languageName: node + linkType: hard + "uqr@npm:^0.1.2": version: 0.1.2 resolution: "uqr@npm:0.1.2" @@ -22921,6 +23338,16 @@ __metadata: languageName: node linkType: hard +"watchpack@npm:^2.4.1": + version: 2.4.2 + resolution: "watchpack@npm:2.4.2" + dependencies: + glob-to-regexp: "npm:^0.4.1" + graceful-fs: "npm:^4.1.2" + checksum: 10/6bd4c051d9af189a6c781c3158dcb3069f432a0c144159eeb0a44117412105c61b2b683a5c9eebc4324625e0e9b76536387d0ba354594fa6cbbdf1ef60bee4c3 + languageName: node + linkType: hard + "wbuf@npm:^1.1.0, wbuf@npm:^1.7.3": version: 1.7.3 resolution: "wbuf@npm:1.7.3" @@ -23060,6 +23487,28 @@ __metadata: languageName: node linkType: hard +"webpack-bundle-analyzer@npm:^4.10.2": + version: 4.10.2 + resolution: "webpack-bundle-analyzer@npm:4.10.2" + dependencies: + "@discoveryjs/json-ext": "npm:0.5.7" + acorn: "npm:^8.0.4" + acorn-walk: "npm:^8.0.0" + commander: "npm:^7.2.0" + debounce: "npm:^1.2.1" + escape-string-regexp: "npm:^4.0.0" + gzip-size: "npm:^6.0.0" + html-escaper: "npm:^2.0.2" + opener: "npm:^1.5.2" + picocolors: "npm:^1.0.0" + sirv: "npm:^2.0.3" + ws: "npm:^7.3.1" + bin: + webpack-bundle-analyzer: lib/bin/analyzer.js + checksum: 10/cb7ff9d01dc04ef23634f439ab9fe739e022cce5595cb340e01d106ed474605ce4ef50b11b47e444507d341b16650dcb3610e88944020ca6c1c38e88072d43ba + languageName: node + linkType: hard + "webpack-cli@npm:^5.1.4": version: 5.1.4 resolution: "webpack-cli@npm:5.1.4" @@ -23171,6 +23620,42 @@ __metadata: languageName: node linkType: hard +"webpack@npm:^5": + version: 5.97.1 + resolution: "webpack@npm:5.97.1" + dependencies: + "@types/eslint-scope": "npm:^3.7.7" + "@types/estree": "npm:^1.0.6" + "@webassemblyjs/ast": "npm:^1.14.1" + "@webassemblyjs/wasm-edit": "npm:^1.14.1" + "@webassemblyjs/wasm-parser": "npm:^1.14.1" + acorn: "npm:^8.14.0" + browserslist: "npm:^4.24.0" + chrome-trace-event: "npm:^1.0.2" + enhanced-resolve: "npm:^5.17.1" + es-module-lexer: "npm:^1.2.1" + eslint-scope: "npm:5.1.1" + events: "npm:^3.2.0" + glob-to-regexp: "npm:^0.4.1" + graceful-fs: "npm:^4.2.11" + json-parse-even-better-errors: "npm:^2.3.1" + loader-runner: "npm:^4.2.0" + mime-types: "npm:^2.1.27" + neo-async: "npm:^2.6.2" + schema-utils: "npm:^3.2.0" + tapable: "npm:^2.1.1" + terser-webpack-plugin: "npm:^5.3.10" + watchpack: "npm:^2.4.1" + webpack-sources: "npm:^3.2.3" + peerDependenciesMeta: + webpack-cli: + optional: true + bin: + webpack: bin/webpack.js + checksum: 10/665bd3b8c84b20f0b1f250159865e4d3e9b76c682030313d49124d5f8e96357ccdcc799dd9fe0ebf010fdb33dbc59d9863d79676a308e868e360ac98f7c09987 + languageName: node + linkType: hard + "webpack@npm:^5.88.0": version: 5.88.0 resolution: "webpack@npm:5.88.0" @@ -23465,6 +23950,21 @@ __metadata: languageName: node linkType: hard +"ws@npm:^7.3.1": + version: 7.5.10 + resolution: "ws@npm:7.5.10" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10/9c796b84ba80ffc2c2adcdfc9c8e9a219ba99caa435c9a8d45f9ac593bba325563b3f83edc5eb067cc6d21b9a6bf2c930adf76dd40af5f58a5ca6859e81858f0 + languageName: node + linkType: hard + "xml-name-validator@npm:^4.0.0": version: 4.0.0 resolution: "xml-name-validator@npm:4.0.0" From 2562750c954d504884e7a67073d06d76480ffa5f Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Fri, 7 Feb 2025 12:16:26 +0100 Subject: [PATCH 2/3] Update logging and add tests --- packages/snaps-cli/package.json | 1 - .../src/commands/build/build.test.ts | 55 ++- .../snaps-cli/src/commands/build/build.ts | 32 +- .../src/commands/build/implementation.ts | 6 +- .../src/commands/build/utils.test.ts | 70 ++++ .../snaps-cli/src/commands/build/utils.ts | 29 ++ .../src/types/webpack-bundle-analyzer.d.ts | 22 + packages/snaps-cli/src/utils/logging.test.ts | 23 +- packages/snaps-cli/src/utils/logging.ts | 19 +- packages/snaps-cli/src/utils/steps.test.ts | 38 ++ packages/snaps-cli/src/utils/steps.ts | 22 +- .../webpack/__snapshots__/config.test.ts.snap | 51 ++- packages/snaps-cli/src/webpack/config.ts | 12 +- yarn.lock | 384 +----------------- 14 files changed, 334 insertions(+), 430 deletions(-) create mode 100644 packages/snaps-cli/src/commands/build/utils.test.ts create mode 100644 packages/snaps-cli/src/commands/build/utils.ts create mode 100644 packages/snaps-cli/src/types/webpack-bundle-analyzer.d.ts diff --git a/packages/snaps-cli/package.json b/packages/snaps-cli/package.json index f2ba46b56a..8bc2bccb8c 100644 --- a/packages/snaps-cli/package.json +++ b/packages/snaps-cli/package.json @@ -129,7 +129,6 @@ "@types/jest": "^27.5.1", "@types/node": "18.14.2", "@types/serve-handler": "^6.1.0", - "@types/webpack-bundle-analyzer": "^4.7.0", "@types/yargs": "^17.0.24", "@typescript-eslint/eslint-plugin": "^5.42.1", "@typescript-eslint/parser": "^6.21.0", diff --git a/packages/snaps-cli/src/commands/build/build.test.ts b/packages/snaps-cli/src/commands/build/build.test.ts index 7b26e287b8..cb915416b4 100644 --- a/packages/snaps-cli/src/commands/build/build.test.ts +++ b/packages/snaps-cli/src/commands/build/build.test.ts @@ -1,5 +1,7 @@ import { DEFAULT_SNAP_BUNDLE } from '@metamask/snaps-utils/test-utils'; import fs from 'fs'; +import type { Compiler } from 'webpack'; +import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'; import { getMockConfig } from '../../test-utils'; import { evaluate } from '../eval'; @@ -10,6 +12,10 @@ jest.mock('fs'); jest.mock('../eval'); jest.mock('./implementation'); +jest.mock('webpack-bundle-analyzer', () => ({ + BundleAnalyzerPlugin: jest.fn(), +})); + describe('buildHandler', () => { it('builds a snap', async () => { await fs.promises.writeFile('/input.js', DEFAULT_SNAP_BUNDLE); @@ -37,7 +43,54 @@ describe('buildHandler', () => { ); }); - it('does note evaluate if the evaluate option is set to false', async () => { + it('analyzes a snap bundle', async () => { + await fs.promises.writeFile('/input.js', DEFAULT_SNAP_BUNDLE); + + jest.spyOn(console, 'log').mockImplementation(); + const config = getMockConfig('webpack', { + input: '/input.js', + output: { + path: '/foo', + filename: 'output.js', + }, + }); + + const compiler: Compiler = { + // @ts-expect-error: Mock `Compiler` object. + options: { + plugins: [new BundleAnalyzerPlugin()], + }, + }; + + const plugin = jest.mocked(BundleAnalyzerPlugin); + const instance = plugin.mock.instances[0]; + + // @ts-expect-error: Partial `server` mock. + instance.server = Promise.resolve({ + http: { + address: () => 'http://localhost:8888', + }, + }); + + jest.mocked(build).mockResolvedValueOnce(compiler); + + await buildHandler(config, true); + + expect(process.exitCode).not.toBe(1); + expect(build).toHaveBeenCalledWith(config, { + analyze: true, + evaluate: false, + spinner: expect.any(Object), + }); + + expect(console.log).toHaveBeenCalledWith( + expect.stringContaining( + 'Bundle analyzer running at http://localhost:8888.', + ), + ); + }); + + it('does not evaluate if the evaluate option is set to false', async () => { await fs.promises.writeFile('/input.js', DEFAULT_SNAP_BUNDLE); jest.spyOn(console, 'log').mockImplementation(); diff --git a/packages/snaps-cli/src/commands/build/build.ts b/packages/snaps-cli/src/commands/build/build.ts index d6acdb906a..5e7aa28cbf 100644 --- a/packages/snaps-cli/src/commands/build/build.ts +++ b/packages/snaps-cli/src/commands/build/build.ts @@ -1,16 +1,19 @@ import { isFile } from '@metamask/snaps-utils/node'; +import { assert } from '@metamask/utils'; import { resolve as pathResolve } from 'path'; import type { ProcessedConfig, ProcessedWebpackConfig } from '../../config'; import { CommandError } from '../../errors'; import type { Steps } from '../../utils'; -import { executeSteps, info } from '../../utils'; +import { success, executeSteps, info } from '../../utils'; import { evaluate } from '../eval'; import { build } from './implementation'; +import { getBundleAnalyzerPort } from './utils'; type BuildContext = { analyze: boolean; config: ProcessedWebpackConfig; + port?: number; }; const steps: Steps = [ @@ -31,7 +34,22 @@ const steps: Steps = [ task: async ({ analyze, config, spinner }) => { // We don't evaluate the bundle here, because it's done in a separate // step. - return await build(config, { analyze, evaluate: false, spinner }); + const compiler = await build(config, { + analyze, + evaluate: false, + spinner, + }); + + if (analyze) { + return { + analyze, + config, + spinner, + port: await getBundleAnalyzerPort(compiler), + }; + } + + return undefined; }, }, { @@ -49,6 +67,16 @@ const steps: Steps = [ info(`Snap bundle evaluated successfully.`, spinner); }, }, + { + name: 'Running analyser.', + condition: ({ analyze }) => analyze, + task: async ({ spinner, port }) => { + assert(port, 'Port is not defined.'); + success(`Bundle analyzer running at http://localhost:${port}.`, spinner); + + spinner.stop(); + }, + }, ] as const; /** diff --git a/packages/snaps-cli/src/commands/build/implementation.ts b/packages/snaps-cli/src/commands/build/implementation.ts index 3139a22c18..07ed9b9655 100644 --- a/packages/snaps-cli/src/commands/build/implementation.ts +++ b/packages/snaps-cli/src/commands/build/implementation.ts @@ -1,3 +1,5 @@ +import type { Compiler } from 'webpack'; + import type { ProcessedWebpackConfig } from '../../config'; import type { WebpackOptions } from '../../webpack'; import { getCompiler } from '../../webpack'; @@ -14,7 +16,7 @@ export async function build( options?: WebpackOptions, ) { const compiler = await getCompiler(config, options); - return await new Promise((resolve, reject) => { + return await new Promise((resolve, reject) => { compiler.run((runError) => { if (runError) { reject(runError); @@ -27,7 +29,7 @@ export async function build( return; } - resolve(); + resolve(compiler); }); }); }); diff --git a/packages/snaps-cli/src/commands/build/utils.test.ts b/packages/snaps-cli/src/commands/build/utils.test.ts new file mode 100644 index 0000000000..e5208d912f --- /dev/null +++ b/packages/snaps-cli/src/commands/build/utils.test.ts @@ -0,0 +1,70 @@ +import type { Compiler } from 'webpack'; +import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'; + +import { getBundleAnalyzerPort } from './utils'; + +jest.mock('webpack-bundle-analyzer', () => ({ + BundleAnalyzerPlugin: jest.fn(), +})); + +describe('getBundleAnalyzerPort', () => { + it('returns the port of the bundle analyzer server', async () => { + const compiler: Compiler = { + // @ts-expect-error: Mock `Compiler` object. + options: { + plugins: [new BundleAnalyzerPlugin()], + }, + }; + + const plugin = jest.mocked(BundleAnalyzerPlugin); + const instance = plugin.mock.instances[0]; + + // @ts-expect-error: Partial `server` mock. + instance.server = Promise.resolve({ + http: { + address: () => 'http://localhost:8888', + }, + }); + + const port = await getBundleAnalyzerPort(compiler); + expect(port).toBe(8888); + }); + + it('returns the port of the bundle analyzer server that returns an object', async () => { + const compiler: Compiler = { + // @ts-expect-error: Mock `Compiler` object. + options: { + plugins: [new BundleAnalyzerPlugin()], + }, + }; + + const plugin = jest.mocked(BundleAnalyzerPlugin); + const instance = plugin.mock.instances[0]; + + // @ts-expect-error: Partial `server` mock. + instance.server = Promise.resolve({ + http: { + address: () => { + return { + port: 8888, + }; + }, + }, + }); + + const port = await getBundleAnalyzerPort(compiler); + expect(port).toBe(8888); + }); + + it('returns undefined if the bundle analyzer server is not available', async () => { + const compiler: Compiler = { + // @ts-expect-error: Mock `Compiler` object. + options: { + plugins: [new BundleAnalyzerPlugin()], + }, + }; + + const port = await getBundleAnalyzerPort(compiler); + expect(port).toBeUndefined(); + }); +}); diff --git a/packages/snaps-cli/src/commands/build/utils.ts b/packages/snaps-cli/src/commands/build/utils.ts new file mode 100644 index 0000000000..d570e777e4 --- /dev/null +++ b/packages/snaps-cli/src/commands/build/utils.ts @@ -0,0 +1,29 @@ +import type { Compiler } from 'webpack'; +import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'; + +/** + * Get the port of the bundle analyzer server. + * + * @param compiler - The Webpack compiler. + * @returns The port of the bundle analyzer server. + */ +export async function getBundleAnalyzerPort(compiler: Compiler) { + const analyzerPlugin = compiler.options.plugins.find( + (plugin): plugin is BundleAnalyzerPlugin => + plugin instanceof BundleAnalyzerPlugin, + ); + + if (analyzerPlugin?.server) { + const { http } = await analyzerPlugin.server; + + const address = http.address(); + if (typeof address === 'string') { + const { port } = new URL(address); + return parseInt(port, 10); + } + + return address?.port; + } + + return undefined; +} diff --git a/packages/snaps-cli/src/types/webpack-bundle-analyzer.d.ts b/packages/snaps-cli/src/types/webpack-bundle-analyzer.d.ts new file mode 100644 index 0000000000..0e47c2b4c6 --- /dev/null +++ b/packages/snaps-cli/src/types/webpack-bundle-analyzer.d.ts @@ -0,0 +1,22 @@ +declare module 'webpack-bundle-analyzer' { + import type { Server } from 'http'; + import type { Compiler, WebpackPluginInstance } from 'webpack'; + + export type BundleAnalyzerPluginOptions = { + analyzerPort?: number | undefined; + logLevel?: 'info' | 'warn' | 'error' | 'silent' | undefined; + openAnalyzer?: boolean | undefined; + }; + + export class BundleAnalyzerPlugin implements WebpackPluginInstance { + readonly opts: BundleAnalyzerPluginOptions; + + server?: Promise<{ + http: Server; + }>; + + constructor(options?: BundleAnalyzerPluginOptions); + + apply(compiler: Compiler): void; + } +} diff --git a/packages/snaps-cli/src/utils/logging.test.ts b/packages/snaps-cli/src/utils/logging.test.ts index 5a3f3683e0..19a8d6f633 100644 --- a/packages/snaps-cli/src/utils/logging.test.ts +++ b/packages/snaps-cli/src/utils/logging.test.ts @@ -1,7 +1,26 @@ -import { blue, dim, red, yellow } from 'chalk'; +import { blue, dim, green, red, yellow } from 'chalk'; import type { Ora } from 'ora'; -import { error, info, warn } from './logging'; +import { error, info, success, warn } from './logging'; + +describe('success', () => { + it('logs a success message', () => { + const log = jest.spyOn(console, 'log').mockImplementation(); + + success('foo'); + expect(log).toHaveBeenCalledWith(`${green('✔')} foo`); + }); + + it('clears a spinner if provided', () => { + jest.spyOn(console, 'warn').mockImplementation(); + + const spinner = { clear: jest.fn(), frame: jest.fn() } as unknown as Ora; + success('foo', spinner); + + expect(spinner.clear).toHaveBeenCalled(); + expect(spinner.frame).toHaveBeenCalled(); + }); +}); describe('warn', () => { it('logs a warning message', () => { diff --git a/packages/snaps-cli/src/utils/logging.ts b/packages/snaps-cli/src/utils/logging.ts index 2d88dab9f4..28a759c67c 100644 --- a/packages/snaps-cli/src/utils/logging.ts +++ b/packages/snaps-cli/src/utils/logging.ts @@ -1,9 +1,24 @@ import { logError, logInfo, logWarning } from '@metamask/snaps-utils'; -import { blue, dim, red, yellow } from 'chalk'; +import { blue, dim, green, red, yellow } from 'chalk'; import type { Ora } from 'ora'; /** - * Log a warning message. The message is prefixed with "Warning:". + * Log a success message. The message is prefixed with a green checkmark. + * + * @param message - The message to log. + * @param spinner - The spinner to clear. + */ +export function success(message: string, spinner?: Ora) { + if (spinner) { + spinner.clear(); + spinner.frame(); + } + + logInfo(`${green('✔')} ${message}`); +} + +/** + * Log a warning message. The message is prefixed with a yellow warning sign. * * @param message - The message to log. * @param spinner - The spinner to clear. diff --git a/packages/snaps-cli/src/utils/steps.test.ts b/packages/snaps-cli/src/utils/steps.test.ts index 971f5e19ef..af0641b234 100644 --- a/packages/snaps-cli/src/utils/steps.test.ts +++ b/packages/snaps-cli/src/utils/steps.test.ts @@ -63,6 +63,44 @@ describe('executeSteps', () => { }); }); + it('updates the context if a step returns an object', async () => { + const steps = [ + { + name: 'Step 1', + task: jest.fn(), + }, + { + name: 'Step 2', + task: jest.fn().mockResolvedValue({ foo: 'baz' }), + }, + { + name: 'Step 3', + task: jest.fn(), + }, + ]; + + const context = { + foo: 'bar', + }; + + await executeSteps(steps, context); + + expect(steps[0].task).toHaveBeenCalledWith({ + ...context, + spinner: expect.any(Object), + }); + + expect(steps[0].task).toHaveBeenCalledWith({ + ...context, + spinner: expect.any(Object), + }); + + expect(steps[2].task).toHaveBeenCalledWith({ + foo: 'baz', + spinner: expect.any(Object), + }); + }); + it('sets the exit code to 1 if a step throws an error', async () => { const log = jest.spyOn(console, 'error').mockImplementation(); diff --git a/packages/snaps-cli/src/utils/steps.ts b/packages/snaps-cli/src/utils/steps.ts index d75074d0de..67509d0af6 100644 --- a/packages/snaps-cli/src/utils/steps.ts +++ b/packages/snaps-cli/src/utils/steps.ts @@ -8,7 +8,7 @@ import { error } from './logging'; export type Step> = { name: string; condition?: (context: Context) => boolean; - task: (context: Context & { spinner: Ora }) => Promise; + task: (context: Context & { spinner: Ora }) => Promise; }; export type Steps> = Readonly< @@ -34,21 +34,27 @@ export async function executeSteps>( spinner.start(); try { - for (const step of steps) { + await steps.reduce>(async (contextPromise, step) => { + const currentContext = await contextPromise; + // If the step has a condition, and it returns false, we skip the step. - if (step.condition && !step.condition(context)) { - continue; + if (step.condition && !step.condition(currentContext)) { + return currentContext; } // Calling `start` here instead of setting `spinner.text` seems to work // better when the process doesn't have a TTY. spinner.start(dim(step.name)); - await step.task({ - ...context, + const newContext = await step.task({ + ...currentContext, spinner, }); - } + + // If the task returns a new context, we use it. Otherwise, we keep the + // current context. + return newContext ?? currentContext; + }, Promise.resolve(context)); // The spinner may have been stopped by a step, so we only succeed if it's // still spinning. @@ -58,6 +64,8 @@ export async function executeSteps>( } catch (_error) { error(getErrorMessage(_error), spinner); spinner.stop(); + + // eslint-disable-next-line require-atomic-updates process.exitCode = 1; } } diff --git a/packages/snaps-cli/src/webpack/__snapshots__/config.test.ts.snap b/packages/snaps-cli/src/webpack/__snapshots__/config.test.ts.snap index 382933b893..e418d5dc33 100644 --- a/packages/snaps-cli/src/webpack/__snapshots__/config.test.ts.snap +++ b/packages/snaps-cli/src/webpack/__snapshots__/config.test.ts.snap @@ -3542,33 +3542,6 @@ exports[`getDefaultConfiguration returns the default Webpack configuration when "hints": false, }, "plugins": [ - BundleAnalyzerPlugin { - "logger": Logger { - "activeLevels": Set { - "info", - "warn", - "error", - "silent", - }, - }, - "opts": { - "analyzerHost": "127.0.0.1", - "analyzerMode": "server", - "analyzerPort": 8888, - "analyzerUrl": [Function], - "defaultSizes": "parsed", - "excludeAssets": null, - "generateStatsFile": false, - "logLevel": "info", - "openAnalyzer": true, - "reportFilename": null, - "reportTitle": [Function], - "startAnalyzer": true, - "statsFilename": "stats.json", - "statsOptions": null, - }, - "server": null, - }, SnapsWebpackPlugin { "options": { "eval": undefined, @@ -3611,6 +3584,30 @@ exports[`getDefaultConfiguration returns the default Webpack configuration when "builtIns": true, }, }, + BundleAnalyzerPlugin { + "logger": Logger { + "activeLevels": Set { + "silent", + }, + }, + "opts": { + "analyzerHost": "127.0.0.1", + "analyzerMode": "server", + "analyzerPort": 0, + "analyzerUrl": [Function], + "defaultSizes": "parsed", + "excludeAssets": null, + "generateStatsFile": false, + "logLevel": "silent", + "openAnalyzer": false, + "reportFilename": null, + "reportTitle": [Function], + "startAnalyzer": true, + "statsFilename": "stats.json", + "statsOptions": null, + }, + "server": null, + }, ], "resolve": { "extensions": [ diff --git a/packages/snaps-cli/src/webpack/config.ts b/packages/snaps-cli/src/webpack/config.ts index e2666c2504..65fb5b00c4 100644 --- a/packages/snaps-cli/src/webpack/config.ts +++ b/packages/snaps-cli/src/webpack/config.ts @@ -3,7 +3,7 @@ import ForkTsCheckerWebpackPlugin from 'fork-ts-checker-webpack-plugin'; import type { Ora } from 'ora'; import { resolve } from 'path'; import TerserPlugin from 'terser-webpack-plugin'; -import type { Configuration, WebpackPluginInstance } from 'webpack'; +import type { Configuration } from 'webpack'; import { DefinePlugin, ProgressPlugin, ProvidePlugin } from 'webpack'; import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'; @@ -288,9 +288,6 @@ export async function getDefaultConfiguration( * @see https://webpack.js.org/configuration/plugins/ */ plugins: [ - options.analyze && - (new BundleAnalyzerPlugin() as unknown as WebpackPluginInstance), - /** * The `ForkTsCheckerWebpackPlugin` is a Webpack plugin that checks * Typescript type definitions, it does this in a separate process for speed. @@ -363,6 +360,13 @@ export async function getDefaultConfiguration( options.spinner, ), + options.analyze && + new BundleAnalyzerPlugin({ + analyzerPort: 0, + logLevel: 'silent', + openAnalyzer: false, + }), + /** * The `ProviderPlugin` is a Webpack plugin that automatically load * modules instead of having to import or require them everywhere. diff --git a/yarn.lock b/yarn.lock index 5160fb6c02..1ac66cff43 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3704,13 +3704,6 @@ __metadata: languageName: node linkType: hard -"@jridgewell/resolve-uri@npm:^3.1.0": - version: 3.1.2 - resolution: "@jridgewell/resolve-uri@npm:3.1.2" - checksum: 10/97106439d750a409c22c8bff822d648f6a71f3aa9bc8e5129efdc36343cd3096ddc4eeb1c62d2fe48e9bdd4db37b05d4646a17114ecebd3bbcacfa2de51c3c1d - languageName: node - linkType: hard - "@jridgewell/set-array@npm:^1.0.0, @jridgewell/set-array@npm:^1.0.1": version: 1.1.2 resolution: "@jridgewell/set-array@npm:1.1.2" @@ -3742,13 +3735,6 @@ __metadata: languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:^1.4.14": - version: 1.5.0 - resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" - checksum: 10/4ed6123217569a1484419ac53f6ea0d9f3b57e5b57ab30d7c267bdb27792a27eb0e4b08e84a2680aa55cc2f2b411ffd6ec3db01c44fdc6dc43aca4b55f8374fd - languageName: node - linkType: hard - "@jridgewell/trace-mapping@npm:0.3.9": version: 0.3.9 resolution: "@jridgewell/trace-mapping@npm:0.3.9" @@ -3769,16 +3755,6 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.25": - version: 0.3.25 - resolution: "@jridgewell/trace-mapping@npm:0.3.25" - dependencies: - "@jridgewell/resolve-uri": "npm:^3.1.0" - "@jridgewell/sourcemap-codec": "npm:^1.4.14" - checksum: 10/dced32160a44b49d531b80a4a2159dceab6b3ddf0c8e95a0deae4b0e894b172defa63d5ac52a19c2068e1fe7d31ea4ba931fbeec103233ecb4208953967120fc - languageName: node - linkType: hard - "@jspm/core@npm:^2.0.1": version: 2.0.1 resolution: "@jspm/core@npm:2.0.1" @@ -5670,7 +5646,6 @@ __metadata: "@types/jest": "npm:^27.5.1" "@types/node": "npm:18.14.2" "@types/serve-handler": "npm:^6.1.0" - "@types/webpack-bundle-analyzer": "npm:^4.7.0" "@types/yargs": "npm:^17.0.24" "@typescript-eslint/eslint-plugin": "npm:^5.42.1" "@typescript-eslint/parser": "npm:^6.21.0" @@ -7729,16 +7704,6 @@ __metadata: languageName: node linkType: hard -"@types/eslint-scope@npm:^3.7.7": - version: 3.7.7 - resolution: "@types/eslint-scope@npm:3.7.7" - dependencies: - "@types/eslint": "npm:*" - "@types/estree": "npm:*" - checksum: 10/e2889a124aaab0b89af1bab5959847c5bec09809209255de0e63b9f54c629a94781daa04adb66bffcdd742f5e25a17614fb933965093c0eea64aacda4309380e - languageName: node - linkType: hard - "@types/eslint@npm:*": version: 8.4.1 resolution: "@types/eslint@npm:8.4.1" @@ -7756,13 +7721,6 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:^1.0.6": - version: 1.0.6 - resolution: "@types/estree@npm:1.0.6" - checksum: 10/9d35d475095199c23e05b431bcdd1f6fec7380612aed068b14b2a08aa70494de8a9026765a5a91b1073f636fb0368f6d8973f518a31391d519e20c59388ed88d - languageName: node - linkType: hard - "@types/express-serve-static-core@npm:*, @types/express-serve-static-core@npm:^4.17.33": version: 4.17.35 resolution: "@types/express-serve-static-core@npm:4.17.35" @@ -8276,17 +8234,6 @@ __metadata: languageName: node linkType: hard -"@types/webpack-bundle-analyzer@npm:^4.7.0": - version: 4.7.0 - resolution: "@types/webpack-bundle-analyzer@npm:4.7.0" - dependencies: - "@types/node": "npm:*" - tapable: "npm:^2.2.0" - webpack: "npm:^5" - checksum: 10/2d9a2d4e26b1239623df97caceddd37a14c258623bccf27aca9da65b963cad33fdbfdc3a4770a58dbd2f9e6f591f62990616938aa52edf58aae3f6166c0045c1 - languageName: node - linkType: hard - "@types/webpack-env@npm:^1.18.1": version: 1.18.1 resolution: "@types/webpack-env@npm:1.18.1" @@ -8872,16 +8819,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/ast@npm:1.14.1, @webassemblyjs/ast@npm:^1.14.1": - version: 1.14.1 - resolution: "@webassemblyjs/ast@npm:1.14.1" - dependencies: - "@webassemblyjs/helper-numbers": "npm:1.13.2" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" - checksum: 10/f83e6abe38057f5d87c1fb356513a371a8b43c9b87657f2790741a66b1ef8ecf958d1391bc42f27c5fb33f58ab8286a38ea849fdd21f433cd4df1307424bab45 - languageName: node - linkType: hard - "@webassemblyjs/floating-point-hex-parser@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.6" @@ -8889,13 +8826,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/floating-point-hex-parser@npm:1.13.2": - version: 1.13.2 - resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.13.2" - checksum: 10/e866ec8433f4a70baa511df5e8f2ebcd6c24f4e2cc6274c7c5aabe2bcce3459ea4680e0f35d450e1f3602acf3913b6b8e4f15069c8cfd34ae8609fb9a7d01795 - languageName: node - linkType: hard - "@webassemblyjs/helper-api-error@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/helper-api-error@npm:1.11.6" @@ -8903,13 +8833,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/helper-api-error@npm:1.13.2": - version: 1.13.2 - resolution: "@webassemblyjs/helper-api-error@npm:1.13.2" - checksum: 10/48b5df7fd3095bb252f59a139fe2cbd999a62ac9b488123e9a0da3906ad8a2f2da7b2eb21d328c01a90da987380928706395c2897d1f3ed9e2125b6d75a920d0 - languageName: node - linkType: hard - "@webassemblyjs/helper-buffer@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/helper-buffer@npm:1.11.6" @@ -8917,13 +8840,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/helper-buffer@npm:1.14.1": - version: 1.14.1 - resolution: "@webassemblyjs/helper-buffer@npm:1.14.1" - checksum: 10/9690afeafa5e765a34620aa6216e9d40f9126d4e37e9726a2594bf60cab6b211ef20ab6670fd3c4449dd4a3497e69e49b2b725c8da0fb213208c7f45f15f5d5b - languageName: node - linkType: hard - "@webassemblyjs/helper-numbers@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/helper-numbers@npm:1.11.6" @@ -8935,17 +8851,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/helper-numbers@npm:1.13.2": - version: 1.13.2 - resolution: "@webassemblyjs/helper-numbers@npm:1.13.2" - dependencies: - "@webassemblyjs/floating-point-hex-parser": "npm:1.13.2" - "@webassemblyjs/helper-api-error": "npm:1.13.2" - "@xtuc/long": "npm:4.2.2" - checksum: 10/e4c7d0b09811e1cda8eec644a022b560b28f4e974f50195375ccd007df5ee48a922a6dcff5ac40b6a8ec850d56d0ea6419318eee49fec7819ede14e90417a6a4 - languageName: node - linkType: hard - "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6" @@ -8953,13 +8858,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/helper-wasm-bytecode@npm:1.13.2": - version: 1.13.2 - resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.13.2" - checksum: 10/3edd191fff7296df1ef3b023bdbe6cb5ea668f6386fd197ccfce46015c6f2a8cc9763cfb86503a0b94973ad27996645afff2252ee39a236513833259a47af6ed - languageName: node - linkType: hard - "@webassemblyjs/helper-wasm-section@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/helper-wasm-section@npm:1.11.6" @@ -8972,18 +8870,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/helper-wasm-section@npm:1.14.1": - version: 1.14.1 - resolution: "@webassemblyjs/helper-wasm-section@npm:1.14.1" - dependencies: - "@webassemblyjs/ast": "npm:1.14.1" - "@webassemblyjs/helper-buffer": "npm:1.14.1" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" - "@webassemblyjs/wasm-gen": "npm:1.14.1" - checksum: 10/6b73874f906532512371181d7088460f767966f26309e836060c5a8e4e4bfe6d523fb5f4c034b34aa22ebb1192815f95f0e264298769485c1f0980fdd63ae0ce - languageName: node - linkType: hard - "@webassemblyjs/ieee754@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/ieee754@npm:1.11.6" @@ -8993,15 +8879,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/ieee754@npm:1.13.2": - version: 1.13.2 - resolution: "@webassemblyjs/ieee754@npm:1.13.2" - dependencies: - "@xtuc/ieee754": "npm:^1.2.0" - checksum: 10/d7e3520baa37a7309fa7db4d73d69fb869878853b1ebd4b168821bd03fcc4c0e1669c06231315b0039035d9a7a462e53de3ad982da4a426a4b0743b5888e8673 - languageName: node - linkType: hard - "@webassemblyjs/leb128@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/leb128@npm:1.11.6" @@ -9011,15 +8888,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/leb128@npm:1.13.2": - version: 1.13.2 - resolution: "@webassemblyjs/leb128@npm:1.13.2" - dependencies: - "@xtuc/long": "npm:4.2.2" - checksum: 10/3a10542c86807061ec3230bac8ee732289c852b6bceb4b88ebd521a12fbcecec7c432848284b298154f28619e2746efbed19d6904aef06c49ef20a0b85f650cf - languageName: node - linkType: hard - "@webassemblyjs/utf8@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/utf8@npm:1.11.6" @@ -9027,13 +8895,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/utf8@npm:1.13.2": - version: 1.13.2 - resolution: "@webassemblyjs/utf8@npm:1.13.2" - checksum: 10/27885e5d19f339501feb210867d69613f281eda695ac508f04d69fa3398133d05b6870969c0242b054dc05420ed1cc49a64dea4fe0588c18d211cddb0117cc54 - languageName: node - linkType: hard - "@webassemblyjs/wasm-edit@npm:^1.11.5": version: 1.11.6 resolution: "@webassemblyjs/wasm-edit@npm:1.11.6" @@ -9050,22 +8911,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/wasm-edit@npm:^1.14.1": - version: 1.14.1 - resolution: "@webassemblyjs/wasm-edit@npm:1.14.1" - dependencies: - "@webassemblyjs/ast": "npm:1.14.1" - "@webassemblyjs/helper-buffer": "npm:1.14.1" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" - "@webassemblyjs/helper-wasm-section": "npm:1.14.1" - "@webassemblyjs/wasm-gen": "npm:1.14.1" - "@webassemblyjs/wasm-opt": "npm:1.14.1" - "@webassemblyjs/wasm-parser": "npm:1.14.1" - "@webassemblyjs/wast-printer": "npm:1.14.1" - checksum: 10/c62c50eadcf80876713f8c9f24106b18cf208160ab842fcb92060fd78c37bf37e7fcf0b7cbf1afc05d230277c2ce0f3f728432082c472dd1293e184a95f9dbdd - languageName: node - linkType: hard - "@webassemblyjs/wasm-gen@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/wasm-gen@npm:1.11.6" @@ -9079,19 +8924,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/wasm-gen@npm:1.14.1": - version: 1.14.1 - resolution: "@webassemblyjs/wasm-gen@npm:1.14.1" - dependencies: - "@webassemblyjs/ast": "npm:1.14.1" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" - "@webassemblyjs/ieee754": "npm:1.13.2" - "@webassemblyjs/leb128": "npm:1.13.2" - "@webassemblyjs/utf8": "npm:1.13.2" - checksum: 10/6085166b0987d3031355fe17a4f9ef0f412e08098d95454059aced2bd72a4c3df2bc099fa4d32d640551fc3eca1ac1a997b44432e46dc9d84642688e42c17ed4 - languageName: node - linkType: hard - "@webassemblyjs/wasm-opt@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/wasm-opt@npm:1.11.6" @@ -9104,18 +8936,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/wasm-opt@npm:1.14.1": - version: 1.14.1 - resolution: "@webassemblyjs/wasm-opt@npm:1.14.1" - dependencies: - "@webassemblyjs/ast": "npm:1.14.1" - "@webassemblyjs/helper-buffer": "npm:1.14.1" - "@webassemblyjs/wasm-gen": "npm:1.14.1" - "@webassemblyjs/wasm-parser": "npm:1.14.1" - checksum: 10/fa5d1ef8d2156e7390927f938f513b7fb4440dd6804b3d6c8622b7b1cf25a3abf1a5809f615896d4918e04b27b52bc3cbcf18faf2d563cb563ae0a9204a492db - languageName: node - linkType: hard - "@webassemblyjs/wasm-parser@npm:1.11.6, @webassemblyjs/wasm-parser@npm:^1.11.5": version: 1.11.6 resolution: "@webassemblyjs/wasm-parser@npm:1.11.6" @@ -9130,20 +8950,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/wasm-parser@npm:1.14.1, @webassemblyjs/wasm-parser@npm:^1.14.1": - version: 1.14.1 - resolution: "@webassemblyjs/wasm-parser@npm:1.14.1" - dependencies: - "@webassemblyjs/ast": "npm:1.14.1" - "@webassemblyjs/helper-api-error": "npm:1.13.2" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.13.2" - "@webassemblyjs/ieee754": "npm:1.13.2" - "@webassemblyjs/leb128": "npm:1.13.2" - "@webassemblyjs/utf8": "npm:1.13.2" - checksum: 10/07d9805fda88a893c984ed93d5a772d20d671e9731358ab61c6c1af8e0e58d1c42fc230c18974dfddebc9d2dd7775d514ba4d445e70080b16478b4b16c39c7d9 - languageName: node - linkType: hard - "@webassemblyjs/wast-printer@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/wast-printer@npm:1.11.6" @@ -9154,16 +8960,6 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/wast-printer@npm:1.14.1": - version: 1.14.1 - resolution: "@webassemblyjs/wast-printer@npm:1.14.1" - dependencies: - "@webassemblyjs/ast": "npm:1.14.1" - "@xtuc/long": "npm:4.2.2" - checksum: 10/cef09aad2fcd291bfcf9efdae2ea1e961a1ba0f925d1d9dcdd8c746d32fbaf431b6d26a0241699c0e39f82139018aa720b4ceb84ac6f4c78f13072747480db69 - languageName: node - linkType: hard - "@webpack-cli/configtest@npm:^2.1.1": version: 2.1.1 resolution: "@webpack-cli/configtest@npm:2.1.1" @@ -9364,7 +9160,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.0.4, acorn@npm:^8.11.0, acorn@npm:^8.14.0": +"acorn@npm:^8.0.4, acorn@npm:^8.11.0": version: 8.14.0 resolution: "acorn@npm:8.14.0" bin: @@ -10477,20 +10273,6 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.24.0": - version: 4.24.4 - resolution: "browserslist@npm:4.24.4" - dependencies: - caniuse-lite: "npm:^1.0.30001688" - electron-to-chromium: "npm:^1.5.73" - node-releases: "npm:^2.0.19" - update-browserslist-db: "npm:^1.1.1" - bin: - browserslist: cli.js - checksum: 10/11fda105e803d891311a21a1f962d83599319165faf471c2d70e045dff82a12128f5b50b1fcba665a2352ad66147aaa248a9d2355a80aadc3f53375eb3de2e48 - languageName: node - linkType: hard - "bs-logger@npm:0.x": version: 0.2.6 resolution: "bs-logger@npm:0.2.6" @@ -10776,13 +10558,6 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001688": - version: 1.0.30001697 - resolution: "caniuse-lite@npm:1.0.30001697" - checksum: 10/cd0ca97e71f4157ff3d26990a24122586a973a14086ad43c459c2f0f2f9876b327eee57c2315bb04bd5e826e77d0b6f55723c583c78be0eaf0f3f171afaf7eff - languageName: node - linkType: hard - "chainsaw@npm:~0.1.0": version: 0.1.0 resolution: "chainsaw@npm:0.1.0" @@ -12501,13 +12276,6 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.5.73": - version: 1.5.93 - resolution: "electron-to-chromium@npm:1.5.93" - checksum: 10/14fed9c0a0b4db86aff4267aa66afa5072a1b779b687252a059e25b2e72d2bf7c09147cf4ae8eae866c1ed7552b022d0f18239a00cda9e31b216eb5f203c72cc - languageName: node - linkType: hard - "elliptic@npm:^6.5.3, elliptic@npm:^6.5.4": version: 6.5.7 resolution: "elliptic@npm:6.5.7" @@ -12593,16 +12361,6 @@ __metadata: languageName: node linkType: hard -"enhanced-resolve@npm:^5.17.1": - version: 5.18.1 - resolution: "enhanced-resolve@npm:5.18.1" - dependencies: - graceful-fs: "npm:^4.2.4" - tapable: "npm:^2.2.0" - checksum: 10/50e81c7fe2239fba5670ebce78a34709906ed3a79274aa416434f7307b252e0b7824d76a7dd403eca795571dc6afd9a44183fc45a68475e8f2fdfbae6e92fcc3 - languageName: node - linkType: hard - "entities@npm:^2.0.0": version: 2.2.0 resolution: "entities@npm:2.2.0" @@ -13138,13 +12896,6 @@ __metadata: languageName: node linkType: hard -"escalade@npm:^3.2.0": - version: 3.2.0 - resolution: "escalade@npm:3.2.0" - checksum: 10/9d7169e3965b2f9ae46971afa392f6e5a25545ea30f2e2dd99c9b0a95a3f52b5653681a84f5b2911a413ddad2d7a93d3514165072f349b5ffc59c75a899970d6 - languageName: node - linkType: hard - "escape-html@npm:^1.0.3, escape-html@npm:~1.0.3": version: 1.0.3 resolution: "escape-html@npm:1.0.3" @@ -14866,7 +14617,7 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.2, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": +"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.2, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: 10/bf152d0ed1dc159239db1ba1f74fdbc40cb02f626770dcd5815c427ce0688c2635a06ed69af364396da4636d0408fcf7d4afdf7881724c3307e46aff30ca49e2 @@ -18486,13 +18237,6 @@ __metadata: languageName: node linkType: hard -"node-releases@npm:^2.0.19": - version: 2.0.19 - resolution: "node-releases@npm:2.0.19" - checksum: 10/c2b33b4f0c40445aee56141f13ca692fa6805db88510e5bbb3baadb2da13e1293b738e638e15e4a8eb668bb9e97debb08e7a35409b477b5cc18f171d35a83045 - languageName: node - linkType: hard - "nopt@npm:^5.0.0": version: 5.0.0 resolution: "nopt@npm:5.0.0" @@ -19266,13 +19010,6 @@ __metadata: languageName: node linkType: hard -"picocolors@npm:^1.1.1": - version: 1.1.1 - resolution: "picocolors@npm:1.1.1" - checksum: 10/e1cf46bf84886c79055fdfa9dcb3e4711ad259949e3565154b004b260cd356c5d54b31a1437ce9782624bf766272fe6b0154f5f0c744fb7af5d454d2b60db045 - languageName: node - linkType: hard - "picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" @@ -20983,18 +20720,6 @@ __metadata: languageName: node linkType: hard -"schema-utils@npm:^4.3.0": - version: 4.3.0 - resolution: "schema-utils@npm:4.3.0" - dependencies: - "@types/json-schema": "npm:^7.0.9" - ajv: "npm:^8.9.0" - ajv-formats: "npm:^2.1.1" - ajv-keywords: "npm:^5.1.0" - checksum: 10/86c5a7c72a275c56f140bc3cdd832d56efb11428c88ad588127db12cb9b2c83ccaa9540e115d7baa9c6175b5e360094457e29c44e6fb76787c9498c2eb6df5d6 - languageName: node - linkType: hard - "select-hose@npm:^2.0.0": version: 2.0.0 resolution: "select-hose@npm:2.0.0" @@ -21093,15 +20818,6 @@ __metadata: languageName: node linkType: hard -"serialize-javascript@npm:^6.0.2": - version: 6.0.2 - resolution: "serialize-javascript@npm:6.0.2" - dependencies: - randombytes: "npm:^2.1.0" - checksum: 10/445a420a6fa2eaee4b70cbd884d538e259ab278200a2ededd73253ada17d5d48e91fb1f4cd224a236ab62ea7ba0a70c6af29fc93b4f3d3078bf7da1c031fde58 - languageName: node - linkType: hard - "serve-handler@npm:^6.1.5": version: 6.1.6 resolution: "serve-handler@npm:6.1.6" @@ -22163,28 +21879,6 @@ __metadata: languageName: node linkType: hard -"terser-webpack-plugin@npm:^5.3.10": - version: 5.3.11 - resolution: "terser-webpack-plugin@npm:5.3.11" - dependencies: - "@jridgewell/trace-mapping": "npm:^0.3.25" - jest-worker: "npm:^27.4.5" - schema-utils: "npm:^4.3.0" - serialize-javascript: "npm:^6.0.2" - terser: "npm:^5.31.1" - peerDependencies: - webpack: ^5.1.0 - peerDependenciesMeta: - "@swc/core": - optional: true - esbuild: - optional: true - uglify-js: - optional: true - checksum: 10/a8f7c92c75aa42628adfa4d171d4695c366c1852ecb4a24e72dd6fec86e383e12ac24b627e798fedff4e213c21fe851cebc61be3ab5a2537e6e42bea46690aa3 - languageName: node - linkType: hard - "terser-webpack-plugin@npm:^5.3.7, terser-webpack-plugin@npm:^5.3.9": version: 5.3.9 resolution: "terser-webpack-plugin@npm:5.3.9" @@ -22221,20 +21915,6 @@ __metadata: languageName: node linkType: hard -"terser@npm:^5.31.1": - version: 5.38.0 - resolution: "terser@npm:5.38.0" - dependencies: - "@jridgewell/source-map": "npm:^0.3.3" - acorn: "npm:^8.8.2" - commander: "npm:^2.20.0" - source-map-support: "npm:~0.5.20" - bin: - terser: bin/terser - checksum: 10/91d20ab35836861e1500a298b3f401b93f0a564cd4a52cd0da79f1a0a8fdbce4967cfc9b77f037603273a31af698eee2b27bbfab4dc5812d334035c9be18256b - languageName: node - linkType: hard - "test-exclude@npm:^6.0.0": version: 6.0.0 resolution: "test-exclude@npm:6.0.0" @@ -22953,20 +22633,6 @@ __metadata: languageName: node linkType: hard -"update-browserslist-db@npm:^1.1.1": - version: 1.1.2 - resolution: "update-browserslist-db@npm:1.1.2" - dependencies: - escalade: "npm:^3.2.0" - picocolors: "npm:^1.1.1" - peerDependencies: - browserslist: ">= 4.21.0" - bin: - update-browserslist-db: cli.js - checksum: 10/e7bf8221dfb21eba4a770cd803df94625bb04f65a706aa94c567de9600fe4eb6133fda016ec471dad43b9e7959c1bffb6580b5e20a87808d2e8a13e3892699a9 - languageName: node - linkType: hard - "uqr@npm:^0.1.2": version: 0.1.2 resolution: "uqr@npm:0.1.2" @@ -23338,16 +23004,6 @@ __metadata: languageName: node linkType: hard -"watchpack@npm:^2.4.1": - version: 2.4.2 - resolution: "watchpack@npm:2.4.2" - dependencies: - glob-to-regexp: "npm:^0.4.1" - graceful-fs: "npm:^4.1.2" - checksum: 10/6bd4c051d9af189a6c781c3158dcb3069f432a0c144159eeb0a44117412105c61b2b683a5c9eebc4324625e0e9b76536387d0ba354594fa6cbbdf1ef60bee4c3 - languageName: node - linkType: hard - "wbuf@npm:^1.1.0, wbuf@npm:^1.7.3": version: 1.7.3 resolution: "wbuf@npm:1.7.3" @@ -23620,42 +23276,6 @@ __metadata: languageName: node linkType: hard -"webpack@npm:^5": - version: 5.97.1 - resolution: "webpack@npm:5.97.1" - dependencies: - "@types/eslint-scope": "npm:^3.7.7" - "@types/estree": "npm:^1.0.6" - "@webassemblyjs/ast": "npm:^1.14.1" - "@webassemblyjs/wasm-edit": "npm:^1.14.1" - "@webassemblyjs/wasm-parser": "npm:^1.14.1" - acorn: "npm:^8.14.0" - browserslist: "npm:^4.24.0" - chrome-trace-event: "npm:^1.0.2" - enhanced-resolve: "npm:^5.17.1" - es-module-lexer: "npm:^1.2.1" - eslint-scope: "npm:5.1.1" - events: "npm:^3.2.0" - glob-to-regexp: "npm:^0.4.1" - graceful-fs: "npm:^4.2.11" - json-parse-even-better-errors: "npm:^2.3.1" - loader-runner: "npm:^4.2.0" - mime-types: "npm:^2.1.27" - neo-async: "npm:^2.6.2" - schema-utils: "npm:^3.2.0" - tapable: "npm:^2.1.1" - terser-webpack-plugin: "npm:^5.3.10" - watchpack: "npm:^2.4.1" - webpack-sources: "npm:^3.2.3" - peerDependenciesMeta: - webpack-cli: - optional: true - bin: - webpack: bin/webpack.js - checksum: 10/665bd3b8c84b20f0b1f250159865e4d3e9b76c682030313d49124d5f8e96357ccdcc799dd9fe0ebf010fdb33dbc59d9863d79676a308e868e360ac98f7c09987 - languageName: node - linkType: hard - "webpack@npm:^5.88.0": version: 5.88.0 resolution: "webpack@npm:5.88.0" From 75a98237cc7e67ffcbc03939a963ade22481f6b3 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Fri, 7 Feb 2025 12:22:07 +0100 Subject: [PATCH 3/3] Deduplicate lockfile --- yarn.lock | 29 +++-------------------------- 1 file changed, 3 insertions(+), 26 deletions(-) diff --git a/yarn.lock b/yarn.lock index 1ac66cff43..c8d6359a8f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2645,20 +2645,13 @@ __metadata: languageName: node linkType: hard -"@discoveryjs/json-ext@npm:0.5.7": +"@discoveryjs/json-ext@npm:0.5.7, @discoveryjs/json-ext@npm:^0.5.0": version: 0.5.7 resolution: "@discoveryjs/json-ext@npm:0.5.7" checksum: 10/b95682a852448e8ef50d6f8e3b7ba288aab3fd98a2bafbe46881a3db0c6e7248a2debe9e1ee0d4137c521e4743ca5bbcb1c0765c9d7b3e0ef53231506fec42b4 languageName: node linkType: hard -"@discoveryjs/json-ext@npm:^0.5.0": - version: 0.5.6 - resolution: "@discoveryjs/json-ext@npm:0.5.6" - checksum: 10/61f84f6098f5ae31128e98ff0e9415d1af4c2b61fcfb01a23800e2863a0a2a08ddc187a2152d68b7f4dcff6982f60f4e684bddda1edbbc55775ba9af58ca160b - languageName: node - linkType: hard - "@emotion/babel-plugin@npm:^11.11.0": version: 11.11.0 resolution: "@emotion/babel-plugin@npm:11.11.0" @@ -9135,7 +9128,7 @@ __metadata: languageName: node linkType: hard -"acorn-walk@npm:^8.0.0": +"acorn-walk@npm:^8.0.0, acorn-walk@npm:^8.0.2, acorn-walk@npm:^8.1.1": version: 8.3.4 resolution: "acorn-walk@npm:8.3.4" dependencies: @@ -9144,13 +9137,6 @@ __metadata: languageName: node linkType: hard -"acorn-walk@npm:^8.0.2, acorn-walk@npm:^8.1.1": - version: 8.2.0 - resolution: "acorn-walk@npm:8.2.0" - checksum: 10/e69f7234f2adfeb16db3671429a7c80894105bd7534cb2032acf01bb26e6a847952d11a062d071420b43f8d82e33d2e57f26fe87d9cce0853e8143d8910ff1de - languageName: node - linkType: hard - "acorn@npm:^7.0.0": version: 7.4.1 resolution: "acorn@npm:7.4.1" @@ -9160,7 +9146,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.0.4, acorn@npm:^8.11.0": +"acorn@npm:^8.0.4, acorn@npm:^8.1.0, acorn@npm:^8.10.0, acorn@npm:^8.11.0, acorn@npm:^8.4.1, acorn@npm:^8.7.1, acorn@npm:^8.8.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": version: 8.14.0 resolution: "acorn@npm:8.14.0" bin: @@ -9169,15 +9155,6 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.1.0, acorn@npm:^8.10.0, acorn@npm:^8.4.1, acorn@npm:^8.7.1, acorn@npm:^8.8.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": - version: 8.12.1 - resolution: "acorn@npm:8.12.1" - bin: - acorn: bin/acorn - checksum: 10/d08c2d122bba32d0861e0aa840b2ee25946c286d5dc5990abca991baf8cdbfbe199b05aacb221b979411a2fea36f83e26b5ac4f6b4e0ce49038c62316c1848f0 - languageName: node - linkType: hard - "aes-js@npm:4.0.0-beta.5": version: 4.0.0-beta.5 resolution: "aes-js@npm:4.0.0-beta.5"