From 97cfd62f4a2c12d5246ea9ad0263de20cb53fbd3 Mon Sep 17 00:00:00 2001 From: Tom Herold Date: Fri, 18 Jul 2025 15:08:08 +0200 Subject: [PATCH 01/23] use esbuild for transpiling and bundling --- esbuild_config.js | 212 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 212 insertions(+) create mode 100755 esbuild_config.js diff --git a/esbuild_config.js b/esbuild_config.js new file mode 100755 index 0000000000..4a4362077b --- /dev/null +++ b/esbuild_config.js @@ -0,0 +1,212 @@ +const esbuild = require('esbuild'); +const path = require('node:path'); +const fs = require('node:fs'); +const protobuf = require('protobufjs'); + + +// Community plugins +const { lessLoader } = require('esbuild-plugin-less'); +const copyPlugin = require('esbuild-plugin-copy').default; +const workerPlugin = require('@chialab/esbuild-plugin-worker').default; + +// Custom plugin for .proto files (keeping this since it's very specific to your setup) +const protoPath = path.join(__dirname, 'webknossos-datastore/proto'); +const protoPlugin = { + name: 'proto', + setup(build) { + const protoRoot = path.resolve(__dirname, 'webknossos-datastore/proto'); + + // Handle .proto import resolution + build.onResolve({ filter: /\.proto$/ }, args => { + // Try to resolve relative to protoRoot + const fullPath = path.resolve(protoRoot, args.path); + + if (fs.existsSync(fullPath)) { + return { path: fullPath }; + } + + // Optionally: also check relative to importer + const relativePath = path.resolve(path.dirname(args.importer), args.path); + if (fs.existsSync(relativePath)) { + return { path: relativePath }; + } + + return { + errors: [{ text: `Could not resolve .proto file: ${args.path}` }], + }; + }); + + // Handle .proto file loading + build.onLoad({ filter: /\.proto$/ }, async (args) => { + + try { + const root = new protobuf.Root(); + + // Resolve imports from protoRoot + root.resolvePath = (origin, target) => path.resolve(protoRoot, target); + + const loaded = await root.load(args.path); + const json = loaded.toJSON(); + + return { + contents: `module.exports = ${JSON.stringify(json)};`, + loader: 'js', + }; + } catch (error) { + return { + errors: [{ text: error.message, location: { file: args.path } }], + }; + } + }); + }, +}; + +// Define build function +async function build(env = {}) { + const isProduction = env.production || process.env.NODE_ENV === 'production'; + const srcPath = path.resolve(__dirname, 'frontend/javascripts/'); + + + const target = [ + 'chrome90', + 'firefox88', + 'edge90', + 'safari14', + 'ios14', + ] + + const buildOptions = { + entryPoints: { + main: path.resolve(srcPath, 'main.tsx'), + // proto: protoPath + }, + bundle: true, + outdir: 'public/bundle', + format: 'esm', + target: target, + platform: 'browser', + splitting: true, + chunkNames: '[name].[hash]', + assetNames: '[name].[hash]', + sourcemap: isProduction ? 'external' : 'inline', + minify: isProduction, + define: { + 'process.env.NODE_ENV': JSON.stringify(isProduction ? 'production' : 'development'), + 'process.env.BABEL_ENV': JSON.stringify(process.env.BABEL_ENV || 'development'), + 'process.browser': 'true', + }, + inject: [path.resolve(__dirname, 'process_shim.js')], // We'll create this file + loader: { + '.woff': 'file', + '.woff2': 'file', + '.ttf': 'file', + '.eot': 'file', + '.svg': 'file', + '.png': 'file', + '.jpg': 'file', + }, + resolveExtensions: ['.ts', '.tsx', '.js', '.json', ".proto"], + alias: { + react: path.resolve('./node_modules/react'), + three: path.resolve(__dirname, 'node_modules/three/src/Three.js'), + url: require.resolve("url/"), + }, + plugins: [ + protoPlugin, + lessLoader({ + javascriptEnabled: true, + // Add any other Less options you need + }), + copyPlugin({ + patterns: [ + { + from: 'node_modules/@zip.js/zip.js/dist/z-worker.js', + to: 'public/bundle/z-worker.js', + }, + ], + }), + workerPlugin({ + // This creates separate worker bundles with their own names + // Workers will be output as separate .js files + // The main bundle will get URLs to these worker files + target: target, + format: 'iife', // Workers need to be IIFE format + minify: isProduction, + // Configure worker build options + buildOptions: { + // Don't inject process-shim in workers, provide fallbacks instead + inject: [], + define: { + 'process.env.NODE_ENV': JSON.stringify(isProduction ? 'production' : 'development'), + 'process.browser': 'true', + 'global': 'globalThis', + }, + // Provide proper fallbacks for Node.js modules in workers + alias: { + process: 'process/browser', + + }, + }}), + ], + external: ["/assets/images/*", 'fs', 'path', 'util', 'module', "*.wasm" + ], // Add any external dependencies here if needed + publicPath: '/assets/bundle/', + metafile: true, // Generate metadata for analysis + logOverride: { + 'direct-eval': 'silent', + }, + }; + + if (env.watch) { + // Development server mode + const ctx = await esbuild.context(buildOptions); + + const { host, port } = await ctx.serve({ + servedir: 'public/bundle', + port: env.PORT || 9002, + onRequest: (args) => { + console.log(`[${args.method}] ${args.path} - status ${args.status}`); + }, + }); + + console.log(`Development server running at http://${host}:${port}`); + + // Watch for changes + await ctx.watch(); + + // Handle graceful shutdown + process.on('SIGINT', async () => { + await ctx.dispose(); + process.exit(0); + }); + } else { + // Production build + const result = await esbuild.build(buildOptions); + + if (result.metafile) { + // Write metafile for bundle analysis + await fs.promises.writeFile( + 'public/bundle/metafile.json', + JSON.stringify(result.metafile, null, 2) + ); + } + + console.log('Build completed successfully!'); + } +} + +module.exports = { build }; + +// If called directly +if (require.main === module) { + const args = process.argv.slice(2); + const env = {}; + + args.forEach(arg => { + if (arg === '--production') env.production = true; + if (arg === '--watch') env.watch = true; + if (arg.startsWith('--port=')) env.PORT = Number.parseInt(arg.split('=')[1]); + }); + + build(env).catch(console.error); +} \ No newline at end of file From 71adb3cadc0c39493dfd9fd030953b580e709d5d Mon Sep 17 00:00:00 2001 From: Tom Herold Date: Mon, 21 Jul 2025 14:55:26 +0200 Subject: [PATCH 02/23] stuff --- esbuild_config.js | 142 ++++++--- .../comment_tab/comment_tab_view.tsx | 2 +- package.json | 6 +- process_shim.js | 16 + yarn.lock | 274 +++++++++++++++++- 5 files changed, 391 insertions(+), 49 deletions(-) create mode 100644 process_shim.js diff --git a/esbuild_config.js b/esbuild_config.js index 4a4362077b..34a58aacc9 100755 --- a/esbuild_config.js +++ b/esbuild_config.js @@ -3,18 +3,113 @@ const path = require('node:path'); const fs = require('node:fs'); const protobuf = require('protobufjs'); +const srcPath = path.resolve(__dirname, 'frontend/javascripts/'); +const outputPath = path.resolve(__dirname, 'public/bundle/'); +const protoPath = path.join(__dirname, 'webknossos-datastore/proto'); + +const target = [ + 'chrome90', + 'firefox88', + 'edge90', + 'safari14', + 'ios14', +] // Community plugins const { lessLoader } = require('esbuild-plugin-less'); const copyPlugin = require('esbuild-plugin-copy').default; -const workerPlugin = require('@chialab/esbuild-plugin-worker').default; +// const workerPlugin = require('@chialab/esbuild-plugin-worker').default; +const polyfillNode = require("esbuild-plugin-polyfill-node").polyfillNode; +// const metaUrlPlugin = require("@chialab/esbuild-plugin-meta-url").default + + +// Custom worker plugin that creates separate bundles for .worker.ts files +const workerPlugin = { + name: 'worker', + setup(build) { + const isProduction = process.env.NODE_ENV === 'production'; + const workerEntries = new Map(); + + // Collect all worker files during the resolve phase + build.onResolve({ filter: /\.worker$/ }, (args) => { + const workerPath = path.resolve(srcPath, args.path + ".ts"); + const workerName = path.basename(args.path, '.worker.ts'); + const workerOutputPath = `${workerName}.js`; + + workerEntries.set(workerPath, workerOutputPath); + + // Return a virtual module that exports the worker URL + return { + path: args.path, + namespace: 'worker-url', + }; + }); + + // Handle the virtual worker URL modules + build.onLoad({ filter: /.*/, namespace: 'worker-url' }, (args) => { + const workerName = path.basename(args.path, '.worker.ts'); + const workerUrl = `/assets/bundle/${workerName}.worker.js`; + + return { + contents: `export default "${workerUrl}";`, + loader: 'js', + }; + }); + + // Build all worker bundles at the end + build.onEnd(async (result) => { + if (result.errors.length > 0) return; + + for (const [workerPath, workerOutputPath] of workerEntries) { + try { + await esbuild.build({ + entryPoints: [workerPath], + bundle: true, + format: 'iife', + target: target, + outfile: path.join(outputPath, workerOutputPath), + minify: isProduction, + sourcemap: isProduction ? 'external' : 'inline', + define: { + 'process.env.NODE_ENV': JSON.stringify(isProduction ? 'production' : 'development'), + 'global': 'globalThis', + }, + alias: { + react: path.resolve('./node_modules/react'), + three: path.resolve(__dirname, 'node_modules/three/src/Three.js'), + url: require.resolve("url/"), + }, + external: [], // Bundle everything for workers + // Don't inject process-shim in workers + inject: [], + resolveExtensions: ['.ts', '.tsx', '.js', '.json'], + plugins: [ + polyfillNode(), + lessLoader({ + javascriptEnabled: true, + }), + ], + loader: {'.wasm': 'file'} + }); + + console.log(`✓ Built worker: ${workerOutputPath}`); + } catch (error) { + console.error(`✗ Failed to build worker ${workerOutputPath}:`, error.message); + result.errors.push({ + text: `Worker build failed: ${error.message}`, + location: { file: workerPath }, + }); + } + } + }); + }, +}; // Custom plugin for .proto files (keeping this since it's very specific to your setup) -const protoPath = path.join(__dirname, 'webknossos-datastore/proto'); const protoPlugin = { name: 'proto', setup(build) { - const protoRoot = path.resolve(__dirname, 'webknossos-datastore/proto'); + const protoRoot = protoPath // Handle .proto import resolution build.onResolve({ filter: /\.proto$/ }, args => { @@ -64,16 +159,7 @@ const protoPlugin = { // Define build function async function build(env = {}) { const isProduction = env.production || process.env.NODE_ENV === 'production'; - const srcPath = path.resolve(__dirname, 'frontend/javascripts/'); - - const target = [ - 'chrome90', - 'firefox88', - 'edge90', - 'safari14', - 'ios14', - ] const buildOptions = { entryPoints: { @@ -81,7 +167,7 @@ async function build(env = {}) { // proto: protoPath }, bundle: true, - outdir: 'public/bundle', + outdir: outputPath, format: 'esm', target: target, platform: 'browser', @@ -94,6 +180,7 @@ async function build(env = {}) { 'process.env.NODE_ENV': JSON.stringify(isProduction ? 'production' : 'development'), 'process.env.BABEL_ENV': JSON.stringify(process.env.BABEL_ENV || 'development'), 'process.browser': 'true', + "global": "global" }, inject: [path.resolve(__dirname, 'process_shim.js')], // We'll create this file loader: { @@ -104,14 +191,16 @@ async function build(env = {}) { '.svg': 'file', '.png': 'file', '.jpg': 'file', + '.wasm': 'file', }, - resolveExtensions: ['.ts', '.tsx', '.js', '.json', ".proto"], + resolveExtensions: ['.ts', '.tsx', '.js', '.json', ".proto", ".wasm"], alias: { react: path.resolve('./node_modules/react'), three: path.resolve(__dirname, 'node_modules/three/src/Three.js'), url: require.resolve("url/"), }, plugins: [ + polyfillNode(), protoPlugin, lessLoader({ javascriptEnabled: true, @@ -125,30 +214,9 @@ async function build(env = {}) { }, ], }), - workerPlugin({ - // This creates separate worker bundles with their own names - // Workers will be output as separate .js files - // The main bundle will get URLs to these worker files - target: target, - format: 'iife', // Workers need to be IIFE format - minify: isProduction, - // Configure worker build options - buildOptions: { - // Don't inject process-shim in workers, provide fallbacks instead - inject: [], - define: { - 'process.env.NODE_ENV': JSON.stringify(isProduction ? 'production' : 'development'), - 'process.browser': 'true', - 'global': 'globalThis', - }, - // Provide proper fallbacks for Node.js modules in workers - alias: { - process: 'process/browser', - - }, - }}), + workerPlugin, ], - external: ["/assets/images/*", 'fs', 'path', 'util', 'module', "*.wasm" + external: ["/assets/images/*", 'fs', 'path', 'util', 'module', ], // Add any external dependencies here if needed publicPath: '/assets/bundle/', metafile: true, // Generate metadata for analysis diff --git a/frontend/javascripts/viewer/view/right-border-tabs/comment_tab/comment_tab_view.tsx b/frontend/javascripts/viewer/view/right-border-tabs/comment_tab/comment_tab_view.tsx index 6cb87a1c90..5c86936ba4 100644 --- a/frontend/javascripts/viewer/view/right-border-tabs/comment_tab/comment_tab_view.tsx +++ b/frontend/javascripts/viewer/view/right-border-tabs/comment_tab/comment_tab_view.tsx @@ -9,7 +9,7 @@ import { } from "@ant-design/icons"; import { Tree as AntdTree, Dropdown, type GetRef, Space, Tooltip, type TreeProps } from "antd"; import type { EventDataNode } from "antd/es/tree"; -import { useLifecycle } from "beautiful-react-hooks"; +import useLifecycle from "beautiful-react-hooks/useLifecycle"; import { InputKeyboard } from "libs/input"; import { useEffectOnlyOnce } from "libs/react_hooks"; import { useWkSelector } from "libs/react_hooks"; diff --git a/package.json b/package.json index 90a2dc38d1..d03d648ce2 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ }, "devDependencies": { "@biomejs/biome": "^1.9.4", + "@chialab/esbuild-plugin-worker": "^0.18.1", "@redux-saga/testing-utils": "^1.1.5", "@shaderfrog/glsl-parser": "^0.3.0", "@types/color-hash": "^1.0.2", @@ -42,6 +43,9 @@ "documentation": "^14.0.2", "dpdm": "^3.14.0", "esbuild": "^0.25", + "esbuild-plugin-copy": "^2.1.1", + "esbuild-plugin-less": "^1.3.24", + "esbuild-plugin-polyfill-node": "^0.3.0", "espree": "^3.5.4", "husky": "^9.1.5", "jsdoc": "^3.5.5", @@ -135,7 +139,7 @@ "antd": "5.22", "ball-morphology": "^0.1.0", "base64-js": "^1.2.1", - "beautiful-react-hooks": "^3.11.1", + "beautiful-react-hooks": "^3.12", "chalk": "^5.0.1", "classnames": "^2.2.5", "color-hash": "^2.0.1", diff --git a/process_shim.js b/process_shim.js new file mode 100644 index 0000000000..fbcfe8062e --- /dev/null +++ b/process_shim.js @@ -0,0 +1,16 @@ +// process-shim.js +// This file provides the process global that some modules expect +import process from 'process/browser'; + +// Make it available globally +if (typeof globalThis !== 'undefined') { + globalThis.process = process; +} else if (typeof window !== 'undefined') { + window.process = process; +} else if (typeof global !== 'undefined') { + global.process = process; +} + +// Also provide a fallback for when process is accessed directly +export { process }; +export default process; \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index ab97a88761..68be63d881 100644 --- a/yarn.lock +++ b/yarn.lock @@ -524,6 +524,54 @@ __metadata: languageName: node linkType: hard +"@chialab/esbuild-plugin-meta-url@npm:^0.18.2": + version: 0.18.2 + resolution: "@chialab/esbuild-plugin-meta-url@npm:0.18.2" + dependencies: + "@chialab/esbuild-rna": "npm:^0.18.1" + "@chialab/estransform": "npm:^0.18.1" + mime-types: "npm:^2.1.35" + checksum: 10c0/4dec36074bb6d58e2b1ff52a8cfd5a098fd49296f73a23c80f427e97c64d81fca90d42cdd094ef2068b0c49529d0c4aecc34ef38cce5680f1454999252712655 + languageName: node + linkType: hard + +"@chialab/esbuild-plugin-worker@npm:^0.18.1": + version: 0.18.1 + resolution: "@chialab/esbuild-plugin-worker@npm:0.18.1" + dependencies: + "@chialab/esbuild-plugin-meta-url": "npm:^0.18.2" + "@chialab/esbuild-rna": "npm:^0.18.0" + "@chialab/estransform": "npm:^0.18.1" + checksum: 10c0/261f3854b70c3595c5e1f51ad465db72a2f5d64044c484e0504d09eb7eb9f695d3c91a34c4add5f721667abf493bf0ec9b34778e89cbadc86dfe11763945206d + languageName: node + linkType: hard + +"@chialab/esbuild-rna@npm:^0.18.0, @chialab/esbuild-rna@npm:^0.18.1": + version: 0.18.2 + resolution: "@chialab/esbuild-rna@npm:0.18.2" + dependencies: + "@chialab/estransform": "npm:^0.18.0" + "@chialab/node-resolve": "npm:^0.18.0" + checksum: 10c0/ed1e542b85b121b02fa6fd9a554c7306d96ffd08e29905fa7959acd0011e9fba7c70702f4dee2e32d3a9b7b886767d319bb7cd6909ee765c364f828348329884 + languageName: node + linkType: hard + +"@chialab/estransform@npm:^0.18.0, @chialab/estransform@npm:^0.18.1": + version: 0.18.1 + resolution: "@chialab/estransform@npm:0.18.1" + dependencies: + "@parcel/source-map": "npm:^2.0.0" + checksum: 10c0/0e58a740a44de0918a413e6ef85061a8c2e87d26d5ba3e9e819bf08636fd9630da78caec318fa95e66b1ad1f8aa7ea4e1f00e1b2d8d0720f2837d8eff3e6f63c + languageName: node + linkType: hard + +"@chialab/node-resolve@npm:^0.18.0": + version: 0.18.0 + resolution: "@chialab/node-resolve@npm:0.18.0" + checksum: 10c0/99ba3e219de064d0fb97079e3f715eae088f1b203825bf6a4ecb7c3bfc03db1dd6509a3e6d2c130d370200e29a5e2d43cde44ca3324377d4cad04d38582d1769 + languageName: node + linkType: hard + "@csstools/color-helpers@npm:^5.0.2": version: 5.0.2 resolution: "@csstools/color-helpers@npm:5.0.2" @@ -1779,6 +1827,13 @@ __metadata: languageName: node linkType: hard +"@jspm/core@npm:^2.0.1": + version: 2.1.0 + resolution: "@jspm/core@npm:2.1.0" + checksum: 10c0/4e10f912b60f33d216a68f46351dd430f10a2024ce5b149ac93e4d19f85d0dbf0b929cbb90397ea0e8cef28f1723ea1f94c88b7c5d16ecf1f62e391ea072bc33 + languageName: node + linkType: hard + "@leichtgewicht/ip-codec@npm:^2.0.1": version: 2.0.4 resolution: "@leichtgewicht/ip-codec@npm:2.0.4" @@ -1835,6 +1890,15 @@ __metadata: languageName: node linkType: hard +"@parcel/source-map@npm:^2.0.0": + version: 2.1.1 + resolution: "@parcel/source-map@npm:2.1.1" + dependencies: + detect-libc: "npm:^1.0.3" + checksum: 10c0/cea8450e152666be413556f0d100f125e81646bffc497e7c792bd9fc5067d052f1a008c8404ce1cd3a587d58b9ef57207ada89149cf2c705e71b1978308045f6 + languageName: node + linkType: hard + "@pkgjs/parseargs@npm:^0.11.0": version: 0.11.0 resolution: "@pkgjs/parseargs@npm:0.11.0" @@ -2944,6 +3008,13 @@ __metadata: languageName: node linkType: hard +"@types/less@npm:^3.0.8": + version: 3.0.8 + resolution: "@types/less@npm:3.0.8" + checksum: 10c0/79ed1014ccecaa060b8b2ccc8ea8cd28a62463a69e21184c13eaa08bd200ffe5149b4ecc380792a3204d8f629a328b504f2ef25a6a5974f8c512f15514e78426 + languageName: node + linkType: hard + "@types/lodash@npm:^4.17.0, @types/lodash@npm:^4.17.4": version: 4.17.7 resolution: "@types/lodash@npm:4.17.7" @@ -4112,6 +4183,13 @@ __metadata: languageName: node linkType: hard +"array-union@npm:^2.1.0": + version: 2.1.0 + resolution: "array-union@npm:2.1.0" + checksum: 10c0/429897e68110374f39b771ec47a7161fc6a8fc33e196857c0a396dc75df0b5f65e4d046674db764330b6bb66b39ef48dd7c53b6a2ee75cfb0681e0c1a7033962 + languageName: node + linkType: hard + "asn1@npm:~0.2.3": version: 0.2.4 resolution: "asn1@npm:0.2.4" @@ -4230,9 +4308,9 @@ __metadata: languageName: node linkType: hard -"beautiful-react-hooks@npm:^3.11.1": - version: 3.11.1 - resolution: "beautiful-react-hooks@npm:3.11.1" +"beautiful-react-hooks@npm:^3.12": + version: 3.12.2 + resolution: "beautiful-react-hooks@npm:3.12.2" dependencies: lodash.debounce: "npm:^4.0.8" lodash.throttle: "npm:^4.1.1" @@ -4241,7 +4319,7 @@ __metadata: react-dom: ">=16.0.0" react-router-dom: ">=5.0.0" rxjs: ">=7.0.0" - checksum: 10c0/e2a8eb92b3f90acebf1222c982471b847939df8bc85b4a0c34e621e104c2b9f47b988a7e9cb54fac6e48bddbd6fedb904f43f06aa1c06296d38f4b85965bcf8b + checksum: 10c0/fcabf2163ab5090d79c1755b1d8e812e0b97d2a1530324d19ccf9d3cc15746109029e00136dc3d51f4dc3f0d421593d287b86c66dd342885a6c5271124b2ad47 languageName: node linkType: hard @@ -4389,7 +4467,7 @@ __metadata: languageName: node linkType: hard -"braces@npm:^3.0.2, braces@npm:~3.0.2": +"braces@npm:^3.0.2, braces@npm:^3.0.3, braces@npm:~3.0.2": version: 3.0.3 resolution: "braces@npm:3.0.3" dependencies: @@ -5598,6 +5676,15 @@ __metadata: languageName: node linkType: hard +"detect-libc@npm:^1.0.3": + version: 1.0.3 + resolution: "detect-libc@npm:1.0.3" + bin: + detect-libc: ./bin/detect-libc.js + checksum: 10c0/4da0deae9f69e13bc37a0902d78bf7169480004b1fed3c19722d56cff578d16f0e11633b7fbf5fb6249181236c72e90024cbd68f0b9558ae06e281f47326d50d + languageName: node + linkType: hard + "detect-node@npm:^2.0.4": version: 2.1.0 resolution: "detect-node@npm:2.1.0" @@ -5630,6 +5717,15 @@ __metadata: languageName: node linkType: hard +"dir-glob@npm:^3.0.1": + version: 3.0.1 + resolution: "dir-glob@npm:3.0.1" + dependencies: + path-type: "npm:^4.0.0" + checksum: 10c0/dcac00920a4d503e38bb64001acb19df4efc14536ada475725e12f52c16777afdee4db827f55f13a908ee7efc0cb282e2e3dbaeeb98c0993dd93d1802d3bf00c + languageName: node + linkType: hard + "distance-transform@npm:^1.0.2": version: 1.0.2 resolution: "distance-transform@npm:1.0.2" @@ -6028,6 +6124,44 @@ __metadata: languageName: node linkType: hard +"esbuild-plugin-copy@npm:^2.1.1": + version: 2.1.1 + resolution: "esbuild-plugin-copy@npm:2.1.1" + dependencies: + chalk: "npm:^4.1.2" + chokidar: "npm:^3.5.3" + fs-extra: "npm:^10.0.1" + globby: "npm:^11.0.3" + peerDependencies: + esbuild: ">= 0.14.0" + checksum: 10c0/ae0cb7cbac7328de54cbdfbfc9d47a600a16ee7fff20d8b77afaa8c2999921fff21506db3be2c20e05fd76448f098ae76d1aaae4ccfa73293247a07931c9c3e2 + languageName: node + linkType: hard + +"esbuild-plugin-less@npm:^1.3.24": + version: 1.3.24 + resolution: "esbuild-plugin-less@npm:1.3.24" + dependencies: + "@types/less": "npm:^3.0.8" + less: "npm:^4.3.0" + peerDependencies: + esbuild: ">=0.14.0 <0.25.7" + checksum: 10c0/6647bc7b99d2fd95cf9aeda22965786239e8c24cfcb497b6105600021295ebfc06ce64a2b1e3d5a970bf820cf75b46f25d9cc4e85dd52e31162e72b5afa73d72 + languageName: node + linkType: hard + +"esbuild-plugin-polyfill-node@npm:^0.3.0": + version: 0.3.0 + resolution: "esbuild-plugin-polyfill-node@npm:0.3.0" + dependencies: + "@jspm/core": "npm:^2.0.1" + import-meta-resolve: "npm:^3.0.0" + peerDependencies: + esbuild: "*" + checksum: 10c0/8e7e7ee7034a11995f99eefbb75b56b162f5b43b849f7d199cbc7b1089867a8595f48a640a1487f496d2af27986b467ccf3a34bf81cbf9961928c8b8d8cbd3ac + languageName: node + linkType: hard + "esbuild@npm:^0.20.0": version: 0.20.2 resolution: "esbuild@npm:0.20.2" @@ -6656,6 +6790,19 @@ __metadata: languageName: node linkType: hard +"fast-glob@npm:^3.2.9": + version: 3.3.3 + resolution: "fast-glob@npm:3.3.3" + dependencies: + "@nodelib/fs.stat": "npm:^2.0.2" + "@nodelib/fs.walk": "npm:^1.2.3" + glob-parent: "npm:^5.1.2" + merge2: "npm:^1.3.0" + micromatch: "npm:^4.0.8" + checksum: 10c0/f6aaa141d0d3384cf73cbcdfc52f475ed293f6d5b65bfc5def368b09163a9f7e5ec2b3014d80f733c405f58e470ee0cc451c2937685045cddcdeaa24199c43fe + languageName: node + linkType: hard + "fast-json-stable-stringify@npm:^2.0.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" @@ -6884,6 +7031,17 @@ __metadata: languageName: node linkType: hard +"fs-extra@npm:^10.0.1": + version: 10.1.0 + resolution: "fs-extra@npm:10.1.0" + dependencies: + graceful-fs: "npm:^4.2.0" + jsonfile: "npm:^6.0.1" + universalify: "npm:^2.0.0" + checksum: 10c0/5f579466e7109719d162a9249abbeffe7f426eb133ea486e020b89bc6d67a741134076bf439983f2eb79276ceaf6bd7b7c1e43c3fd67fe889863e69072fb0a5e + languageName: node + linkType: hard + "fs-extra@npm:^11.1.1": version: 11.2.0 resolution: "fs-extra@npm:11.2.0" @@ -7171,6 +7329,20 @@ __metadata: languageName: node linkType: hard +"globby@npm:^11.0.3": + version: 11.1.0 + resolution: "globby@npm:11.1.0" + dependencies: + array-union: "npm:^2.1.0" + dir-glob: "npm:^3.0.1" + fast-glob: "npm:^3.2.9" + ignore: "npm:^5.2.0" + merge2: "npm:^1.4.1" + slash: "npm:^3.0.0" + checksum: 10c0/b39511b4afe4bd8a7aead3a27c4ade2b9968649abab0a6c28b1a90141b96ca68ca5db1302f7c7bd29eab66bf51e13916b8e0a3d0ac08f75e1e84a39b35691189 + languageName: node + linkType: hard + "globby@npm:^14.0.0": version: 14.0.2 resolution: "globby@npm:14.0.2" @@ -7657,7 +7829,7 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2": +"iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2, iconv-lite@npm:^0.6.3": version: 0.6.3 resolution: "iconv-lite@npm:0.6.3" dependencies: @@ -7682,7 +7854,7 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^5.2.4": +"ignore@npm:^5.2.0, ignore@npm:^5.2.4": version: 5.3.2 resolution: "ignore@npm:5.3.2" checksum: 10c0/f9f652c957983634ded1e7f02da3b559a0d4cc210fca3792cb67f1b153623c9c42efdc1c4121af171e295444459fc4a9201101fb041b1104a3c000bccb188337 @@ -7734,6 +7906,13 @@ __metadata: languageName: node linkType: hard +"import-meta-resolve@npm:^3.0.0": + version: 3.1.1 + resolution: "import-meta-resolve@npm:3.1.1" + checksum: 10c0/75545f3f0f4f789f15b91a541b2d3e9d5b25fc9e8c60e8423cbdef4fff226f45520bd040219c63eee001878f075e82b52e436ca0d7d05e6c4fdc0348b7f251dd + languageName: node + linkType: hard + "imurmurhash@npm:^0.1.4": version: 0.1.4 resolution: "imurmurhash@npm:0.1.4" @@ -8673,6 +8852,41 @@ __metadata: languageName: node linkType: hard +"less@npm:^4.3.0": + version: 4.4.0 + resolution: "less@npm:4.4.0" + dependencies: + copy-anything: "npm:^2.0.1" + errno: "npm:^0.1.1" + graceful-fs: "npm:^4.1.2" + image-size: "npm:~0.5.0" + make-dir: "npm:^2.1.0" + mime: "npm:^1.4.1" + needle: "npm:^3.1.0" + parse-node-version: "npm:^1.0.1" + source-map: "npm:~0.6.0" + tslib: "npm:^2.3.0" + dependenciesMeta: + errno: + optional: true + graceful-fs: + optional: true + image-size: + optional: true + make-dir: + optional: true + mime: + optional: true + needle: + optional: true + source-map: + optional: true + bin: + lessc: bin/lessc + checksum: 10c0/843b3f194fcceba2c244db3d51b1d73599410c4919d4e96b572d91a28547e2f09d60cf88e6a28c2df944eb694af1daee09c56e0f0dc4a506b8461777e3334a92 + languageName: node + linkType: hard + "lines-and-columns@npm:^1.1.6": version: 1.1.6 resolution: "lines-and-columns@npm:1.1.6" @@ -9265,7 +9479,7 @@ __metadata: languageName: node linkType: hard -"merge2@npm:^1.3.0": +"merge2@npm:^1.3.0, merge2@npm:^1.4.1": version: 1.4.1 resolution: "merge2@npm:1.4.1" checksum: 10c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb @@ -9625,6 +9839,16 @@ __metadata: languageName: node linkType: hard +"micromatch@npm:^4.0.8": + version: 4.0.8 + resolution: "micromatch@npm:4.0.8" + dependencies: + braces: "npm:^3.0.3" + picomatch: "npm:^2.3.1" + checksum: 10c0/166fa6eb926b9553f32ef81f5f531d27b4ce7da60e5baf8c021d043b27a388fb95e46a8038d5045877881e673f8134122b59624d5cecbd16eb50a42e7a6b5ca8 + languageName: node + linkType: hard + "mime-db@npm:1.52.0, mime-db@npm:>= 1.43.0 < 2": version: 1.52.0 resolution: "mime-db@npm:1.52.0" @@ -9632,7 +9856,7 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:^2.1.12, mime-types@npm:^2.1.27, mime-types@npm:^2.1.31, mime-types@npm:~2.1.17, mime-types@npm:~2.1.19, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": +"mime-types@npm:^2.1.12, mime-types@npm:^2.1.27, mime-types@npm:^2.1.31, mime-types@npm:^2.1.35, mime-types@npm:~2.1.17, mime-types@npm:~2.1.19, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": version: 2.1.35 resolution: "mime-types@npm:2.1.35" dependencies: @@ -10041,6 +10265,18 @@ __metadata: languageName: node linkType: hard +"needle@npm:^3.1.0": + version: 3.3.1 + resolution: "needle@npm:3.3.1" + dependencies: + iconv-lite: "npm:^0.6.3" + sax: "npm:^1.2.4" + bin: + needle: bin/needle + checksum: 10c0/233b9315d47b735867d03e7a018fb665ee6cacf3a83b991b19538019cf42b538a3e85ca745c840b4c5e9a0ffdca76472f941363bf7c166214ae8cbc650fd4d39 + languageName: node + linkType: hard + "negotiator@npm:0.6.3, negotiator@npm:^0.6.3": version: 0.6.3 resolution: "negotiator@npm:0.6.3" @@ -13042,6 +13278,13 @@ __metadata: languageName: node linkType: hard +"slash@npm:^3.0.0": + version: 3.0.0 + resolution: "slash@npm:3.0.0" + checksum: 10c0/e18488c6a42bdfd4ac5be85b2ced3ccd0224773baae6ad42cfbb9ec74fc07f9fa8396bd35ee638084ead7a2a0818eb5e7151111544d4731ce843019dab4be47b + languageName: node + linkType: hard + "slash@npm:^5.1.0": version: 5.1.0 resolution: "slash@npm:5.1.0" @@ -13928,6 +14171,13 @@ __metadata: languageName: node linkType: hard +"tslib@npm:^2.3.0": + version: 2.8.1 + resolution: "tslib@npm:2.8.1" + checksum: 10c0/9c4759110a19c53f992d9aae23aac5ced636e99887b51b9e61def52611732872ff7668757d4e4c61f19691e36f4da981cd9485e869b4a7408d689f6bf1f14e62 + languageName: node + linkType: hard + "tsutils@npm:3": version: 3.21.0 resolution: "tsutils@npm:3.21.0" @@ -14782,6 +15032,7 @@ __metadata: "@ant-design/colors": "npm:^7.0.0" "@ant-design/icons": "npm:^5.5.0" "@biomejs/biome": "npm:^1.9.4" + "@chialab/esbuild-plugin-worker": "npm:^0.18.1" "@dnd-kit/core": "npm:^6.1.0" "@dnd-kit/sortable": "npm:^8.0.0" "@fortawesome/fontawesome-free": "npm:^5.15.4" @@ -14819,7 +15070,7 @@ __metadata: antd: "npm:5.22" ball-morphology: "npm:^0.1.0" base64-js: "npm:^1.2.1" - beautiful-react-hooks: "npm:^3.11.1" + beautiful-react-hooks: "npm:^3.12" browserslist-to-esbuild: "npm:^1.2.0" chalk: "npm:^5.0.1" classnames: "npm:^2.2.5" @@ -14840,6 +15091,9 @@ __metadata: dpdm: "npm:^3.14.0" esbuild: "npm:^0.25" esbuild-loader: "npm:^4.1.0" + esbuild-plugin-copy: "npm:^2.1.1" + esbuild-plugin-less: "npm:^1.3.24" + esbuild-plugin-polyfill-node: "npm:^0.3.0" espree: "npm:^3.5.4" file-saver: "npm:^2.0.1" flexlayout-react: "npm:0.7.15" From fe467c982be031c712b066385eb6106779a3978e Mon Sep 17 00:00:00 2001 From: Tom Herold Date: Mon, 21 Jul 2025 15:31:19 +0200 Subject: [PATCH 03/23] it kinda works --- app/views/main.scala.html | 8 ++++---- esbuild_config.js | 4 ++-- .../javascripts/test/_ava_polyfill_provider.ts | 6 ------ .../viewer/workers/comlink_wrapper.ts | 4 ++-- process_shim.js | 5 +++++ tools/proxy/proxy.js | 16 +++++++++++----- 6 files changed, 24 insertions(+), 19 deletions(-) delete mode 100644 frontend/javascripts/test/_ava_polyfill_provider.ts diff --git a/app/views/main.scala.html b/app/views/main.scala.html index 03dd605515..c51ab92edf 100755 --- a/app/views/main.scala.html +++ b/app/views/main.scala.html @@ -27,12 +27,12 @@ } - + /> --> - - + + diff --git a/esbuild_config.js b/esbuild_config.js index 34a58aacc9..635bad17cb 100755 --- a/esbuild_config.js +++ b/esbuild_config.js @@ -48,14 +48,14 @@ const workerPlugin = { // Handle the virtual worker URL modules build.onLoad({ filter: /.*/, namespace: 'worker-url' }, (args) => { const workerName = path.basename(args.path, '.worker.ts'); - const workerUrl = `/assets/bundle/${workerName}.worker.js`; + const workerUrl = `/assets/bundle/${workerName}.js`; return { contents: `export default "${workerUrl}";`, loader: 'js', }; }); - + // Build all worker bundles at the end build.onEnd(async (result) => { if (result.errors.length > 0) return; diff --git a/frontend/javascripts/test/_ava_polyfill_provider.ts b/frontend/javascripts/test/_ava_polyfill_provider.ts deleted file mode 100644 index 412fa0c22e..0000000000 --- a/frontend/javascripts/test/_ava_polyfill_provider.ts +++ /dev/null @@ -1,6 +0,0 @@ -// @ts-nocheck - -const { AbortController, AbortSignal } = require("abort-controller"); - -global.AbortController = AbortController; -global.AbortSignal = AbortSignal; diff --git a/frontend/javascripts/viewer/workers/comlink_wrapper.ts b/frontend/javascripts/viewer/workers/comlink_wrapper.ts index e56c484df9..33b3cb2bb1 100644 --- a/frontend/javascripts/viewer/workers/comlink_wrapper.ts +++ b/frontend/javascripts/viewer/workers/comlink_wrapper.ts @@ -47,7 +47,7 @@ type UseCreateWorkerToUseMe = { readonly _wrapped: T; }; export function createWorker any>( - WorkerClass: UseCreateWorkerToUseMe, + workerUrl: string, ): (...params: Parameters) => Promise> { if (wrap == null) { // In a node context (e.g., when executing tests), we don't create web workers which is why @@ -58,7 +58,7 @@ export function createWorker any>( return wrap( // @ts-ignore - new WorkerClass(), + new Worker(workerUrl), ); } export function expose(fn: T): UseCreateWorkerToUseMe { diff --git a/process_shim.js b/process_shim.js index fbcfe8062e..ba6696abb3 100644 --- a/process_shim.js +++ b/process_shim.js @@ -2,6 +2,10 @@ // This file provides the process global that some modules expect import process from 'process/browser'; +if (typeof global === 'undefined') { + window.global = window; +} + // Make it available globally if (typeof globalThis !== 'undefined') { globalThis.process = process; @@ -11,6 +15,7 @@ if (typeof globalThis !== 'undefined') { global.process = process; } + // Also provide a fallback for when process is accessed directly export { process }; export default process; \ No newline at end of file diff --git a/tools/proxy/proxy.js b/tools/proxy/proxy.js index dc9a7d69c3..0aa341ca26 100644 --- a/tools/proxy/proxy.js +++ b/tools/proxy/proxy.js @@ -35,11 +35,11 @@ const processes = { shell: true, }, ), - webpackDev: spawnIfNotSpecified("noWebpackDev", "node_modules/.bin/webpack-dev-server", [], { - cwd: ROOT, - env: makeEnv(PORT + 2, HOST), - shell: true, - }), + // esbuild_dev: spawnIfNotSpecified("noWebpackDev", "node ./esbuild_config.js", ["--watch", "--port", PORT + 2], { + // cwd: ROOT, + // env: makeEnv(PORT + 2, HOST), + // shell: true, + // }), fossildDB: spawnIfNotSpecified( "noFossilDB", `${ROOT}/fossildb/run.sh > ${ROOT}/fossildb/logs`, @@ -125,6 +125,12 @@ function toBackend(req, res) { } function toWebpackDev(req, res) { + const originalUrl = req.url; + const strippedUrl = originalUrl.replace(/^\/assets\/bundle/, '') || '/'; + + console.log(`[Proxy] → esbuild: ${originalUrl} → ${strippedUrl}`); + + req.url = strippedUrl; proxy.web(req, res, { target: `http://127.0.0.1:${PORT + 2}` }); } From f348e3f16c9855ab62cd974af79653a1d5e4e650 Mon Sep 17 00:00:00 2001 From: Tom Herold Date: Mon, 21 Jul 2025 16:27:50 +0200 Subject: [PATCH 04/23] enable esbuild in proxy --- tools/proxy/proxy.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tools/proxy/proxy.js b/tools/proxy/proxy.js index 0aa341ca26..0a200a8424 100644 --- a/tools/proxy/proxy.js +++ b/tools/proxy/proxy.js @@ -35,11 +35,11 @@ const processes = { shell: true, }, ), - // esbuild_dev: spawnIfNotSpecified("noWebpackDev", "node ./esbuild_config.js", ["--watch", "--port", PORT + 2], { - // cwd: ROOT, - // env: makeEnv(PORT + 2, HOST), - // shell: true, - // }), + esbuild_dev: spawnIfNotSpecified("noWebpackDev", "node ./esbuild_config.js", ["--watch", "--port", PORT + 2], { + cwd: ROOT, + env: makeEnv(PORT + 2, HOST), + shell: true, + }), fossildDB: spawnIfNotSpecified( "noFossilDB", `${ROOT}/fossildb/run.sh > ${ROOT}/fossildb/logs`, From ed5aa9e8821f340ba07608a7300372e3599cfcbc Mon Sep 17 00:00:00 2001 From: Tom Herold Date: Mon, 21 Jul 2025 16:28:01 +0200 Subject: [PATCH 05/23] stuff --- tools/proxy/proxy.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/proxy/proxy.js b/tools/proxy/proxy.js index 0a200a8424..2e599bbedb 100644 --- a/tools/proxy/proxy.js +++ b/tools/proxy/proxy.js @@ -35,7 +35,7 @@ const processes = { shell: true, }, ), - esbuild_dev: spawnIfNotSpecified("noWebpackDev", "node ./esbuild_config.js", ["--watch", "--port", PORT + 2], { + esbuild_dev: spawnIfNotSpecified("noEsbuildDev", "node ./esbuild_config.js", ["--watch", "--port", PORT + 2], { cwd: ROOT, env: makeEnv(PORT + 2, HOST), shell: true, From 4008d8870bdaddff812a401f3cf510fffc472541 Mon Sep 17 00:00:00 2001 From: Tom Herold Date: Mon, 21 Jul 2025 16:30:53 +0200 Subject: [PATCH 06/23] comments --- tools/proxy/proxy.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/proxy/proxy.js b/tools/proxy/proxy.js index 2e599bbedb..994c8af4a0 100644 --- a/tools/proxy/proxy.js +++ b/tools/proxy/proxy.js @@ -125,11 +125,11 @@ function toBackend(req, res) { } function toWebpackDev(req, res) { + // Remove the assets/bundle prefix from the URL + // EsBuild dev server expects all files from it's root directory, i.e. public/bundle const originalUrl = req.url; const strippedUrl = originalUrl.replace(/^\/assets\/bundle/, '') || '/'; - console.log(`[Proxy] → esbuild: ${originalUrl} → ${strippedUrl}`); - req.url = strippedUrl; proxy.web(req, res, { target: `http://127.0.0.1:${PORT + 2}` }); } From cbef71379d0b5b36bbde79a8a76e1a2329e0a8e5 Mon Sep 17 00:00:00 2001 From: Tom Herold Date: Tue, 22 Jul 2025 11:25:52 +0200 Subject: [PATCH 07/23] use a temp directory for esbuild dev server --- esbuild_config.js | 72 +++++++++++++++++++++++++---------------------- 1 file changed, 39 insertions(+), 33 deletions(-) diff --git a/esbuild_config.js b/esbuild_config.js index 635bad17cb..e5b341fb14 100755 --- a/esbuild_config.js +++ b/esbuild_config.js @@ -1,6 +1,7 @@ const esbuild = require('esbuild'); const path = require('node:path'); const fs = require('node:fs'); +const os = require('node:os'); const protobuf = require('protobufjs'); const srcPath = path.resolve(__dirname, 'frontend/javascripts/'); @@ -24,7 +25,7 @@ const polyfillNode = require("esbuild-plugin-polyfill-node").polyfillNode; // Custom worker plugin that creates separate bundles for .worker.ts files -const workerPlugin = { +const createWorkerPlugin = (buildOutDir) => ({ name: 'worker', setup(build) { const isProduction = process.env.NODE_ENV === 'production'; @@ -67,7 +68,7 @@ const workerPlugin = { bundle: true, format: 'iife', target: target, - outfile: path.join(outputPath, workerOutputPath), + outfile: path.join(buildOutDir, workerOutputPath), minify: isProduction, sourcemap: isProduction ? 'external' : 'inline', define: { @@ -103,7 +104,7 @@ const workerPlugin = { } }); }, -}; +}); // Custom plugin for .proto files (keeping this since it's very specific to your setup) const protoPlugin = { @@ -159,15 +160,39 @@ const protoPlugin = { // Define build function async function build(env = {}) { const isProduction = env.production || process.env.NODE_ENV === 'production'; - + const isWatch = env.watch; + + // Determine output directory for bundles. + // In watch mode, it's a temp dir. In production, it's the public bundle dir. + const buildOutDir = isWatch + ? fs.mkdtempSync(path.join(os.tmpdir(), "esbuild-dev")) + : outputPath; + + // Base plugins, configured to use the dynamic output directory + const plugins = [ + polyfillNode(), + protoPlugin, + lessLoader({ + javascriptEnabled: true, + }), + copyPlugin({ + patterns: [ + { + from: 'node_modules/@zip.js/zip.js/dist/z-worker.js', + to: path.join(buildOutDir, 'z-worker.js'), + }, + ], + }), + createWorkerPlugin(buildOutDir), + ]; + const buildOptions = { entryPoints: { main: path.resolve(srcPath, 'main.tsx'), - // proto: protoPath }, bundle: true, - outdir: outputPath, + outdir: buildOutDir, format: 'esm', target: target, platform: 'browser', @@ -182,7 +207,7 @@ async function build(env = {}) { 'process.browser': 'true', "global": "global" }, - inject: [path.resolve(__dirname, 'process_shim.js')], // We'll create this file + inject: [path.resolve(__dirname, 'process_shim.js')], loader: { '.woff': 'file', '.woff2': 'file', @@ -199,27 +224,10 @@ async function build(env = {}) { three: path.resolve(__dirname, 'node_modules/three/src/Three.js'), url: require.resolve("url/"), }, - plugins: [ - polyfillNode(), - protoPlugin, - lessLoader({ - javascriptEnabled: true, - // Add any other Less options you need - }), - copyPlugin({ - patterns: [ - { - from: 'node_modules/@zip.js/zip.js/dist/z-worker.js', - to: 'public/bundle/z-worker.js', - }, - ], - }), - workerPlugin, - ], - external: ["/assets/images/*", 'fs', 'path', 'util', 'module', - ], // Add any external dependencies here if needed + plugins: plugins, + external: ["/assets/images/*", 'fs', 'path', 'util', 'module'], publicPath: '/assets/bundle/', - metafile: true, // Generate metadata for analysis + metafile: !isWatch, // Don't generate metafile for dev server logOverride: { 'direct-eval': 'silent', }, @@ -230,19 +238,18 @@ async function build(env = {}) { const ctx = await esbuild.context(buildOptions); const { host, port } = await ctx.serve({ - servedir: 'public/bundle', + servedir: buildOutDir, port: env.PORT || 9002, onRequest: (args) => { - console.log(`[${args.method}] ${args.path} - status ${args.status}`); + console.log(`[${args.method}] ${args.path} - status ${args.status}`); }, }); console.log(`Development server running at http://${host}:${port}`); + console.log(`Serving files from temporary directory: ${buildOutDir}`); - // Watch for changes await ctx.watch(); - // Handle graceful shutdown process.on('SIGINT', async () => { await ctx.dispose(); process.exit(0); @@ -252,9 +259,8 @@ async function build(env = {}) { const result = await esbuild.build(buildOptions); if (result.metafile) { - // Write metafile for bundle analysis await fs.promises.writeFile( - 'public/bundle/metafile.json', + path.join(buildOutDir, 'metafile.json'), JSON.stringify(result.metafile, null, 2) ); } From aea8e113c1e23009473201bec783b268f76f838d Mon Sep 17 00:00:00 2001 From: Tom Herold Date: Tue, 22 Jul 2025 14:26:10 +0200 Subject: [PATCH 08/23] move esbuild plugins into separate files --- esbuild_config.js | 142 +--------------------------------- tools/esbuild/protoPlugin.js | 55 +++++++++++++ tools/esbuild/workerPlugin.js | 85 ++++++++++++++++++++ 3 files changed, 144 insertions(+), 138 deletions(-) create mode 100644 tools/esbuild/protoPlugin.js create mode 100644 tools/esbuild/workerPlugin.js diff --git a/esbuild_config.js b/esbuild_config.js index e5b341fb14..45428fd13c 100755 --- a/esbuild_config.js +++ b/esbuild_config.js @@ -2,7 +2,6 @@ const esbuild = require('esbuild'); const path = require('node:path'); const fs = require('node:fs'); const os = require('node:os'); -const protobuf = require('protobufjs'); const srcPath = path.resolve(__dirname, 'frontend/javascripts/'); const outputPath = path.resolve(__dirname, 'public/bundle/'); @@ -19,143 +18,10 @@ const target = [ // Community plugins const { lessLoader } = require('esbuild-plugin-less'); const copyPlugin = require('esbuild-plugin-copy').default; -// const workerPlugin = require('@chialab/esbuild-plugin-worker').default; const polyfillNode = require("esbuild-plugin-polyfill-node").polyfillNode; -// const metaUrlPlugin = require("@chialab/esbuild-plugin-meta-url").default - -// Custom worker plugin that creates separate bundles for .worker.ts files -const createWorkerPlugin = (buildOutDir) => ({ - name: 'worker', - setup(build) { - const isProduction = process.env.NODE_ENV === 'production'; - const workerEntries = new Map(); - - // Collect all worker files during the resolve phase - build.onResolve({ filter: /\.worker$/ }, (args) => { - const workerPath = path.resolve(srcPath, args.path + ".ts"); - const workerName = path.basename(args.path, '.worker.ts'); - const workerOutputPath = `${workerName}.js`; - - workerEntries.set(workerPath, workerOutputPath); - - // Return a virtual module that exports the worker URL - return { - path: args.path, - namespace: 'worker-url', - }; - }); - - // Handle the virtual worker URL modules - build.onLoad({ filter: /.*/, namespace: 'worker-url' }, (args) => { - const workerName = path.basename(args.path, '.worker.ts'); - const workerUrl = `/assets/bundle/${workerName}.js`; - - return { - contents: `export default "${workerUrl}";`, - loader: 'js', - }; - }); - - // Build all worker bundles at the end - build.onEnd(async (result) => { - if (result.errors.length > 0) return; - - for (const [workerPath, workerOutputPath] of workerEntries) { - try { - await esbuild.build({ - entryPoints: [workerPath], - bundle: true, - format: 'iife', - target: target, - outfile: path.join(buildOutDir, workerOutputPath), - minify: isProduction, - sourcemap: isProduction ? 'external' : 'inline', - define: { - 'process.env.NODE_ENV': JSON.stringify(isProduction ? 'production' : 'development'), - 'global': 'globalThis', - }, - alias: { - react: path.resolve('./node_modules/react'), - three: path.resolve(__dirname, 'node_modules/three/src/Three.js'), - url: require.resolve("url/"), - }, - external: [], // Bundle everything for workers - // Don't inject process-shim in workers - inject: [], - resolveExtensions: ['.ts', '.tsx', '.js', '.json'], - plugins: [ - polyfillNode(), - lessLoader({ - javascriptEnabled: true, - }), - ], - loader: {'.wasm': 'file'} - }); - - console.log(`✓ Built worker: ${workerOutputPath}`); - } catch (error) { - console.error(`✗ Failed to build worker ${workerOutputPath}:`, error.message); - result.errors.push({ - text: `Worker build failed: ${error.message}`, - location: { file: workerPath }, - }); - } - } - }); - }, -}); - -// Custom plugin for .proto files (keeping this since it's very specific to your setup) -const protoPlugin = { - name: 'proto', - setup(build) { - const protoRoot = protoPath - - // Handle .proto import resolution - build.onResolve({ filter: /\.proto$/ }, args => { - // Try to resolve relative to protoRoot - const fullPath = path.resolve(protoRoot, args.path); - - if (fs.existsSync(fullPath)) { - return { path: fullPath }; - } - - // Optionally: also check relative to importer - const relativePath = path.resolve(path.dirname(args.importer), args.path); - if (fs.existsSync(relativePath)) { - return { path: relativePath }; - } - - return { - errors: [{ text: `Could not resolve .proto file: ${args.path}` }], - }; - }); - - // Handle .proto file loading - build.onLoad({ filter: /\.proto$/ }, async (args) => { - - try { - const root = new protobuf.Root(); - - // Resolve imports from protoRoot - root.resolvePath = (origin, target) => path.resolve(protoRoot, target); - - const loaded = await root.load(args.path); - const json = loaded.toJSON(); - - return { - contents: `module.exports = ${JSON.stringify(json)};`, - loader: 'js', - }; - } catch (error) { - return { - errors: [{ text: error.message, location: { file: args.path } }], - }; - } - }); - }, -}; +const { createWorkerPlugin } = require('./tools/esbuild/workerPlugin.js'); +const { createProtoPlugin } = require('./tools/esbuild/protoPlugin.js'); // Define build function async function build(env = {}) { @@ -171,7 +37,7 @@ async function build(env = {}) { // Base plugins, configured to use the dynamic output directory const plugins = [ polyfillNode(), - protoPlugin, + createProtoPlugin(protoPath), lessLoader({ javascriptEnabled: true, }), @@ -183,7 +49,7 @@ async function build(env = {}) { }, ], }), - createWorkerPlugin(buildOutDir), + createWorkerPlugin(buildOutDir, srcPath, target, polyfillNode, lessLoader, __dirname), ]; diff --git a/tools/esbuild/protoPlugin.js b/tools/esbuild/protoPlugin.js new file mode 100644 index 0000000000..9de6acc041 --- /dev/null +++ b/tools/esbuild/protoPlugin.js @@ -0,0 +1,55 @@ +const path = require('node:path'); +const fs = require('node:fs'); +const protobuf = require('protobufjs'); + +// Custom plugin for .proto files +const createProtoPlugin = (protoPath) => ({ + name: 'proto', + setup(build) { + const protoRoot = protoPath; + + // Handle .proto import resolution + build.onResolve({ filter: /\.proto$/ }, args => { + // Try to resolve relative to protoRoot + const fullPath = path.resolve(protoRoot, args.path); + + if (fs.existsSync(fullPath)) { + return { path: fullPath }; + } + + // Optionally: also check relative to importer + const relativePath = path.resolve(path.dirname(args.importer), args.path); + if (fs.existsSync(relativePath)) { + return { path: relativePath }; + } + + return { + errors: [{ text: `Could not resolve .proto file: ${args.path}` }], + }; + }); + + // Handle .proto file loading + build.onLoad({ filter: /\.proto$/ }, async (args) => { + try { + const root = new protobuf.Root(); + + // Resolve imports from protoRoot + root.resolvePath = (origin, target) => path.resolve(protoRoot, target); + + const loaded = await root.load(args.path); + const json = loaded.toJSON(); + + return { + contents: `module.exports = ${JSON.stringify(json)};`, + loader: 'js', + }; + } catch (error) { + return { + errors: [{ text: error.message, location: { file: args.path } }], + }; + } + }); + }, +}); + +module.exports = { createProtoPlugin }; \ No newline at end of file diff --git a/tools/esbuild/workerPlugin.js b/tools/esbuild/workerPlugin.js new file mode 100644 index 0000000000..c93640ce06 --- /dev/null +++ b/tools/esbuild/workerPlugin.js @@ -0,0 +1,85 @@ +const esbuild = require('esbuild'); +const path = require('node:path'); + +const { lessLoader } = require('esbuild-plugin-less'); +const polyfillNode = require("esbuild-plugin-polyfill-node").polyfillNode; + + +// Custom worker plugin that creates separate bundles for .worker.ts files +const createWorkerPlugin = (buildOutDir, srcPath, target, projectRoot) => ({ + name: 'worker', + setup(build) { + const isProduction = process.env.NODE_ENV === 'production'; + const workerEntries = new Map(); + + // Collect all worker files during the resolve phase + build.onResolve({ filter: /\.worker$/ }, (args) => { + const workerPath = path.resolve(srcPath, args.path + ".ts"); + const workerName = path.basename(args.path, '.worker.ts'); + const workerOutputPath = `${workerName}.js`; + + workerEntries.set(workerPath, workerOutputPath); + + // Return a virtual module that exports the worker URL + return { + path: args.path, + namespace: 'worker-url', + }; + }); + + // Handle the virtual worker URL modules + build.onLoad({ filter: /.*/, namespace: 'worker-url' }, (args) => { + const workerName = path.basename(args.path, '.worker.ts'); + const workerUrl = `/assets/bundle/${workerName}.js`; + + return { + contents: `export default "${workerUrl}";`, + loader: 'js', + }; + }); + + // Build all worker bundles at the end + build.onEnd(async (result) => { + if (result.errors.length > 0) return; + + for (const [workerPath, workerOutputPath] of workerEntries) { + try { + await esbuild.build({ + entryPoints: [workerPath], + bundle: true, + format: 'iife', + target: target, + outfile: path.join(buildOutDir, workerOutputPath), + minify: isProduction, + sourcemap: isProduction ? 'external' : 'inline', + define: { + 'process.env.NODE_ENV': JSON.stringify(isProduction ? 'production' : 'development'), + 'global': 'globalThis', + }, + external: [], // Bundle everything for workers + // Don't inject process-shim in workers + inject: [], + resolveExtensions: ['.ts', '.tsx', '.js', '.json'], + plugins: [ + polyfillNode(), + lessLoader({ + javascriptEnabled: true, + }), + ], + loader: {'.wasm': 'file'} + }); + + console.log(`✓ Built worker: ${workerOutputPath}`); + } catch (error) { + console.error(`✗ Failed to build worker ${workerOutputPath}:`, error.message); + result.errors.push({ + text: `Worker build failed: ${error.message}`, + location: { file: workerPath }, + }); + } + } + }); + }, +}); + +module.exports = { createWorkerPlugin }; From e3a4d6137b21d7320f86a170c1145a6d72d919c9 Mon Sep 17 00:00:00 2001 From: Tom Herold Date: Tue, 22 Jul 2025 14:44:48 +0200 Subject: [PATCH 09/23] added verbosity and dynamic build target --- esbuild_config.js | 121 ++++++++++++++++++---------------- tools/esbuild/protoPlugin.js | 6 +- tools/esbuild/workerPlugin.js | 48 +++++++------- 3 files changed, 92 insertions(+), 83 deletions(-) diff --git a/esbuild_config.js b/esbuild_config.js index 45428fd13c..cd79a0b1a8 100755 --- a/esbuild_config.js +++ b/esbuild_config.js @@ -1,31 +1,32 @@ -const esbuild = require('esbuild'); -const path = require('node:path'); -const fs = require('node:fs'); -const os = require('node:os'); +const esbuild = require("esbuild"); +const path = require("node:path"); +const fs = require("node:fs"); +const os = require("node:os"); -const srcPath = path.resolve(__dirname, 'frontend/javascripts/'); -const outputPath = path.resolve(__dirname, 'public/bundle/'); -const protoPath = path.join(__dirname, 'webknossos-datastore/proto'); - -const target = [ - 'chrome90', - 'firefox88', - 'edge90', - 'safari14', - 'ios14', -] +const srcPath = path.resolve(__dirname, "frontend/javascripts/"); +const outputPath = path.resolve(__dirname, "public/bundle/"); +const protoPath = path.join(__dirname, "webknossos-datastore/proto"); // Community plugins -const { lessLoader } = require('esbuild-plugin-less'); -const copyPlugin = require('esbuild-plugin-copy').default; +const browserslistToEsbuild = require("browserslist-to-esbuild"); +const { lessLoader } = require("esbuild-plugin-less"); +const copyPlugin = require("esbuild-plugin-copy").default; const polyfillNode = require("esbuild-plugin-polyfill-node").polyfillNode; -const { createWorkerPlugin } = require('./tools/esbuild/workerPlugin.js'); -const { createProtoPlugin } = require('./tools/esbuild/protoPlugin.js'); +// Custom Plugins for Webknossos +const { createWorkerPlugin } = require("./tools/esbuild/workerPlugin.js"); +const { createProtoPlugin } = require("./tools/esbuild/protoPlugin.js"); + +const target = browserslistToEsbuild([ + "last 3 Chrome versions", + "last 3 Firefox versions", + "last 2 Edge versions", + "last 1 Safari versions", + "last 1 iOS versions", +]); -// Define build function async function build(env = {}) { - const isProduction = env.production || process.env.NODE_ENV === 'production'; + const isProduction = env.production || process.env.NODE_ENV === "production"; const isWatch = env.watch; // Determine output directory for bundles. @@ -34,7 +35,7 @@ async function build(env = {}) { ? fs.mkdtempSync(path.join(os.tmpdir(), "esbuild-dev")) : outputPath; - // Base plugins, configured to use the dynamic output directory + // Base plugins const plugins = [ polyfillNode(), createProtoPlugin(protoPath), @@ -44,58 +45,58 @@ async function build(env = {}) { copyPlugin({ patterns: [ { - from: 'node_modules/@zip.js/zip.js/dist/z-worker.js', - to: path.join(buildOutDir, 'z-worker.js'), + from: "node_modules/@zip.js/zip.js/dist/z-worker.js", + to: path.join(buildOutDir, "z-worker.js"), }, ], }), - createWorkerPlugin(buildOutDir, srcPath, target, polyfillNode, lessLoader, __dirname), + createWorkerPlugin(buildOutDir, srcPath, target, polyfillNode, lessLoader, __dirname, env.logLevel), ]; const buildOptions = { entryPoints: { - main: path.resolve(srcPath, 'main.tsx'), + main: path.resolve(srcPath, "main.tsx"), }, bundle: true, outdir: buildOutDir, - format: 'esm', + format: "esm", target: target, - platform: 'browser', + platform: "browser", splitting: true, - chunkNames: '[name].[hash]', - assetNames: '[name].[hash]', - sourcemap: isProduction ? 'external' : 'inline', + chunkNames: "[name].[hash]", + assetNames: "[name].[hash]", + sourcemap: isProduction ? "external" : "inline", minify: isProduction, define: { - 'process.env.NODE_ENV': JSON.stringify(isProduction ? 'production' : 'development'), - 'process.env.BABEL_ENV': JSON.stringify(process.env.BABEL_ENV || 'development'), - 'process.browser': 'true', + "process.env.NODE_ENV": JSON.stringify(isProduction ? "production" : "development"), + "process.env.BABEL_ENV": JSON.stringify(process.env.BABEL_ENV || "development"), + "process.browser": "true", "global": "global" }, - inject: [path.resolve(__dirname, 'process_shim.js')], + inject: [path.resolve(__dirname, "process_shim.js")], loader: { - '.woff': 'file', - '.woff2': 'file', - '.ttf': 'file', - '.eot': 'file', - '.svg': 'file', - '.png': 'file', - '.jpg': 'file', - '.wasm': 'file', + ".woff": "file", + ".woff2": "file", + ".ttf": "file", + ".eot": "file", + ".svg": "file", + ".png": "file", + ".jpg": "file", + ".wasm": "file", }, - resolveExtensions: ['.ts', '.tsx', '.js', '.json', ".proto", ".wasm"], + resolveExtensions: [".ts", ".tsx", ".js", ".json", ".proto", ".wasm"], alias: { - react: path.resolve('./node_modules/react'), - three: path.resolve(__dirname, 'node_modules/three/src/Three.js'), + react: path.resolve(__dirname, "node_modules/react"), + three: path.resolve(__dirname, "node_modules/three/src/Three.js"), url: require.resolve("url/"), }, plugins: plugins, - external: ["/assets/images/*", 'fs', 'path', 'util', 'module'], - publicPath: '/assets/bundle/', - metafile: !isWatch, // Don't generate metafile for dev server + external: ["/assets/images/*", "fs", "path", "util", "module"], + publicPath: "/assets/bundle/", + metafile: !isWatch, // Don"t generate metafile for dev server logOverride: { - 'direct-eval': 'silent', + "direct-eval": "silent", }, }; @@ -107,7 +108,9 @@ async function build(env = {}) { servedir: buildOutDir, port: env.PORT || 9002, onRequest: (args) => { + if (env.logLevel === "verbose") { console.log(`[${args.method}] ${args.path} - status ${args.status}`); + } }, }); @@ -116,7 +119,7 @@ async function build(env = {}) { await ctx.watch(); - process.on('SIGINT', async () => { + process.on("SIGINT", async () => { await ctx.dispose(); process.exit(0); }); @@ -126,12 +129,12 @@ async function build(env = {}) { if (result.metafile) { await fs.promises.writeFile( - path.join(buildOutDir, 'metafile.json'), + path.join(buildOutDir, "metafile.json"), JSON.stringify(result.metafile, null, 2) ); } - console.log('Build completed successfully!'); + console.log("Build completed successfully!"); } } @@ -140,12 +143,16 @@ module.exports = { build }; // If called directly if (require.main === module) { const args = process.argv.slice(2); - const env = {}; + const env = { + logLevel: "info", // Default log level + }; args.forEach(arg => { - if (arg === '--production') env.production = true; - if (arg === '--watch') env.watch = true; - if (arg.startsWith('--port=')) env.PORT = Number.parseInt(arg.split('=')[1]); + if (arg === "--production") env.production = true; + if (arg === "--watch") env.watch = true; + if (arg.startsWith("--port=")) env.PORT = Number.parseInt(arg.split("=")[1]); + if (arg === "--verbose") env.logLevel = "verbose"; + if (arg === "--silent") env.logLevel = "silent"; }); build(env).catch(console.error); diff --git a/tools/esbuild/protoPlugin.js b/tools/esbuild/protoPlugin.js index 9de6acc041..33820ed8fd 100644 --- a/tools/esbuild/protoPlugin.js +++ b/tools/esbuild/protoPlugin.js @@ -24,7 +24,7 @@ const createProtoPlugin = (protoPath) => ({ } return { - errors: [{ text: `Could not resolve .proto file: ${args.path}` }], + errors: [{ text: "Could not resolve .proto file: ${args.path}" }], }; }); @@ -34,13 +34,13 @@ const createProtoPlugin = (protoPath) => ({ const root = new protobuf.Root(); // Resolve imports from protoRoot - root.resolvePath = (origin, target) => path.resolve(protoRoot, target); + root.resolvePath = (_origin, target) => path.resolve(protoRoot, target); const loaded = await root.load(args.path); const json = loaded.toJSON(); return { - contents: `module.exports = ${JSON.stringify(json)};`, + contents: `module.exports = ${JSON.stringify(json)};`, loader: 'js', }; } catch (error) { diff --git a/tools/esbuild/workerPlugin.js b/tools/esbuild/workerPlugin.js index c93640ce06..91805df0f8 100644 --- a/tools/esbuild/workerPlugin.js +++ b/tools/esbuild/workerPlugin.js @@ -1,21 +1,17 @@ -const esbuild = require('esbuild'); -const path = require('node:path'); - -const { lessLoader } = require('esbuild-plugin-less'); -const polyfillNode = require("esbuild-plugin-polyfill-node").polyfillNode; - +const esbuild = require("esbuild"); +const path = require("node:path"); // Custom worker plugin that creates separate bundles for .worker.ts files -const createWorkerPlugin = (buildOutDir, srcPath, target, projectRoot) => ({ - name: 'worker', +const createWorkerPlugin = (buildOutDir, srcPath, target, polyfillNode, lessLoader, projectRoot, logLevel) => ({ + name: "worker", setup(build) { - const isProduction = process.env.NODE_ENV === 'production'; + const isProduction = process.env.NODE_ENV === "production"; const workerEntries = new Map(); // Collect all worker files during the resolve phase build.onResolve({ filter: /\.worker$/ }, (args) => { const workerPath = path.resolve(srcPath, args.path + ".ts"); - const workerName = path.basename(args.path, '.worker.ts'); + const workerName = path.basename(args.path, ".worker.ts"); const workerOutputPath = `${workerName}.js`; workerEntries.set(workerPath, workerOutputPath); @@ -23,18 +19,18 @@ const createWorkerPlugin = (buildOutDir, srcPath, target, projectRoot) => ({ // Return a virtual module that exports the worker URL return { path: args.path, - namespace: 'worker-url', + namespace: "worker-url", }; }); // Handle the virtual worker URL modules - build.onLoad({ filter: /.*/, namespace: 'worker-url' }, (args) => { - const workerName = path.basename(args.path, '.worker.ts'); + build.onLoad({ filter: /.*/, namespace: "worker-url" }, (args) => { + const workerName = path.basename(args.path, ".worker.ts"); const workerUrl = `/assets/bundle/${workerName}.js`; return { contents: `export default "${workerUrl}";`, - loader: 'js', + loader: "js", }; }); @@ -47,29 +43,35 @@ const createWorkerPlugin = (buildOutDir, srcPath, target, projectRoot) => ({ await esbuild.build({ entryPoints: [workerPath], bundle: true, - format: 'iife', + format: "iife", target: target, outfile: path.join(buildOutDir, workerOutputPath), minify: isProduction, - sourcemap: isProduction ? 'external' : 'inline', + sourcemap: isProduction ? "external" : "inline", define: { - 'process.env.NODE_ENV': JSON.stringify(isProduction ? 'production' : 'development'), - 'global': 'globalThis', + "process.env.NODE_ENV": JSON.stringify(isProduction ? "production" : "development"), + }, + alias: { + react: path.resolve(projectRoot, "node_modules/react"), + three: path.resolve(projectRoot, "node_modules/three/src/Three.js"), + url: require.resolve("url/"), }, external: [], // Bundle everything for workers - // Don't inject process-shim in workers + // Don"t inject process-shim in workers inject: [], - resolveExtensions: ['.ts', '.tsx', '.js', '.json'], + resolveExtensions: [".ts", ".tsx", ".js", ".json"], plugins: [ polyfillNode(), lessLoader({ javascriptEnabled: true, }), ], - loader: {'.wasm': 'file'} + loader: {".wasm": "file"} }); - console.log(`✓ Built worker: ${workerOutputPath}`); + if (logLevel !== "silent") { + console.log(`✓ Built worker: ${workerOutputPath}`); + } } catch (error) { console.error(`✗ Failed to build worker ${workerOutputPath}:`, error.message); result.errors.push({ @@ -82,4 +84,4 @@ const createWorkerPlugin = (buildOutDir, srcPath, target, projectRoot) => ({ }, }); -module.exports = { createWorkerPlugin }; +module.exports = { createWorkerPlugin }; \ No newline at end of file From 562d3f432325ae9a45d70d992f36fa324d3f00c7 Mon Sep 17 00:00:00 2001 From: Tom Herold Date: Tue, 22 Jul 2025 15:06:13 +0200 Subject: [PATCH 10/23] removed webpack --- package.json | 24 +- webpack.config.js | 212 --- yarn.lock | 3221 ++++----------------------------------------- 3 files changed, 247 insertions(+), 3210 deletions(-) delete mode 100644 webpack.config.js diff --git a/package.json b/package.json index d03d648ce2..1bfb7a411a 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,6 @@ }, "devDependencies": { "@biomejs/biome": "^1.9.4", - "@chialab/esbuild-plugin-worker": "^0.18.1", "@redux-saga/testing-utils": "^1.1.5", "@shaderfrog/glsl-parser": "^0.3.0", "@types/color-hash": "^1.0.2", @@ -36,13 +35,10 @@ "@vitest/coverage-v8": "3.1.1", "abort-controller": "^3.0.0", "browserslist-to-esbuild": "^1.2.0", - "copy-webpack-plugin": "^12.0.2", - "coveralls": "^3.0.2", - "css-loader": "^6.5.1", "dependency-cruiser": "^16.10.0", "documentation": "^14.0.2", "dpdm": "^3.14.0", - "esbuild": "^0.25", + "esbuild": "^0.25.8", "esbuild-plugin-copy": "^2.1.1", "esbuild-plugin-less": "^1.3.24", "esbuild-plugin-polyfill-node": "^0.3.0", @@ -52,7 +48,6 @@ "jsdom": "^26.1.0", "json-loader": "^0.5.7", "less": "^4.0.0", - "less-loader": "^10.2.0", "lz4-wasm-nodejs": "^0.9.2", "merge-img": "^2.1.2", "pg": "^7.4.1", @@ -63,25 +58,21 @@ "redux-mock-store": "^1.2.2", "shelljs": "^0.8.5", "tmp": "0.0.33", - "ts-loader": "^9.4.1", "typescript": "^5.8.0", "typescript-coverage-report": "^0.8.0", "vite-tsconfig-paths": "^5.1.4", - "vitest": "^3.1.1", - "webpack": "^5.97.1", - "webpack-cli": "^5.1.4", - "webpack-dev-server": "^5.2.0" + "vitest": "^3.1.1" }, "scripts": { "start": "node tools/proxy/proxy.js", - "build": "node --max-old-space-size=4096 node_modules/.bin/webpack --env production", + "build": "node esbuild_config.js --production", "@comment build-backend": "Only check for errors in the backend code like done by the CI. This command is not needed to run WEBKNOSSOS", "build-backend": "yarn build-wk-backend && yarn build-wk-datastore && yarn build-wk-tracingstore && rm webknossos-tracingstore/conf/messages webknossos-datastore/conf/messages", "build-wk-backend": "sbt -no-colors -DfailOnWarning compile stage", "build-wk-datastore": "sbt -no-colors -DfailOnWarning \"project webknossosDatastore\" copyMessages compile stage", "build-wk-tracingstore": "sbt -no-colors -DfailOnWarning \"project webknossosTracingstore\" copyMessages compile stage", - "build-dev": "node_modules/.bin/webpack", - "build-watch": "node_modules/.bin/webpack -w", + "build-dev": "node esbuild_config.js", + "build-watch": "node esbuild_config.js --watch", "listening": "lsof -i:5005,7155,9000,9001,9002", "kill-listeners": "kill -9 $(lsof -t -i:5005,7155,9000,9001,9002)", "rm-fossil-lock": "rm fossildb/data/LOCK", @@ -151,7 +142,6 @@ "deep-freeze": "0.0.1", "dice-coefficient": "^2.1.0", "distance-transform": "^1.0.2", - "esbuild-loader": "^4.1.0", "file-saver": "^2.0.1", "flexlayout-react": "0.7.15", "hammerjs": "^2.0.8", @@ -164,7 +154,6 @@ "lz-string": "^1.4.4", "lz4-wasm": "^0.9.2", "memoize-one": "^6.0.0", - "mini-css-extract-plugin": "^2.5.2", "minisearch": "^5.0.0", "mjs": "^1.0.0", "ml-matrix": "^6.10.4", @@ -200,8 +189,7 @@ "tween.js": "^16.3.1", "typed-redux-saga": "^1.4.0", "url": "^0.11.0", - "url-join": "^4.0.0", - "worker-loader": "^3.0.8" + "url-join": "^4.0.0" }, "packageManager": "yarn@4.9.2" } diff --git a/webpack.config.js b/webpack.config.js deleted file mode 100644 index 433ca1a877..0000000000 --- a/webpack.config.js +++ /dev/null @@ -1,212 +0,0 @@ -module.exports = function (env = {}) { - /* eslint import/no-extraneous-dependencies:0, global-require:0, func-names:0 */ - const webpack = require("webpack"); - const { EsbuildPlugin } = require("esbuild-loader"); - const path = require("node:path"); - const MiniCssExtractPlugin = require("mini-css-extract-plugin"); - const browserslistToEsbuild = require("browserslist-to-esbuild"); - const CopyPlugin = require("copy-webpack-plugin"); - - const srcPath = path.resolve(__dirname, "frontend/javascripts/"); - const nodePath = "node_modules"; - const protoPath = path.join(__dirname, "webknossos-datastore/proto/"); - const publicPath = "/assets/bundle/"; - - const buildTarget = browserslistToEsbuild([ - "last 3 Chrome versions", - "last 3 Firefox versions", - "last 2 Edge versions", - "last 1 Safari versions", - "last 1 iOS versions", - ]); - - const plugins = [ - new webpack.DefinePlugin({ - "process.env.NODE_ENV": env.production ? '"production"' : '"development"', - "process.env.BABEL_ENV": process.env.BABEL_ENV, - }), - new webpack.IgnorePlugin({ resourceRegExp: /^\.\/locale$/, contextRegExp: /moment$/ }), - new webpack.ProvidePlugin({ - // Needed for saxophone, i.e. readable-stream, since it is used without importing - // Corresponding issue: https://github.com/nodejs/readable-stream/issues/450 - process: "process/browser", - }), - new MiniCssExtractPlugin({ - filename: "[name].css", - chunkFilename: "[name].[contenthash].css", - }), - new CopyPlugin({ - patterns: [ - // For CSP, see https://gildas-lormeau.github.io/zip.js/api/interfaces/Configuration.html#workerScripts - { from: "node_modules/@zip.js/zip.js/dist/z-worker.js", to: "[name][ext]" }, - ], - }), - ]; - - const cssLoaderUrlFilter = { - // Don't try to handle urls that already point to the assets directory - filter: (url) => !url.startsWith("/assets/"), - }; - - return { - experiments: { asyncWebAssembly: true }, - entry: { - main: "main.tsx", - }, - mode: env.production ? "production" : "development", - output: { - path: `${__dirname}/public/bundle`, - filename: "[name].js", - sourceMapFilename: "[file].[contenthash].map", - chunkFilename: "[name].[contenthash].js", - publicPath, - }, - module: { - rules: [ - { - test: /\.worker\.ts$/, - use: [ - { - loader: "worker-loader", - options: { - filename: "[name].[contenthash].worker.js", - }, - }, - ], - }, - { - test: /\.tsx?$/, - exclude: /(node_modules|bower_components)/, - loader: "esbuild-loader", - options: { - target: buildTarget, - }, - }, - { - test: /\.less$/, - use: [ - MiniCssExtractPlugin.loader, - { loader: "css-loader", options: { url: cssLoaderUrlFilter } }, - { - loader: "less-loader", - options: { - lessOptions: { - javascriptEnabled: true, - }, - }, - }, - ], - }, - { - test: /\.css$/, - use: [ - MiniCssExtractPlugin.loader, - { loader: "css-loader", options: { url: cssLoaderUrlFilter } }, - { - loader: "less-loader", - options: { - lessOptions: { - javascriptEnabled: true, - }, - }, - }, - ], - }, - { - test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/, - type: "asset", - parser: { dataUrlCondition: { maxSize: 10000 } }, - // generator: { mimetype: "application/font-woff" }, - }, - { - test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/, - type: "asset/resource", - }, - { - test: /\.png$/, - type: "asset", - parser: { dataUrlCondition: { maxSize: 10000 } }, - }, - { test: /\.jpg$/, type: "asset/resource" }, - { test: /\.proto$/, use: ["json-loader", "proto-loader6"] }, - { - test: /\.m?js/, - resolve: { - fullySpecified: false, - }, - }, - ], - }, - resolve: { - modules: [srcPath, nodePath, protoPath], - alias: { - react: path.resolve("./node_modules/react"), - }, - extensions: [".ts", ".tsx", ".js", ".json"], - fallback: { - // Needed for jsonschema - url: require.resolve("url/"), - // Needed for lz4-wasm-nodejs (which is only used in test context, which is - // why we use empty modules) - path: false, - util: false, - fs: false, - // Needed for mock-require - module: false, - }, - }, - optimization: { - minimize: env.production, - minimizer: [ - new EsbuildPlugin({ - target: buildTarget, // Syntax to transpile to (see options below for possible values) - }), - ], - splitChunks: { - chunks: "all", - // Use a consistent name for the vendors chunk - name: "vendors~main", - cacheGroups: { - html2canvas: { - test: /[\\/]node_modules[\\/](html2canvas)[\\/]/, - chunks: "all", - name: "vendors~html2canvas", - }, - }, - }, - }, - // See https://webpack.js.org/configuration/devtool/ - devtool: env.production ? "source-map" : "eval-source-map", - plugins, - devServer: { - static: { - directory: `${__dirname}/public`, - }, - devMiddleware: { - publicPath, - }, - port: env.PORT != null ? env.PORT : 9002, - hot: false, - liveReload: false, - client: { - overlay: false, - logging: "none", - }, - }, - cache: { - type: "filesystem", - buildDependencies: { - config: [__filename], - }, - }, - stats: { - preset: "minimal", - }, - // Ignore the lengthy warnings which are added to the exports dynamically - ignoreWarnings: [ - /export 'STLExporter'/, - /export 'SRGBColorSpace'/, - /export 'LinearSRGBColorSpace'/, - ], - }; -}; diff --git a/yarn.lock b/yarn.lock index 68be63d881..105cea30e2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -524,54 +524,6 @@ __metadata: languageName: node linkType: hard -"@chialab/esbuild-plugin-meta-url@npm:^0.18.2": - version: 0.18.2 - resolution: "@chialab/esbuild-plugin-meta-url@npm:0.18.2" - dependencies: - "@chialab/esbuild-rna": "npm:^0.18.1" - "@chialab/estransform": "npm:^0.18.1" - mime-types: "npm:^2.1.35" - checksum: 10c0/4dec36074bb6d58e2b1ff52a8cfd5a098fd49296f73a23c80f427e97c64d81fca90d42cdd094ef2068b0c49529d0c4aecc34ef38cce5680f1454999252712655 - languageName: node - linkType: hard - -"@chialab/esbuild-plugin-worker@npm:^0.18.1": - version: 0.18.1 - resolution: "@chialab/esbuild-plugin-worker@npm:0.18.1" - dependencies: - "@chialab/esbuild-plugin-meta-url": "npm:^0.18.2" - "@chialab/esbuild-rna": "npm:^0.18.0" - "@chialab/estransform": "npm:^0.18.1" - checksum: 10c0/261f3854b70c3595c5e1f51ad465db72a2f5d64044c484e0504d09eb7eb9f695d3c91a34c4add5f721667abf493bf0ec9b34778e89cbadc86dfe11763945206d - languageName: node - linkType: hard - -"@chialab/esbuild-rna@npm:^0.18.0, @chialab/esbuild-rna@npm:^0.18.1": - version: 0.18.2 - resolution: "@chialab/esbuild-rna@npm:0.18.2" - dependencies: - "@chialab/estransform": "npm:^0.18.0" - "@chialab/node-resolve": "npm:^0.18.0" - checksum: 10c0/ed1e542b85b121b02fa6fd9a554c7306d96ffd08e29905fa7959acd0011e9fba7c70702f4dee2e32d3a9b7b886767d319bb7cd6909ee765c364f828348329884 - languageName: node - linkType: hard - -"@chialab/estransform@npm:^0.18.0, @chialab/estransform@npm:^0.18.1": - version: 0.18.1 - resolution: "@chialab/estransform@npm:0.18.1" - dependencies: - "@parcel/source-map": "npm:^2.0.0" - checksum: 10c0/0e58a740a44de0918a413e6ef85061a8c2e87d26d5ba3e9e819bf08636fd9630da78caec318fa95e66b1ad1f8aa7ea4e1f00e1b2d8d0720f2837d8eff3e6f63c - languageName: node - linkType: hard - -"@chialab/node-resolve@npm:^0.18.0": - version: 0.18.0 - resolution: "@chialab/node-resolve@npm:0.18.0" - checksum: 10c0/99ba3e219de064d0fb97079e3f715eae088f1b203825bf6a4ecb7c3bfc03db1dd6509a3e6d2c130d370200e29a5e2d43cde44ca3324377d4cad04d38582d1769 - languageName: node - linkType: hard - "@csstools/color-helpers@npm:^5.0.2": version: 5.0.2 resolution: "@csstools/color-helpers@npm:5.0.2" @@ -625,13 +577,6 @@ __metadata: languageName: node linkType: hard -"@discoveryjs/json-ext@npm:^0.5.0": - version: 0.5.7 - resolution: "@discoveryjs/json-ext@npm:0.5.7" - checksum: 10c0/e10f1b02b78e4812646ddf289b7d9f2cb567d336c363b266bd50cd223cf3de7c2c74018d91cd2613041568397ef3a4a2b500aba588c6e5bd78c38374ba68f38c - languageName: node - linkType: hard - "@dnd-kit/accessibility@npm:^3.1.0": version: 3.1.0 resolution: "@dnd-kit/accessibility@npm:3.1.0" @@ -695,20 +640,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/aix-ppc64@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/aix-ppc64@npm:0.20.2" - conditions: os=aix & cpu=ppc64 - languageName: node - linkType: hard - -"@esbuild/aix-ppc64@npm:0.25.1": - version: 0.25.1 - resolution: "@esbuild/aix-ppc64@npm:0.25.1" - conditions: os=aix & cpu=ppc64 - languageName: node - linkType: hard - "@esbuild/aix-ppc64@npm:0.25.2": version: 0.25.2 resolution: "@esbuild/aix-ppc64@npm:0.25.2" @@ -716,17 +647,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/android-arm64@npm:0.20.2" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/android-arm64@npm:0.25.1": - version: 0.25.1 - resolution: "@esbuild/android-arm64@npm:0.25.1" - conditions: os=android & cpu=arm64 +"@esbuild/aix-ppc64@npm:0.25.8": + version: 0.25.8 + resolution: "@esbuild/aix-ppc64@npm:0.25.8" + conditions: os=aix & cpu=ppc64 languageName: node linkType: hard @@ -737,17 +661,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/android-arm@npm:0.20.2" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - -"@esbuild/android-arm@npm:0.25.1": - version: 0.25.1 - resolution: "@esbuild/android-arm@npm:0.25.1" - conditions: os=android & cpu=arm +"@esbuild/android-arm64@npm:0.25.8": + version: 0.25.8 + resolution: "@esbuild/android-arm64@npm:0.25.8" + conditions: os=android & cpu=arm64 languageName: node linkType: hard @@ -758,17 +675,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-x64@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/android-x64@npm:0.20.2" - conditions: os=android & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/android-x64@npm:0.25.1": - version: 0.25.1 - resolution: "@esbuild/android-x64@npm:0.25.1" - conditions: os=android & cpu=x64 +"@esbuild/android-arm@npm:0.25.8": + version: 0.25.8 + resolution: "@esbuild/android-arm@npm:0.25.8" + conditions: os=android & cpu=arm languageName: node linkType: hard @@ -779,17 +689,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/darwin-arm64@npm:0.20.2" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/darwin-arm64@npm:0.25.1": - version: 0.25.1 - resolution: "@esbuild/darwin-arm64@npm:0.25.1" - conditions: os=darwin & cpu=arm64 +"@esbuild/android-x64@npm:0.25.8": + version: 0.25.8 + resolution: "@esbuild/android-x64@npm:0.25.8" + conditions: os=android & cpu=x64 languageName: node linkType: hard @@ -800,17 +703,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/darwin-x64@npm:0.20.2" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/darwin-x64@npm:0.25.1": - version: 0.25.1 - resolution: "@esbuild/darwin-x64@npm:0.25.1" - conditions: os=darwin & cpu=x64 +"@esbuild/darwin-arm64@npm:0.25.8": + version: 0.25.8 + resolution: "@esbuild/darwin-arm64@npm:0.25.8" + conditions: os=darwin & cpu=arm64 languageName: node linkType: hard @@ -821,17 +717,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/freebsd-arm64@npm:0.20.2" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/freebsd-arm64@npm:0.25.1": - version: 0.25.1 - resolution: "@esbuild/freebsd-arm64@npm:0.25.1" - conditions: os=freebsd & cpu=arm64 +"@esbuild/darwin-x64@npm:0.25.8": + version: 0.25.8 + resolution: "@esbuild/darwin-x64@npm:0.25.8" + conditions: os=darwin & cpu=x64 languageName: node linkType: hard @@ -842,17 +731,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/freebsd-x64@npm:0.20.2" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/freebsd-x64@npm:0.25.1": - version: 0.25.1 - resolution: "@esbuild/freebsd-x64@npm:0.25.1" - conditions: os=freebsd & cpu=x64 +"@esbuild/freebsd-arm64@npm:0.25.8": + version: 0.25.8 + resolution: "@esbuild/freebsd-arm64@npm:0.25.8" + conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard @@ -863,17 +745,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/linux-arm64@npm:0.20.2" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/linux-arm64@npm:0.25.1": - version: 0.25.1 - resolution: "@esbuild/linux-arm64@npm:0.25.1" - conditions: os=linux & cpu=arm64 +"@esbuild/freebsd-x64@npm:0.25.8": + version: 0.25.8 + resolution: "@esbuild/freebsd-x64@npm:0.25.8" + conditions: os=freebsd & cpu=x64 languageName: node linkType: hard @@ -884,17 +759,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/linux-arm@npm:0.20.2" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@esbuild/linux-arm@npm:0.25.1": - version: 0.25.1 - resolution: "@esbuild/linux-arm@npm:0.25.1" - conditions: os=linux & cpu=arm +"@esbuild/linux-arm64@npm:0.25.8": + version: 0.25.8 + resolution: "@esbuild/linux-arm64@npm:0.25.8" + conditions: os=linux & cpu=arm64 languageName: node linkType: hard @@ -905,17 +773,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/linux-ia32@npm:0.20.2" - conditions: os=linux & cpu=ia32 - languageName: node - linkType: hard - -"@esbuild/linux-ia32@npm:0.25.1": - version: 0.25.1 - resolution: "@esbuild/linux-ia32@npm:0.25.1" - conditions: os=linux & cpu=ia32 +"@esbuild/linux-arm@npm:0.25.8": + version: 0.25.8 + resolution: "@esbuild/linux-arm@npm:0.25.8" + conditions: os=linux & cpu=arm languageName: node linkType: hard @@ -926,17 +787,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/linux-loong64@npm:0.20.2" - conditions: os=linux & cpu=loong64 - languageName: node - linkType: hard - -"@esbuild/linux-loong64@npm:0.25.1": - version: 0.25.1 - resolution: "@esbuild/linux-loong64@npm:0.25.1" - conditions: os=linux & cpu=loong64 +"@esbuild/linux-ia32@npm:0.25.8": + version: 0.25.8 + resolution: "@esbuild/linux-ia32@npm:0.25.8" + conditions: os=linux & cpu=ia32 languageName: node linkType: hard @@ -947,17 +801,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/linux-mips64el@npm:0.20.2" - conditions: os=linux & cpu=mips64el - languageName: node - linkType: hard - -"@esbuild/linux-mips64el@npm:0.25.1": - version: 0.25.1 - resolution: "@esbuild/linux-mips64el@npm:0.25.1" - conditions: os=linux & cpu=mips64el +"@esbuild/linux-loong64@npm:0.25.8": + version: 0.25.8 + resolution: "@esbuild/linux-loong64@npm:0.25.8" + conditions: os=linux & cpu=loong64 languageName: node linkType: hard @@ -968,17 +815,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/linux-ppc64@npm:0.20.2" - conditions: os=linux & cpu=ppc64 - languageName: node - linkType: hard - -"@esbuild/linux-ppc64@npm:0.25.1": - version: 0.25.1 - resolution: "@esbuild/linux-ppc64@npm:0.25.1" - conditions: os=linux & cpu=ppc64 +"@esbuild/linux-mips64el@npm:0.25.8": + version: 0.25.8 + resolution: "@esbuild/linux-mips64el@npm:0.25.8" + conditions: os=linux & cpu=mips64el languageName: node linkType: hard @@ -989,17 +829,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/linux-riscv64@npm:0.20.2" - conditions: os=linux & cpu=riscv64 - languageName: node - linkType: hard - -"@esbuild/linux-riscv64@npm:0.25.1": - version: 0.25.1 - resolution: "@esbuild/linux-riscv64@npm:0.25.1" - conditions: os=linux & cpu=riscv64 +"@esbuild/linux-ppc64@npm:0.25.8": + version: 0.25.8 + resolution: "@esbuild/linux-ppc64@npm:0.25.8" + conditions: os=linux & cpu=ppc64 languageName: node linkType: hard @@ -1010,17 +843,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/linux-s390x@npm:0.20.2" - conditions: os=linux & cpu=s390x - languageName: node - linkType: hard - -"@esbuild/linux-s390x@npm:0.25.1": - version: 0.25.1 - resolution: "@esbuild/linux-s390x@npm:0.25.1" - conditions: os=linux & cpu=s390x +"@esbuild/linux-riscv64@npm:0.25.8": + version: 0.25.8 + resolution: "@esbuild/linux-riscv64@npm:0.25.8" + conditions: os=linux & cpu=riscv64 languageName: node linkType: hard @@ -1031,17 +857,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/linux-x64@npm:0.20.2" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/linux-x64@npm:0.25.1": - version: 0.25.1 - resolution: "@esbuild/linux-x64@npm:0.25.1" - conditions: os=linux & cpu=x64 +"@esbuild/linux-s390x@npm:0.25.8": + version: 0.25.8 + resolution: "@esbuild/linux-s390x@npm:0.25.8" + conditions: os=linux & cpu=s390x languageName: node linkType: hard @@ -1052,10 +871,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/netbsd-arm64@npm:0.25.1": - version: 0.25.1 - resolution: "@esbuild/netbsd-arm64@npm:0.25.1" - conditions: os=netbsd & cpu=arm64 +"@esbuild/linux-x64@npm:0.25.8": + version: 0.25.8 + resolution: "@esbuild/linux-x64@npm:0.25.8" + conditions: os=linux & cpu=x64 languageName: node linkType: hard @@ -1066,17 +885,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/netbsd-x64@npm:0.20.2" - conditions: os=netbsd & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/netbsd-x64@npm:0.25.1": - version: 0.25.1 - resolution: "@esbuild/netbsd-x64@npm:0.25.1" - conditions: os=netbsd & cpu=x64 +"@esbuild/netbsd-arm64@npm:0.25.8": + version: 0.25.8 + resolution: "@esbuild/netbsd-arm64@npm:0.25.8" + conditions: os=netbsd & cpu=arm64 languageName: node linkType: hard @@ -1087,10 +899,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/openbsd-arm64@npm:0.25.1": - version: 0.25.1 - resolution: "@esbuild/openbsd-arm64@npm:0.25.1" - conditions: os=openbsd & cpu=arm64 +"@esbuild/netbsd-x64@npm:0.25.8": + version: 0.25.8 + resolution: "@esbuild/netbsd-x64@npm:0.25.8" + conditions: os=netbsd & cpu=x64 languageName: node linkType: hard @@ -1101,17 +913,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/openbsd-x64@npm:0.20.2" - conditions: os=openbsd & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/openbsd-x64@npm:0.25.1": - version: 0.25.1 - resolution: "@esbuild/openbsd-x64@npm:0.25.1" - conditions: os=openbsd & cpu=x64 +"@esbuild/openbsd-arm64@npm:0.25.8": + version: 0.25.8 + resolution: "@esbuild/openbsd-arm64@npm:0.25.8" + conditions: os=openbsd & cpu=arm64 languageName: node linkType: hard @@ -1122,17 +927,17 @@ __metadata: languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/sunos-x64@npm:0.20.2" - conditions: os=sunos & cpu=x64 +"@esbuild/openbsd-x64@npm:0.25.8": + version: 0.25.8 + resolution: "@esbuild/openbsd-x64@npm:0.25.8" + conditions: os=openbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.25.1": - version: 0.25.1 - resolution: "@esbuild/sunos-x64@npm:0.25.1" - conditions: os=sunos & cpu=x64 +"@esbuild/openharmony-arm64@npm:0.25.8": + version: 0.25.8 + resolution: "@esbuild/openharmony-arm64@npm:0.25.8" + conditions: os=openharmony & cpu=arm64 languageName: node linkType: hard @@ -1143,17 +948,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/win32-arm64@npm:0.20.2" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/win32-arm64@npm:0.25.1": - version: 0.25.1 - resolution: "@esbuild/win32-arm64@npm:0.25.1" - conditions: os=win32 & cpu=arm64 +"@esbuild/sunos-x64@npm:0.25.8": + version: 0.25.8 + resolution: "@esbuild/sunos-x64@npm:0.25.8" + conditions: os=sunos & cpu=x64 languageName: node linkType: hard @@ -1164,17 +962,10 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/win32-ia32@npm:0.20.2" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"@esbuild/win32-ia32@npm:0.25.1": - version: 0.25.1 - resolution: "@esbuild/win32-ia32@npm:0.25.1" - conditions: os=win32 & cpu=ia32 +"@esbuild/win32-arm64@npm:0.25.8": + version: 0.25.8 + resolution: "@esbuild/win32-arm64@npm:0.25.8" + conditions: os=win32 & cpu=arm64 languageName: node linkType: hard @@ -1185,23 +976,23 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.20.2": - version: 0.20.2 - resolution: "@esbuild/win32-x64@npm:0.20.2" - conditions: os=win32 & cpu=x64 +"@esbuild/win32-ia32@npm:0.25.8": + version: 0.25.8 + resolution: "@esbuild/win32-ia32@npm:0.25.8" + conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.25.1": - version: 0.25.1 - resolution: "@esbuild/win32-x64@npm:0.25.1" +"@esbuild/win32-x64@npm:0.25.2": + version: 0.25.2 + resolution: "@esbuild/win32-x64@npm:0.25.2" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.25.2": - version: 0.25.2 - resolution: "@esbuild/win32-x64@npm:0.25.2" +"@esbuild/win32-x64@npm:0.25.8": + version: 0.25.8 + resolution: "@esbuild/win32-x64@npm:0.25.8" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -1776,16 +1567,6 @@ __metadata: languageName: node linkType: hard -"@jridgewell/source-map@npm:^0.3.3": - version: 0.3.6 - resolution: "@jridgewell/source-map@npm:0.3.6" - dependencies: - "@jridgewell/gen-mapping": "npm:^0.3.5" - "@jridgewell/trace-mapping": "npm:^0.3.25" - checksum: 10c0/6a4ecc713ed246ff8e5bdcc1ef7c49aaa93f7463d948ba5054dda18b02dcc6a055e2828c577bcceee058f302ce1fc95595713d44f5c45e43d459f88d267f2f04 - languageName: node - linkType: hard - "@jridgewell/sourcemap-codec@npm:1.4.14": version: 1.4.14 resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" @@ -1817,7 +1598,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.23, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": +"@jridgewell/trace-mapping@npm:^0.3.23, @jridgewell/trace-mapping@npm:^0.3.24": version: 0.3.25 resolution: "@jridgewell/trace-mapping@npm:0.3.25" dependencies: @@ -1834,13 +1615,6 @@ __metadata: languageName: node linkType: hard -"@leichtgewicht/ip-codec@npm:^2.0.1": - version: 2.0.4 - resolution: "@leichtgewicht/ip-codec@npm:2.0.4" - checksum: 10c0/3b0d8844d1d47c0a5ed7267c2964886adad3a642b85d06f95c148eeefd80cdabbd6aa0d63ccde8239967a2e9b6bb734a16bd57e1fda3d16bf56d50a7e7ec131b - languageName: node - linkType: hard - "@nodelib/fs.scandir@npm:2.1.5": version: 2.1.5 resolution: "@nodelib/fs.scandir@npm:2.1.5" @@ -1890,15 +1664,6 @@ __metadata: languageName: node linkType: hard -"@parcel/source-map@npm:^2.0.0": - version: 2.1.1 - resolution: "@parcel/source-map@npm:2.1.1" - dependencies: - detect-libc: "npm:^1.0.3" - checksum: 10c0/cea8450e152666be413556f0d100f125e81646bffc497e7c792bd9fc5067d052f1a008c8404ce1cd3a587d58b9ef57207ada89149cf2c705e71b1978308045f6 - languageName: node - linkType: hard - "@pkgjs/parseargs@npm:^0.11.0": version: 0.11.0 resolution: "@pkgjs/parseargs@npm:0.11.0" @@ -2396,13 +2161,6 @@ __metadata: languageName: node linkType: hard -"@sindresorhus/merge-streams@npm:^2.1.0": - version: 2.3.0 - resolution: "@sindresorhus/merge-streams@npm:2.3.0" - checksum: 10c0/69ee906f3125fb2c6bb6ec5cdd84e8827d93b49b3892bce8b62267116cc7e197b5cccf20c160a1d32c26014ecd14470a72a5e3ee37a58f1d6dadc0db1ccf3894 - languageName: node - linkType: hard - "@stardust-ui/react-component-event-listener@npm:~0.38.0": version: 0.38.0 resolution: "@stardust-ui/react-component-event-listener@npm:0.38.0" @@ -2492,25 +2250,6 @@ __metadata: languageName: node linkType: hard -"@types/body-parser@npm:*": - version: 1.19.2 - resolution: "@types/body-parser@npm:1.19.2" - dependencies: - "@types/connect": "npm:*" - "@types/node": "npm:*" - checksum: 10c0/c2dd533e1d4af958d656bdba7f376df68437d8dfb7e4522c88b6f3e6f827549e4be5bf0be68a5f1878accf5752ea37fba7e8a4b6dda53d0d122d77e27b69c750 - languageName: node - linkType: hard - -"@types/bonjour@npm:^3.5.13": - version: 3.5.13 - resolution: "@types/bonjour@npm:3.5.13" - dependencies: - "@types/node": "npm:*" - checksum: 10c0/eebedbca185ac3c39dd5992ef18d9e2a9f99e7f3c2f52f5561f90e9ed482c5d224c7962db95362712f580ed5713264e777a98d8f0bd8747f4eadf62937baed16 - languageName: node - linkType: hard - "@types/caseless@npm:*": version: 0.12.2 resolution: "@types/caseless@npm:0.12.2" @@ -2525,25 +2264,6 @@ __metadata: languageName: node linkType: hard -"@types/connect-history-api-fallback@npm:^1.5.4": - version: 1.5.4 - resolution: "@types/connect-history-api-fallback@npm:1.5.4" - dependencies: - "@types/express-serve-static-core": "npm:*" - "@types/node": "npm:*" - checksum: 10c0/1b4035b627dcd714b05a22557f942e24a57ca48e7377dde0d2f86313fe685bc0a6566512a73257a55b5665b96c3041fb29228ac93331d8133011716215de8244 - languageName: node - linkType: hard - -"@types/connect@npm:*": - version: 3.4.35 - resolution: "@types/connect@npm:3.4.35" - dependencies: - "@types/node": "npm:*" - checksum: 10c0/f11a1ccfed540723dddd7cb496543ad40a2f663f22ff825e9b220f0bae86db8b1ced2184ee41d3fb358b019ad6519e39481b06386db91ebb859003ad1d54fe6a - languageName: node - linkType: hard - "@types/cwise-compiler@npm:*": version: 1.1.4 resolution: "@types/cwise-compiler@npm:1.1.4" @@ -2859,33 +2579,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: 10c0/a0ecbdf2f03912679440550817ff77ef39a30fa8bfdacaf6372b88b1f931828aec392f52283240f0d648cf3055c5ddc564544a626bcf245f3d09fcb099ebe3cc - languageName: node - linkType: hard - -"@types/eslint@npm:*": - version: 8.4.1 - resolution: "@types/eslint@npm:8.4.1" - dependencies: - "@types/estree": "npm:*" - "@types/json-schema": "npm:*" - checksum: 10c0/3ba1ddb8d2362316bafe65f90aa41ce23f923f8ae6a131e382540a7c0d8ad5f04117e6aba788392717a616bd6e2589a1d954630c49edb364d28dc8eeb5214890 - languageName: node - linkType: hard - -"@types/estree@npm:*": - version: 0.0.51 - resolution: "@types/estree@npm:0.0.51" - checksum: 10c0/a70c60d5e634e752fcd45b58c9c046ef22ad59ede4bc93ad5193c7e3b736ebd6bcd788ade59d9c3b7da6eeb0939235f011d4c59bb4fc04d8c346b76035099dd1 - languageName: node - linkType: hard - "@types/estree@npm:1.0.7, @types/estree@npm:^1.0.0": version: 1.0.7 resolution: "@types/estree@npm:1.0.7" @@ -2893,37 +2586,6 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:^1.0.6": - version: 1.0.6 - resolution: "@types/estree@npm:1.0.6" - checksum: 10c0/cdfd751f6f9065442cd40957c07fd80361c962869aa853c1c2fd03e101af8b9389d8ff4955a43a6fcfa223dd387a089937f95be0f3eec21ca527039fd2d9859a - languageName: node - linkType: hard - -"@types/express-serve-static-core@npm:*, @types/express-serve-static-core@npm:^4.17.33": - version: 4.17.43 - resolution: "@types/express-serve-static-core@npm:4.17.43" - dependencies: - "@types/node": "npm:*" - "@types/qs": "npm:*" - "@types/range-parser": "npm:*" - "@types/send": "npm:*" - checksum: 10c0/12480527eef86ad9f748d785811c88e6bb89f4a76e531cf2e18f1f4f0743e46783cf4d27a939dec96aec8770c54c060d9e697bb8544ecd202098140688c3b222 - languageName: node - linkType: hard - -"@types/express@npm:*, @types/express@npm:^4.17.21": - version: 4.17.21 - resolution: "@types/express@npm:4.17.21" - dependencies: - "@types/body-parser": "npm:*" - "@types/express-serve-static-core": "npm:^4.17.33" - "@types/qs": "npm:*" - "@types/serve-static": "npm:*" - checksum: 10c0/12e562c4571da50c7d239e117e688dc434db1bac8be55613294762f84fd77fbd0658ccd553c7d3ab02408f385bc93980992369dd30e2ecd2c68c358e6af8fabf - languageName: node - linkType: hard - "@types/extend@npm:^3.0.0": version: 3.0.1 resolution: "@types/extend@npm:3.0.1" @@ -2974,22 +2636,6 @@ __metadata: languageName: node linkType: hard -"@types/http-errors@npm:*": - version: 2.0.4 - resolution: "@types/http-errors@npm:2.0.4" - checksum: 10c0/494670a57ad4062fee6c575047ad5782506dd35a6b9ed3894cea65830a94367bd84ba302eb3dde331871f6d70ca287bfedb1b2cf658e6132cd2cbd427ab56836 - languageName: node - linkType: hard - -"@types/http-proxy@npm:^1.17.8": - version: 1.17.8 - resolution: "@types/http-proxy@npm:1.17.8" - dependencies: - "@types/node": "npm:*" - checksum: 10c0/3a423534960443e98f7e6f7a1b2ad56f2f93d6e9e927298e683a58ac3e1add4066288dfc3afa80724aee58133ab5272ed58321c11bf0925b7237c010c05f2ced - languageName: node - linkType: hard - "@types/jsdom@npm:^21.1.7": version: 21.1.7 resolution: "@types/jsdom@npm:21.1.7" @@ -3001,13 +2647,6 @@ __metadata: languageName: node linkType: hard -"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": - version: 7.0.11 - resolution: "@types/json-schema@npm:7.0.11" - checksum: 10c0/bd1f9a7b898ff15c4bb494eb19124f2d688b804c39f07cbf135ac73f35324970e9e8329b72aae1fb543d925ea295a1568b23056c26658cecec4741fa28c3b81a - languageName: node - linkType: hard - "@types/less@npm:^3.0.8": version: 3.0.8 resolution: "@types/less@npm:3.0.8" @@ -3064,20 +2703,6 @@ __metadata: languageName: node linkType: hard -"@types/mime@npm:*": - version: 3.0.4 - resolution: "@types/mime@npm:3.0.4" - checksum: 10c0/db478bc0f99e40f7b3e01d356a9bdf7817060808a294978111340317bcd80ca35382855578c5b60fbc84ae449674bd9bb38427b18417e1f8f19e4f72f8b242cd - languageName: node - linkType: hard - -"@types/mime@npm:^1": - version: 1.3.2 - resolution: "@types/mime@npm:1.3.2" - checksum: 10c0/61d144e5170c6cdf6de334ec0ee4bb499b1a0fb0233834a9e8cec6d289b0e3042bedf35cbc1c995d71a247635770dae3f13a9ddae69098bb54b933429bc08d35 - languageName: node - linkType: hard - "@types/minimatch@npm:*": version: 5.1.2 resolution: "@types/minimatch@npm:5.1.2" @@ -3115,15 +2740,6 @@ __metadata: languageName: node linkType: hard -"@types/node-forge@npm:^1.3.0": - version: 1.3.11 - resolution: "@types/node-forge@npm:1.3.11" - dependencies: - "@types/node": "npm:*" - checksum: 10c0/3d7d23ca0ba38ac0cf74028393bd70f31169ab9aba43f21deb787840170d307d662644bac07287495effe2812ddd7ac8a14dbd43f16c2936bbb06312e96fc3b9 - languageName: node - linkType: hard - "@types/node@npm:*, @types/node@npm:>=13.7.0": version: 18.16.3 resolution: "@types/node@npm:18.16.3" @@ -3191,20 +2807,6 @@ __metadata: languageName: node linkType: hard -"@types/qs@npm:*": - version: 6.9.7 - resolution: "@types/qs@npm:6.9.7" - checksum: 10c0/157eb05f4c75790b0ebdcf7b0547ff117feabc8cda03c3cac3d3ea82bb19a1912e76a411df3eb0bdd01026a9770f07bc0e7e3fbe39ebb31c1be4564c16be35f1 - languageName: node - linkType: hard - -"@types/range-parser@npm:*": - version: 1.2.4 - resolution: "@types/range-parser@npm:1.2.4" - checksum: 10c0/8e3c3cda88675efd9145241bcb454449715b7d015a7fb80d018dcb3d441fa1938b302242cc0dfa6b02c5d014dd8bc082ae90091e62b1e816cae3ec36c2a7dbcb - languageName: node - linkType: hard - "@types/react-command-palette@npm:^0.18.4": version: 0.18.4 resolution: "@types/react-command-palette@npm:0.18.4" @@ -3252,43 +2854,6 @@ __metadata: languageName: node linkType: hard -"@types/retry@npm:0.12.2": - version: 0.12.2 - resolution: "@types/retry@npm:0.12.2" - checksum: 10c0/07481551a988cc90b423351919928b9ddcd14e3f5591cac3ab950851bb20646e55a10e89141b38bc3093d2056d4df73700b22ff2612976ac86a6367862381884 - languageName: node - linkType: hard - -"@types/send@npm:*": - version: 0.17.4 - resolution: "@types/send@npm:0.17.4" - dependencies: - "@types/mime": "npm:^1" - "@types/node": "npm:*" - checksum: 10c0/7f17fa696cb83be0a104b04b424fdedc7eaba1c9a34b06027239aba513b398a0e2b7279778af521f516a397ced417c96960e5f50fcfce40c4bc4509fb1a5883c - languageName: node - linkType: hard - -"@types/serve-index@npm:^1.9.4": - version: 1.9.4 - resolution: "@types/serve-index@npm:1.9.4" - dependencies: - "@types/express": "npm:*" - checksum: 10c0/94c1b9e8f1ea36a229e098e1643d5665d9371f8c2658521718e259130a237c447059b903bac0dcc96ee2c15fd63f49aa647099b7d0d437a67a6946527a837438 - languageName: node - linkType: hard - -"@types/serve-static@npm:*, @types/serve-static@npm:^1.15.5": - version: 1.15.5 - resolution: "@types/serve-static@npm:1.15.5" - dependencies: - "@types/http-errors": "npm:*" - "@types/mime": "npm:*" - "@types/node": "npm:*" - checksum: 10c0/811d1a2f7e74a872195e7a013bcd87a2fb1edf07eaedcb9dcfd20c1eb4bc56ad4ea0d52141c13192c91ccda7c8aeb8a530d8a7e60b9c27f5990d7e62e0fecb03 - languageName: node - linkType: hard - "@types/shelljs@npm:^0.8.5": version: 0.8.15 resolution: "@types/shelljs@npm:0.8.15" @@ -3299,15 +2864,6 @@ __metadata: languageName: node linkType: hard -"@types/sockjs@npm:^0.3.36": - version: 0.3.36 - resolution: "@types/sockjs@npm:0.3.36" - dependencies: - "@types/node": "npm:*" - checksum: 10c0/b20b7820ee813f22de4f2ce98bdd12c68c930e016a8912b1ed967595ac0d8a4cbbff44f4d486dd97f77f5927e7b5725bdac7472c9ec5b27f53a5a13179f0612f - languageName: node - linkType: hard - "@types/stats.js@npm:*": version: 0.17.3 resolution: "@types/stats.js@npm:0.17.3" @@ -3371,15 +2927,6 @@ __metadata: languageName: node linkType: hard -"@types/ws@npm:^8.5.10": - version: 8.5.10 - resolution: "@types/ws@npm:8.5.10" - dependencies: - "@types/node": "npm:*" - checksum: 10c0/e9af279b984c4a04ab53295a40aa95c3e9685f04888df5c6920860d1dd073fcc57c7bd33578a04b285b2c655a0b52258d34bee0a20569dca8defb8393e1e5d29 - languageName: node - linkType: hard - "@types/yauzl@npm:^2.9.1": version: 2.9.2 resolution: "@types/yauzl@npm:2.9.2" @@ -3566,157 +3113,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: 10c0/67a59be8ed50ddd33fbb2e09daa5193ac215bf7f40a9371be9a0d9797a114d0d1196316d2f3943efdb923a3d809175e1563a3cb80c814fb8edccd1e77494972b - 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: 10c0/0e88bdb8b50507d9938be64df0867f00396b55eba9df7d3546eb5dc0ca64d62e06f8d881ec4a6153f2127d0f4c11d102b6e7d17aec2f26bb5ff95a5e60652412 - 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: 10c0/31be497f996ed30aae4c08cac3cce50c8dcd5b29660383c0155fce1753804fc55d47fcba74e10141c7dd2899033164e117b3bcfcda23a6b043e4ded4f1003dfb - languageName: node - linkType: hard - -"@webassemblyjs/helper-buffer@npm:1.14.1": - version: 1.14.1 - resolution: "@webassemblyjs/helper-buffer@npm:1.14.1" - checksum: 10c0/0d54105dc373c0fe6287f1091e41e3a02e36cdc05e8cf8533cdc16c59ff05a646355415893449d3768cda588af451c274f13263300a251dc11a575bc4c9bd210 - 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: 10c0/9c46852f31b234a8fb5a5a9d3f027bc542392a0d4de32f1a9c0075d5e8684aa073cb5929b56df565500b3f9cc0a2ab983b650314295b9bf208d1a1651bfc825a - 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: 10c0/c4355d14f369b30cf3cbdd3acfafc7d0488e086be6d578e3c9780bd1b512932352246be96e034e2a7fcfba4f540ec813352f312bfcbbfe5bcfbf694f82ccc682 - 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: 10c0/1f9b33731c3c6dbac3a9c483269562fa00d1b6a4e7133217f40e83e975e636fd0f8736e53abd9a47b06b66082ecc976c7384391ab0a68e12d509ea4e4b948d64 - 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: 10c0/2e732ca78c6fbae3c9b112f4915d85caecdab285c0b337954b180460290ccd0fb00d2b1dc4bb69df3504abead5191e0d28d0d17dfd6c9d2f30acac8c4961c8a7 - 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: 10c0/dad5ef9e383c8ab523ce432dfd80098384bf01c45f70eb179d594f85ce5db2f80fa8c9cba03adafd85684e6d6310f0d3969a882538975989919329ac4c984659 - languageName: node - linkType: hard - -"@webassemblyjs/utf8@npm:1.13.2": - version: 1.13.2 - resolution: "@webassemblyjs/utf8@npm:1.13.2" - checksum: 10c0/d3fac9130b0e3e5a1a7f2886124a278e9323827c87a2b971e6d0da22a2ba1278ac9f66a4f2e363ecd9fac8da42e6941b22df061a119e5c0335f81006de9ee799 - 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: 10c0/5ac4781086a2ca4b320bdbfd965a209655fe8a208ca38d89197148f8597e587c9a2c94fb6bd6f1a7dbd4527c49c6844fcdc2af981f8d793a97bf63a016aa86d2 - 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: 10c0/d678810d7f3f8fecb2e2bdadfb9afad2ec1d2bc79f59e4711ab49c81cec578371e22732d4966f59067abe5fba8e9c54923b57060a729d28d408e608beef67b10 - 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: 10c0/515bfb15277ee99ba6b11d2232ddbf22aed32aad6d0956fe8a0a0a004a1b5a3a277a71d9a3a38365d0538ac40d1b7b7243b1a244ad6cd6dece1c1bb2eb5de7ee - 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: 10c0/95427b9e5addbd0f647939bd28e3e06b8deefdbdadcf892385b5edc70091bf9b92fa5faac3fce8333554437c5d85835afef8c8a7d9d27ab6ba01ffab954db8c6 - 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: 10c0/8d7768608996a052545251e896eac079c98e0401842af8dd4de78fba8d90bd505efb6c537e909cd6dae96e09db3fa2e765a6f26492553a675da56e2db51f9d24 - languageName: node - linkType: hard - "@webgpu/types@npm:*": version: 0.1.60 resolution: "@webgpu/types@npm:0.1.60" @@ -3724,53 +3120,6 @@ __metadata: languageName: node linkType: hard -"@webpack-cli/configtest@npm:^2.1.1": - version: 2.1.1 - resolution: "@webpack-cli/configtest@npm:2.1.1" - peerDependencies: - webpack: 5.x.x - webpack-cli: 5.x.x - checksum: 10c0/a8da1f15702cb289807da99235ed95326ed7dabeb1a36ca59bd3a5dbe6adcc946a9a2767936050fc4d5ed14efab0e5b5a641dfe8e3d862c36caa5791ac12759d - languageName: node - linkType: hard - -"@webpack-cli/info@npm:^2.0.2": - version: 2.0.2 - resolution: "@webpack-cli/info@npm:2.0.2" - peerDependencies: - webpack: 5.x.x - webpack-cli: 5.x.x - checksum: 10c0/ca88a35604dc9aedac7c26e8f6793c5039dc1eea2b12a85fbfd669a5f21ecf9cf169d7fd157ea366a62666e3fa05b776306a96742ac61a9868f44fdce6b40f7d - languageName: node - linkType: hard - -"@webpack-cli/serve@npm:^2.0.5": - version: 2.0.5 - resolution: "@webpack-cli/serve@npm:2.0.5" - peerDependencies: - webpack: 5.x.x - webpack-cli: 5.x.x - peerDependenciesMeta: - webpack-dev-server: - optional: true - checksum: 10c0/36079d34971ff99a58b66b13f4184dcdd8617853c48cccdbc3f9ab7ea9e5d4fcf504e873c298ea7aa15e0b51ad2c4aee4d7a70bd7d9364e60f57b0eb93ca15fc - languageName: node - linkType: hard - -"@xtuc/ieee754@npm:^1.2.0": - version: 1.2.0 - resolution: "@xtuc/ieee754@npm:1.2.0" - checksum: 10c0/a8565d29d135039bd99ae4b2220d3e167d22cf53f867e491ed479b3f84f895742d0097f935b19aab90265a23d5d46711e4204f14c479ae3637fbf06c4666882f - languageName: node - linkType: hard - -"@xtuc/long@npm:4.2.2": - version: 4.2.2 - resolution: "@xtuc/long@npm:4.2.2" - checksum: 10c0/8582cbc69c79ad2d31568c412129bf23d2b1210a1dfb60c82d5a1df93334da4ee51f3057051658569e2c196d8dc33bc05ae6b974a711d0d16e801e1d0647ccd1 - languageName: node - linkType: hard - "@zip.js/zip.js@npm:^2.7.32": version: 2.7.32 resolution: "@zip.js/zip.js@npm:2.7.32" @@ -3794,16 +3143,6 @@ __metadata: languageName: node linkType: hard -"accepts@npm:~1.3.4, accepts@npm:~1.3.5, accepts@npm:~1.3.8": - version: 1.3.8 - resolution: "accepts@npm:1.3.8" - dependencies: - mime-types: "npm:~2.1.34" - negotiator: "npm:0.6.3" - checksum: 10c0/3a35c5f5586cfb9a21163ca47a5f77ac34fa8ceb5d17d2fa2c0d81f41cbd7f8c6fa52c77e2c039acc0f4d09e71abdc51144246900f6bef5e3c4b333f77d89362 - languageName: node - linkType: hard - "acorn-jsx-walk@npm:^2.0.0": version: 2.0.0 resolution: "acorn-jsx-walk@npm:2.0.0" @@ -3883,7 +3222,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.14.0, acorn@npm:^8.8.2": +"acorn@npm:^8.14.0": version: 8.14.1 resolution: "acorn@npm:8.14.1" bin: @@ -3927,41 +3266,7 @@ __metadata: languageName: node linkType: hard -"ajv-formats@npm:^2.1.1": - version: 2.1.1 - resolution: "ajv-formats@npm:2.1.1" - dependencies: - ajv: "npm:^8.0.0" - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - checksum: 10c0/e43ba22e91b6a48d96224b83d260d3a3a561b42d391f8d3c6d2c1559f9aa5b253bfb306bc94bbeca1d967c014e15a6efe9a207309e95b3eaae07fcbcdc2af662 - languageName: node - linkType: hard - -"ajv-keywords@npm:^3.5.2": - version: 3.5.2 - resolution: "ajv-keywords@npm:3.5.2" - peerDependencies: - ajv: ^6.9.1 - checksum: 10c0/0c57a47cbd656e8cdfd99d7c2264de5868918ffa207c8d7a72a7f63379d4333254b2ba03d69e3c035e996a3fd3eb6d5725d7a1597cca10694296e32510546360 - languageName: node - linkType: hard - -"ajv-keywords@npm:^5.1.0": - version: 5.1.0 - resolution: "ajv-keywords@npm:5.1.0" - dependencies: - fast-deep-equal: "npm:^3.1.3" - peerDependencies: - ajv: ^8.8.2 - checksum: 10c0/18bec51f0171b83123ba1d8883c126e60c6f420cef885250898bf77a8d3e65e3bfb9e8564f497e30bdbe762a83e0d144a36931328616a973ee669dc74d4a9590 - languageName: node - linkType: hard - -"ajv@npm:^6.12.3, ajv@npm:^6.12.5": +"ajv@npm:^6.12.3": version: 6.12.6 resolution: "ajv@npm:6.12.6" dependencies: @@ -3973,18 +3278,6 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^8.0.0, ajv@npm:^8.9.0": - version: 8.12.0 - resolution: "ajv@npm:8.12.0" - dependencies: - fast-deep-equal: "npm:^3.1.1" - json-schema-traverse: "npm:^1.0.0" - require-from-string: "npm:^2.0.2" - uri-js: "npm:^4.2.2" - checksum: 10c0/ac4f72adf727ee425e049bc9d8b31d4a57e1c90da8d28bcd23d60781b12fcd6fc3d68db5df16994c57b78b94eed7988f5a6b482fd376dc5b084125e20a0a622e - languageName: node - linkType: hard - "ajv@npm:^8.17.1": version: 8.17.1 resolution: "ajv@npm:8.17.1" @@ -4022,15 +3315,6 @@ __metadata: languageName: node linkType: hard -"ansi-html-community@npm:^0.0.8": - version: 0.0.8 - resolution: "ansi-html-community@npm:0.0.8" - bin: - ansi-html: bin/ansi-html - checksum: 10c0/45d3a6f0b4f10b04fdd44bef62972e2470bfd917bf00439471fa7473d92d7cbe31369c73db863cc45dda115cb42527f39e232e9256115534b8ee5806b0caeed4 - languageName: node - linkType: hard - "ansi-regex@npm:^5.0.1": version: 5.0.1 resolution: "ansi-regex@npm:5.0.1" @@ -4176,13 +3460,6 @@ __metadata: languageName: node linkType: hard -"array-flatten@npm:1.1.1": - version: 1.1.1 - resolution: "array-flatten@npm:1.1.1" - checksum: 10c0/806966c8abb2f858b08f5324d9d18d7737480610f3bd5d3498aaae6eb5efdc501a884ba019c9b4a8f02ff67002058749d05548fd42fa8643f02c9c7f22198b91 - languageName: node - linkType: hard - "array-union@npm:^2.1.0": version: 2.1.0 resolution: "array-union@npm:2.1.0" @@ -4292,13 +3569,6 @@ __metadata: languageName: node linkType: hard -"batch@npm:0.6.1": - version: 0.6.1 - resolution: "batch@npm:0.6.1" - checksum: 10c0/925a13897b4db80d4211082fe287bcf96d297af38e26448c857cee3e095c9792e3b8f26b37d268812e7f38a589f694609de8534a018b1937d7dc9f84e6b387c5 - languageName: node - linkType: hard - "bcrypt-pbkdf@npm:^1.0.0": version: 1.0.2 resolution: "bcrypt-pbkdf@npm:1.0.2" @@ -4330,13 +3600,6 @@ __metadata: languageName: node linkType: hard -"big.js@npm:^5.2.2": - version: 5.2.2 - resolution: "big.js@npm:5.2.2" - checksum: 10c0/230520f1ff920b2d2ce3e372d77a33faa4fa60d802fe01ca4ffbc321ee06023fe9a741ac02793ee778040a16b7e497f7d60c504d1c402b8fdab6f03bb785a25f - languageName: node - linkType: hard - "bignumber.js@npm:^2.1.0": version: 2.4.0 resolution: "bignumber.js@npm:2.4.0" @@ -4418,36 +3681,6 @@ __metadata: languageName: node linkType: hard -"body-parser@npm:1.20.3": - version: 1.20.3 - resolution: "body-parser@npm:1.20.3" - dependencies: - bytes: "npm:3.1.2" - content-type: "npm:~1.0.5" - debug: "npm:2.6.9" - depd: "npm:2.0.0" - destroy: "npm:1.2.0" - http-errors: "npm:2.0.0" - iconv-lite: "npm:0.4.24" - on-finished: "npm:2.4.1" - qs: "npm:6.13.0" - raw-body: "npm:2.5.2" - type-is: "npm:~1.6.18" - unpipe: "npm:1.0.0" - checksum: 10c0/0a9a93b7518f222885498dcecaad528cf010dd109b071bf471c93def4bfe30958b83e03496eb9c1ad4896db543d999bb62be1a3087294162a88cfa1b42c16310 - languageName: node - linkType: hard - -"bonjour-service@npm:^1.2.1": - version: 1.2.1 - resolution: "bonjour-service@npm:1.2.1" - dependencies: - fast-deep-equal: "npm:^3.1.3" - multicast-dns: "npm:^7.2.5" - checksum: 10c0/953cbfc27fc9e36e6f988012993ab2244817d82426603e0390d4715639031396c932b6657b1aa4ec30dbb5fa903d6b2c7f1be3af7a8ba24165c93e987c849730 - languageName: node - linkType: hard - "brace-expansion@npm:^1.1.7": version: 1.1.11 resolution: "brace-expansion@npm:1.1.11" @@ -4499,20 +3732,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: 10c0/db7ebc1733cf471e0b490b4f47e3e2ea2947ce417192c9246644e92c667dd56a71406cc58f62ca7587caf828364892e9952904a02b7aead752bc65b62a37cfe9 - languageName: node - linkType: hard - "buffer-crc32@npm:~0.2.3": version: 0.2.13 resolution: "buffer-crc32@npm:0.2.13" @@ -4551,29 +3770,6 @@ __metadata: languageName: node linkType: hard -"bundle-name@npm:^4.1.0": - version: 4.1.0 - resolution: "bundle-name@npm:4.1.0" - dependencies: - run-applescript: "npm:^7.0.0" - checksum: 10c0/8e575981e79c2bcf14d8b1c027a3775c095d362d1382312f444a7c861b0e21513c0bd8db5bd2b16e50ba0709fa622d4eab6b53192d222120305e68359daece29 - languageName: node - linkType: hard - -"bytes@npm:3.0.0": - version: 3.0.0 - resolution: "bytes@npm:3.0.0" - checksum: 10c0/91d42c38601c76460519ffef88371caacaea483a354c8e4b8808e7b027574436a5713337c003ea3de63ee4991c2a9a637884fdfe7f761760d746929d9e8fec60 - languageName: node - linkType: hard - -"bytes@npm:3.1.2": - version: 3.1.2 - resolution: "bytes@npm:3.1.2" - checksum: 10c0/76d1c43cbd602794ad8ad2ae94095cddeb1de78c5dddaa7005c51af10b0176c69971a6d88e805a90c2b6550d76636e43c40d8427a808b8645ede885de4a0358e - languageName: node - linkType: hard - "cac@npm:^6.7.14": version: 6.7.14 resolution: "cac@npm:6.7.14" @@ -4611,19 +3807,6 @@ __metadata: languageName: node linkType: hard -"call-bind@npm:^1.0.7": - version: 1.0.7 - resolution: "call-bind@npm:1.0.7" - dependencies: - es-define-property: "npm:^1.0.0" - es-errors: "npm:^1.3.0" - function-bind: "npm:^1.1.2" - get-intrinsic: "npm:^1.2.4" - set-function-length: "npm:^1.2.1" - checksum: 10c0/a3ded2e423b8e2a265983dba81c27e125b48eefb2655e7dfab6be597088da3d47c47976c24bc51b8fd9af1061f8f87b4ab78a314f3c77784b2ae2ba535ad8b8d - languageName: node - linkType: hard - "callsites@npm:^3.0.0": version: 3.1.0 resolution: "callsites@npm:3.1.0" @@ -4638,7 +3821,7 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001517, caniuse-lite@npm:^1.0.30001688": +"caniuse-lite@npm:^1.0.30001517": version: 1.0.30001718 resolution: "caniuse-lite@npm:1.0.30001718" checksum: 10c0/67f9ad09bc16443e28d14f265d6e468480cd8dc1900d0d8b982222de80c699c4f2306599c3da8a3fa7139f110d4b30d49dbac78f215470f479abb6ffe141d5d3 @@ -4747,7 +3930,7 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:^3.5.3, chokidar@npm:^3.6.0": +"chokidar@npm:^3.5.3": version: 3.6.0 resolution: "chokidar@npm:3.6.0" dependencies: @@ -4780,13 +3963,6 @@ __metadata: languageName: node linkType: hard -"chrome-trace-event@npm:^1.0.2": - version: 1.0.3 - resolution: "chrome-trace-event@npm:1.0.3" - checksum: 10c0/080ce2d20c2b9e0f8461a380e9585686caa768b1c834a464470c9dc74cda07f27611c7b727a2cd768a9cecd033297fdec4ce01f1e58b62227882c1059dec321c - languageName: node - linkType: hard - "chromium-bidi@npm:0.4.7": version: 0.4.7 resolution: "chromium-bidi@npm:0.4.7" @@ -4870,17 +4046,6 @@ __metadata: languageName: node linkType: hard -"clone-deep@npm:^4.0.1": - version: 4.0.1 - resolution: "clone-deep@npm:4.0.1" - dependencies: - is-plain-object: "npm:^2.0.4" - kind-of: "npm:^6.0.2" - shallow-clone: "npm:^3.0.0" - checksum: 10c0/637753615aa24adf0f2d505947a1bb75e63964309034a1cf56ba4b1f30af155201edd38d26ffe26911adaae267a3c138b344a4947d39f5fc1b6d6108125aa758 - languageName: node - linkType: hard - "clone@npm:^1.0.2": version: 1.0.4 resolution: "clone@npm:1.0.4" @@ -4947,13 +4112,6 @@ __metadata: languageName: node linkType: hard -"colorette@npm:^2.0.10, colorette@npm:^2.0.14": - version: 2.0.16 - resolution: "colorette@npm:2.0.16" - checksum: 10c0/7430bd996545347f262ae9716bfc8ca3776606e9db854279082004f3141b15a64ad2ee0e4f10cacba5a07cc92ca3edc2d01cbe73fd2843ccd80e98d0e3a8e79b - languageName: node - linkType: hard - "colors@npm:1.4.0": version: 1.4.0 resolution: "colors@npm:1.4.0" @@ -4984,13 +4142,6 @@ __metadata: languageName: node linkType: hard -"commander@npm:^10.0.1": - version: 10.0.1 - resolution: "commander@npm:10.0.1" - checksum: 10c0/53f33d8927758a911094adadda4b2cbac111a5b377d8706700587650fd8f45b0bbe336de4b5c3fe47fd61f420a3d9bd452b6e0e6e5600a7e74d7bf0174f6efe3 - languageName: node - linkType: hard - "commander@npm:^13.1.0": version: 13.1.0 resolution: "commander@npm:13.1.0" @@ -4998,13 +4149,6 @@ __metadata: languageName: node linkType: hard -"commander@npm:^2.20.0": - version: 2.20.3 - resolution: "commander@npm:2.20.3" - checksum: 10c0/74c781a5248c2402a0a3e966a0a2bba3c054aad144f5c023364be83265e796b20565aa9feff624132ff629aa64e16999fa40a743c10c12f7c61e96a794b99288 - languageName: node - linkType: hard - "commander@npm:^5.0.0": version: 5.1.0 resolution: "commander@npm:5.1.0" @@ -5012,30 +4156,6 @@ __metadata: languageName: node linkType: hard -"compressible@npm:~2.0.16": - version: 2.0.18 - resolution: "compressible@npm:2.0.18" - dependencies: - mime-db: "npm:>= 1.43.0 < 2" - checksum: 10c0/8a03712bc9f5b9fe530cc5a79e164e665550d5171a64575d7dcf3e0395d7b4afa2d79ab176c61b5b596e28228b350dd07c1a2a6ead12fd81d1b6cd632af2fef7 - languageName: node - linkType: hard - -"compression@npm:^1.7.4": - version: 1.7.4 - resolution: "compression@npm:1.7.4" - dependencies: - accepts: "npm:~1.3.5" - bytes: "npm:3.0.0" - compressible: "npm:~2.0.16" - debug: "npm:2.6.9" - on-headers: "npm:~1.0.2" - safe-buffer: "npm:5.1.2" - vary: "npm:~1.1.2" - checksum: 10c0/138db836202a406d8a14156a5564fb1700632a76b6e7d1546939472895a5304f2b23c80d7a22bf44c767e87a26e070dbc342ea63bb45ee9c863354fa5556bbbc - languageName: node - linkType: hard - "compute-scroll-into-view@npm:^3.0.2": version: 3.1.1 resolution: "compute-scroll-into-view@npm:3.1.1" @@ -5062,29 +4182,6 @@ __metadata: languageName: node linkType: hard -"connect-history-api-fallback@npm:^2.0.0": - version: 2.0.0 - resolution: "connect-history-api-fallback@npm:2.0.0" - checksum: 10c0/90fa8b16ab76e9531646cc70b010b1dbd078153730c510d3142f6cf07479ae8a812c5a3c0e40a28528dd1681a62395d0cfdef67da9e914c4772ac85d69a3ed87 - languageName: node - linkType: hard - -"content-disposition@npm:0.5.4": - version: 0.5.4 - resolution: "content-disposition@npm:0.5.4" - dependencies: - safe-buffer: "npm:5.2.1" - checksum: 10c0/bac0316ebfeacb8f381b38285dc691c9939bf0a78b0b7c2d5758acadad242d04783cee5337ba7d12a565a19075af1b3c11c728e1e4946de73c6ff7ce45f3f1bb - languageName: node - linkType: hard - -"content-type@npm:~1.0.4, content-type@npm:~1.0.5": - version: 1.0.5 - resolution: "content-type@npm:1.0.5" - checksum: 10c0/b76ebed15c000aee4678c3707e0860cb6abd4e680a598c0a26e17f0bfae723ec9cc2802f0ff1bc6e4d80603719010431d2231018373d4dde10f9ccff9dadf5af - languageName: node - linkType: hard - "convert-source-map@npm:^1.7.0": version: 1.8.0 resolution: "convert-source-map@npm:1.8.0" @@ -5094,20 +4191,6 @@ __metadata: languageName: node linkType: hard -"cookie-signature@npm:1.0.6": - version: 1.0.6 - resolution: "cookie-signature@npm:1.0.6" - checksum: 10c0/b36fd0d4e3fef8456915fcf7742e58fbfcc12a17a018e0eb9501c9d5ef6893b596466f03b0564b81af29ff2538fd0aa4b9d54fe5ccbfb4c90ea50ad29fe2d221 - languageName: node - linkType: hard - -"cookie@npm:0.7.1": - version: 0.7.1 - resolution: "cookie@npm:0.7.1" - checksum: 10c0/5de60c67a410e7c8dc8a46a4b72eb0fe925871d057c9a5d2c0e8145c4270a4f81076de83410c4d397179744b478e33cd80ccbcc457abf40a9409ad27dcd21dde - languageName: node - linkType: hard - "copy-anything@npm:^2.0.1": version: 2.0.3 resolution: "copy-anything@npm:2.0.3" @@ -5126,22 +4209,6 @@ __metadata: languageName: node linkType: hard -"copy-webpack-plugin@npm:^12.0.2": - version: 12.0.2 - resolution: "copy-webpack-plugin@npm:12.0.2" - dependencies: - fast-glob: "npm:^3.3.2" - glob-parent: "npm:^6.0.1" - globby: "npm:^14.0.0" - normalize-path: "npm:^3.0.0" - schema-utils: "npm:^4.2.0" - serialize-javascript: "npm:^6.0.2" - peerDependencies: - webpack: ^5.1.0 - checksum: 10c0/1a2715a1280a37b81b7040b89ed962db4aa75475b164f84f266fa4e81f209269b13f8bff10b104dff7558854bafedcdd4f30c40fd23ecd8fa28af45516b459cd - languageName: node - linkType: hard - "core-js@npm:^3.4.1": version: 3.28.0 resolution: "core-js@npm:3.28.0" @@ -5176,21 +4243,6 @@ __metadata: languageName: node linkType: hard -"coveralls@npm:^3.0.2": - version: 3.1.0 - resolution: "coveralls@npm:3.1.0" - dependencies: - js-yaml: "npm:^3.13.1" - lcov-parse: "npm:^1.0.0" - log-driver: "npm:^1.2.7" - minimist: "npm:^1.2.5" - request: "npm:^2.88.2" - bin: - coveralls: ./bin/coveralls.js - checksum: 10c0/33c35c72909e95feb55202165316124d153555863306a27de0003454f7baf1c788f9d08a547096a201992d1d96efb4a9025c4082b584054b016f1a56b267a398 - languageName: node - linkType: hard - "cross-fetch@npm:3.1.5, cross-fetch@npm:^3.0.4": version: 3.1.5 resolution: "cross-fetch@npm:3.1.5" @@ -5200,7 +4252,7 @@ __metadata: languageName: node linkType: hard -"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.3": +"cross-spawn@npm:^7.0.0": version: 7.0.6 resolution: "cross-spawn@npm:7.0.6" dependencies: @@ -5220,33 +4272,6 @@ __metadata: languageName: node linkType: hard -"css-loader@npm:^6.5.1": - version: 6.7.1 - resolution: "css-loader@npm:6.7.1" - dependencies: - icss-utils: "npm:^5.1.0" - postcss: "npm:^8.4.7" - postcss-modules-extract-imports: "npm:^3.0.0" - postcss-modules-local-by-default: "npm:^4.0.0" - postcss-modules-scope: "npm:^3.0.0" - postcss-modules-values: "npm:^4.0.0" - postcss-value-parser: "npm:^4.2.0" - semver: "npm:^7.3.5" - peerDependencies: - webpack: ^5.0.0 - checksum: 10c0/c9e900e2a6012a988ab36cf87598fa1e74cd570ab25dbcc8a5d7f10a91a0f9549ff3656b9bbb2bf26b9f5a39f76b9b4b148513c4085c23b73c9c1d5cc2f7de12 - languageName: node - linkType: hard - -"cssesc@npm:^3.0.0": - version: 3.0.0 - resolution: "cssesc@npm:3.0.0" - bin: - cssesc: bin/cssesc - checksum: 10c0/6bcfd898662671be15ae7827120472c5667afb3d7429f1f917737f3bf84c4176003228131b643ae74543f17a394446247df090c597bb9a728cce298606ed0aa7 - languageName: node - linkType: hard - "cssstyle@npm:^4.2.1": version: 4.3.1 resolution: "cssstyle@npm:4.3.1" @@ -5449,15 +4474,6 @@ __metadata: languageName: node linkType: hard -"debug@npm:2.6.9": - version: 2.6.9 - resolution: "debug@npm:2.6.9" - dependencies: - ms: "npm:2.0.0" - checksum: 10c0/121908fb839f7801180b69a7e218a40b5a0b718813b886b7d6bdb82001b931c938e2941d1e4450f33a1b1df1da653f5f7a0440c197f29fbf8a6e9d45ff6ef589 - languageName: node - linkType: hard - "debug@npm:4, debug@npm:4.3.4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.4": version: 4.3.4 resolution: "debug@npm:4.3.4" @@ -5551,23 +4567,6 @@ __metadata: languageName: node linkType: hard -"default-browser-id@npm:^5.0.0": - version: 5.0.0 - resolution: "default-browser-id@npm:5.0.0" - checksum: 10c0/957fb886502594c8e645e812dfe93dba30ed82e8460d20ce39c53c5b0f3e2afb6ceaec2249083b90bdfbb4cb0f34e1f73fde3d68cac00becdbcfd894156b5ead - languageName: node - linkType: hard - -"default-browser@npm:^5.2.1": - version: 5.2.1 - resolution: "default-browser@npm:5.2.1" - dependencies: - bundle-name: "npm:^4.1.0" - default-browser-id: "npm:^5.0.0" - checksum: 10c0/73f17dc3c58026c55bb5538749597db31f9561c0193cd98604144b704a981c95a466f8ecc3c2db63d8bfd04fb0d426904834cfc91ae510c6aeb97e13c5167c4d - languageName: node - linkType: hard - "defaults@npm:^1.0.3": version: 1.0.3 resolution: "defaults@npm:1.0.3" @@ -5577,24 +4576,6 @@ __metadata: languageName: node linkType: hard -"define-data-property@npm:^1.1.4": - version: 1.1.4 - resolution: "define-data-property@npm:1.1.4" - dependencies: - es-define-property: "npm:^1.0.0" - es-errors: "npm:^1.3.0" - gopd: "npm:^1.0.1" - checksum: 10c0/dea0606d1483eb9db8d930d4eac62ca0fa16738b0b3e07046cddfacf7d8c868bbe13fa0cb263eb91c7d0d527960dc3f2f2471a69ed7816210307f6744fe62e37 - languageName: node - linkType: hard - -"define-lazy-prop@npm:^3.0.0": - version: 3.0.0 - resolution: "define-lazy-prop@npm:3.0.0" - checksum: 10c0/5ab0b2bf3fa58b3a443140bbd4cd3db1f91b985cc8a246d330b9ac3fc0b6a325a6d82bddc0b055123d745b3f9931afeea74a5ec545439a1630b9c8512b0eeb49 - languageName: node - linkType: hard - "define-properties@npm:^1.1.3": version: 1.1.3 resolution: "define-properties@npm:1.1.3" @@ -5611,20 +4592,6 @@ __metadata: languageName: node linkType: hard -"depd@npm:2.0.0": - version: 2.0.0 - resolution: "depd@npm:2.0.0" - checksum: 10c0/58bd06ec20e19529b06f7ad07ddab60e504d9e0faca4bd23079fac2d279c3594334d736508dc350e06e510aba5e22e4594483b3a6562ce7c17dd797f4cc4ad2c - languageName: node - linkType: hard - -"depd@npm:~1.1.2": - version: 1.1.2 - resolution: "depd@npm:1.1.2" - checksum: 10c0/acb24aaf936ef9a227b6be6d495f0d2eb20108a9a6ad40585c5bda1a897031512fef6484e4fdbb80bd249fdaa82841fa1039f416ece03188e677ba11bcfda249 - languageName: node - linkType: hard - "dependency-cruiser@npm:^16.10.0": version: 16.10.0 resolution: "dependency-cruiser@npm:16.10.0" @@ -5669,29 +4636,6 @@ __metadata: languageName: node linkType: hard -"destroy@npm:1.2.0": - version: 1.2.0 - resolution: "destroy@npm:1.2.0" - checksum: 10c0/bd7633942f57418f5a3b80d5cb53898127bcf53e24cdf5d5f4396be471417671f0fee48a4ebe9a1e9defbde2a31280011af58a57e090ff822f589b443ed4e643 - languageName: node - linkType: hard - -"detect-libc@npm:^1.0.3": - version: 1.0.3 - resolution: "detect-libc@npm:1.0.3" - bin: - detect-libc: ./bin/detect-libc.js - checksum: 10c0/4da0deae9f69e13bc37a0902d78bf7169480004b1fed3c19722d56cff578d16f0e11633b7fbf5fb6249181236c72e90024cbd68f0b9558ae06e281f47326d50d - languageName: node - linkType: hard - -"detect-node@npm:^2.0.4": - version: 2.1.0 - resolution: "detect-node@npm:2.1.0" - checksum: 10c0/f039f601790f2e9d4654e499913259a798b1f5246ae24f86ab5e8bd4aaf3bce50484234c494f11fb00aecb0c6e2733aa7b1cf3f530865640b65fbbd65b2c4e09 - languageName: node - linkType: hard - "devtools-protocol@npm:0.0.1107588": version: 0.0.1107588 resolution: "devtools-protocol@npm:0.0.1107588" @@ -5763,15 +4707,6 @@ __metadata: languageName: node linkType: hard -"dns-packet@npm:^5.2.2": - version: 5.6.1 - resolution: "dns-packet@npm:5.6.1" - dependencies: - "@leichtgewicht/ip-codec": "npm:^2.0.1" - checksum: 10c0/8948d3d03063fb68e04a1e386875f8c3bcc398fc375f535f2b438fad8f41bf1afa6f5e70893ba44f4ae884c089247e0a31045722fa6ff0f01d228da103f1811d - languageName: node - linkType: hard - "doctrine-temporary-fork@npm:2.1.0": version: 2.1.0 resolution: "doctrine-temporary-fork@npm:2.1.0" @@ -5899,13 +4834,6 @@ __metadata: languageName: node linkType: hard -"ee-first@npm:1.1.1": - version: 1.1.1 - resolution: "ee-first@npm:1.1.1" - checksum: 10c0/b5bb125ee93161bc16bfe6e56c6b04de5ad2aa44234d8f644813cc95d861a6910903132b05093706de2b706599367c4130eb6d170f6b46895686b95f87d017b7 - languageName: node - linkType: hard - "electron-to-chromium@npm:^1.4.477": version: 1.4.479 resolution: "electron-to-chromium@npm:1.4.479" @@ -5913,13 +4841,6 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.5.73": - version: 1.5.119 - resolution: "electron-to-chromium@npm:1.5.119" - checksum: 10c0/f4ca0eb3af21d16d2c1fd480c5a43428ce4423ca887338d69bd3eadae818b6d6e799c62b1baac1bc4f76e4226f5fb15a6b0dc8965f601ac053e86508d3e8e41c - languageName: node - linkType: hard - "emoji-regex@npm:^8.0.0": version: 8.0.0 resolution: "emoji-regex@npm:8.0.0" @@ -5941,27 +4862,6 @@ __metadata: languageName: node linkType: hard -"emojis-list@npm:^3.0.0": - version: 3.0.0 - resolution: "emojis-list@npm:3.0.0" - checksum: 10c0/7dc4394b7b910444910ad64b812392159a21e1a7ecc637c775a440227dcb4f80eff7fe61f4453a7d7603fa23d23d30cc93fe9e4b5ed985b88d6441cd4a35117b - languageName: node - linkType: hard - -"encodeurl@npm:~1.0.2": - version: 1.0.2 - resolution: "encodeurl@npm:1.0.2" - checksum: 10c0/f6c2387379a9e7c1156c1c3d4f9cb7bb11cf16dd4c1682e1f6746512564b053df5781029b6061296832b59fb22f459dbe250386d217c2f6e203601abb2ee0bec - languageName: node - linkType: hard - -"encodeurl@npm:~2.0.0": - version: 2.0.0 - resolution: "encodeurl@npm:2.0.0" - checksum: 10c0/5d317306acb13e6590e28e27924c754163946a2480de11865c991a3a7eed4315cd3fba378b543ca145829569eefe9b899f3d84bb09870f675ae60bc924b01ceb - languageName: node - linkType: hard - "encoding@npm:^0.1.13": version: 0.1.13 resolution: "encoding@npm:0.1.13" @@ -5980,17 +4880,7 @@ __metadata: languageName: node linkType: hard -"enhanced-resolve@npm:^5.0.0": - version: 5.10.0 - resolution: "enhanced-resolve@npm:5.10.0" - dependencies: - graceful-fs: "npm:^4.2.4" - tapable: "npm:^2.2.0" - checksum: 10c0/697c066552dadde9ea8ec7068677711dd5d6c49434b5ff96b2de2068a65060ffca32629abb899a86cca5fcb6b067d88119d1a69c7c2082e3a09c1165f760ad87 - languageName: node - linkType: hard - -"enhanced-resolve@npm:^5.17.1, enhanced-resolve@npm:^5.18.1, enhanced-resolve@npm:^5.7.0": +"enhanced-resolve@npm:^5.18.1, enhanced-resolve@npm:^5.7.0": version: 5.18.1 resolution: "enhanced-resolve@npm:5.18.1" dependencies: @@ -6028,15 +4918,6 @@ __metadata: languageName: node linkType: hard -"envinfo@npm:^7.7.3": - version: 7.8.1 - resolution: "envinfo@npm:7.8.1" - bin: - envinfo: dist/cli.js - checksum: 10c0/01efe7fcf55d4b84a146bc638ef89a89a70b610957db64636ac7cc4247d627eeb1c808ed79d3cfbe3d4fed5e8ba3d61db79c1ca1a3fea9f38639561eefd68733 - languageName: node - linkType: hard - "err-code@npm:^2.0.2": version: 2.0.3 resolution: "err-code@npm:2.0.3" @@ -6073,23 +4954,7 @@ __metadata: languageName: node linkType: hard -"es-define-property@npm:^1.0.0": - version: 1.0.0 - resolution: "es-define-property@npm:1.0.0" - dependencies: - get-intrinsic: "npm:^1.2.4" - checksum: 10c0/6bf3191feb7ea2ebda48b577f69bdfac7a2b3c9bcf97307f55fd6ef1bbca0b49f0c219a935aca506c993d8c5d8bddd937766cb760cd5e5a1071351f2df9f9aa4 - languageName: node - linkType: hard - -"es-errors@npm:^1.3.0": - version: 1.3.0 - resolution: "es-errors@npm:1.3.0" - checksum: 10c0/0a61325670072f98d8ae3b914edab3559b6caa980f08054a3b872052640d91da01d38df55df797fcc916389d77fc92b8d5906cf028f4db46d7e3003abecbca85 - languageName: node - linkType: hard - -"es-module-lexer@npm:^1.2.1, es-module-lexer@npm:^1.6.0": +"es-module-lexer@npm:^1.6.0": version: 1.6.0 resolution: "es-module-lexer@npm:1.6.0" checksum: 10c0/667309454411c0b95c476025929881e71400d74a746ffa1ff4cb450bd87f8e33e8eef7854d68e401895039ac0bac64e7809acbebb6253e055dd49ea9e3ea9212 @@ -6110,20 +4975,6 @@ __metadata: languageName: node linkType: hard -"esbuild-loader@npm:^4.1.0": - version: 4.1.0 - resolution: "esbuild-loader@npm:4.1.0" - dependencies: - esbuild: "npm:^0.20.0" - get-tsconfig: "npm:^4.7.0" - loader-utils: "npm:^2.0.4" - webpack-sources: "npm:^1.4.3" - peerDependencies: - webpack: ^4.40.0 || ^5.0.0 - checksum: 10c0/6752f48a88c85524ef316b5c7251e44f206da7aac4c63a02e8b4e8ff915d7215a7713710d41575dc749d0ac56cb0becf3f5b2cf543df875f4027b6009d73d7bc - languageName: node - linkType: hard - "esbuild-plugin-copy@npm:^2.1.1": version: 2.1.1 resolution: "esbuild-plugin-copy@npm:2.1.1" @@ -6162,115 +5013,35 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:^0.20.0": - version: 0.20.2 - resolution: "esbuild@npm:0.20.2" - dependencies: - "@esbuild/aix-ppc64": "npm:0.20.2" - "@esbuild/android-arm": "npm:0.20.2" - "@esbuild/android-arm64": "npm:0.20.2" - "@esbuild/android-x64": "npm:0.20.2" - "@esbuild/darwin-arm64": "npm:0.20.2" - "@esbuild/darwin-x64": "npm:0.20.2" - "@esbuild/freebsd-arm64": "npm:0.20.2" - "@esbuild/freebsd-x64": "npm:0.20.2" - "@esbuild/linux-arm": "npm:0.20.2" - "@esbuild/linux-arm64": "npm:0.20.2" - "@esbuild/linux-ia32": "npm:0.20.2" - "@esbuild/linux-loong64": "npm:0.20.2" - "@esbuild/linux-mips64el": "npm:0.20.2" - "@esbuild/linux-ppc64": "npm:0.20.2" - "@esbuild/linux-riscv64": "npm:0.20.2" - "@esbuild/linux-s390x": "npm:0.20.2" - "@esbuild/linux-x64": "npm:0.20.2" - "@esbuild/netbsd-x64": "npm:0.20.2" - "@esbuild/openbsd-x64": "npm:0.20.2" - "@esbuild/sunos-x64": "npm:0.20.2" - "@esbuild/win32-arm64": "npm:0.20.2" - "@esbuild/win32-ia32": "npm:0.20.2" - "@esbuild/win32-x64": "npm:0.20.2" - dependenciesMeta: - "@esbuild/aix-ppc64": - optional: true - "@esbuild/android-arm": - optional: true - "@esbuild/android-arm64": - optional: true - "@esbuild/android-x64": - optional: true - "@esbuild/darwin-arm64": - optional: true - "@esbuild/darwin-x64": - optional: true - "@esbuild/freebsd-arm64": - optional: true - "@esbuild/freebsd-x64": - optional: true - "@esbuild/linux-arm": - optional: true - "@esbuild/linux-arm64": - optional: true - "@esbuild/linux-ia32": - optional: true - "@esbuild/linux-loong64": - optional: true - "@esbuild/linux-mips64el": - optional: true - "@esbuild/linux-ppc64": - optional: true - "@esbuild/linux-riscv64": - optional: true - "@esbuild/linux-s390x": - optional: true - "@esbuild/linux-x64": - optional: true - "@esbuild/netbsd-x64": - optional: true - "@esbuild/openbsd-x64": - optional: true - "@esbuild/sunos-x64": - optional: true - "@esbuild/win32-arm64": - optional: true - "@esbuild/win32-ia32": - optional: true - "@esbuild/win32-x64": - optional: true - bin: - esbuild: bin/esbuild - checksum: 10c0/66398f9fb2c65e456a3e649747b39af8a001e47963b25e86d9c09d2a48d61aa641b27da0ce5cad63df95ad246105e1d83e7fee0e1e22a0663def73b1c5101112 - languageName: node - linkType: hard - -"esbuild@npm:^0.25": - version: 0.25.1 - resolution: "esbuild@npm:0.25.1" - dependencies: - "@esbuild/aix-ppc64": "npm:0.25.1" - "@esbuild/android-arm": "npm:0.25.1" - "@esbuild/android-arm64": "npm:0.25.1" - "@esbuild/android-x64": "npm:0.25.1" - "@esbuild/darwin-arm64": "npm:0.25.1" - "@esbuild/darwin-x64": "npm:0.25.1" - "@esbuild/freebsd-arm64": "npm:0.25.1" - "@esbuild/freebsd-x64": "npm:0.25.1" - "@esbuild/linux-arm": "npm:0.25.1" - "@esbuild/linux-arm64": "npm:0.25.1" - "@esbuild/linux-ia32": "npm:0.25.1" - "@esbuild/linux-loong64": "npm:0.25.1" - "@esbuild/linux-mips64el": "npm:0.25.1" - "@esbuild/linux-ppc64": "npm:0.25.1" - "@esbuild/linux-riscv64": "npm:0.25.1" - "@esbuild/linux-s390x": "npm:0.25.1" - "@esbuild/linux-x64": "npm:0.25.1" - "@esbuild/netbsd-arm64": "npm:0.25.1" - "@esbuild/netbsd-x64": "npm:0.25.1" - "@esbuild/openbsd-arm64": "npm:0.25.1" - "@esbuild/openbsd-x64": "npm:0.25.1" - "@esbuild/sunos-x64": "npm:0.25.1" - "@esbuild/win32-arm64": "npm:0.25.1" - "@esbuild/win32-ia32": "npm:0.25.1" - "@esbuild/win32-x64": "npm:0.25.1" +"esbuild@npm:^0.25.0": + version: 0.25.2 + resolution: "esbuild@npm:0.25.2" + dependencies: + "@esbuild/aix-ppc64": "npm:0.25.2" + "@esbuild/android-arm": "npm:0.25.2" + "@esbuild/android-arm64": "npm:0.25.2" + "@esbuild/android-x64": "npm:0.25.2" + "@esbuild/darwin-arm64": "npm:0.25.2" + "@esbuild/darwin-x64": "npm:0.25.2" + "@esbuild/freebsd-arm64": "npm:0.25.2" + "@esbuild/freebsd-x64": "npm:0.25.2" + "@esbuild/linux-arm": "npm:0.25.2" + "@esbuild/linux-arm64": "npm:0.25.2" + "@esbuild/linux-ia32": "npm:0.25.2" + "@esbuild/linux-loong64": "npm:0.25.2" + "@esbuild/linux-mips64el": "npm:0.25.2" + "@esbuild/linux-ppc64": "npm:0.25.2" + "@esbuild/linux-riscv64": "npm:0.25.2" + "@esbuild/linux-s390x": "npm:0.25.2" + "@esbuild/linux-x64": "npm:0.25.2" + "@esbuild/netbsd-arm64": "npm:0.25.2" + "@esbuild/netbsd-x64": "npm:0.25.2" + "@esbuild/openbsd-arm64": "npm:0.25.2" + "@esbuild/openbsd-x64": "npm:0.25.2" + "@esbuild/sunos-x64": "npm:0.25.2" + "@esbuild/win32-arm64": "npm:0.25.2" + "@esbuild/win32-ia32": "npm:0.25.2" + "@esbuild/win32-x64": "npm:0.25.2" dependenciesMeta: "@esbuild/aix-ppc64": optional: true @@ -6313,50 +5084,51 @@ __metadata: "@esbuild/openbsd-arm64": optional: true "@esbuild/openbsd-x64": - optional: true - "@esbuild/sunos-x64": - optional: true - "@esbuild/win32-arm64": - optional: true - "@esbuild/win32-ia32": - optional: true - "@esbuild/win32-x64": - optional: true - bin: - esbuild: bin/esbuild - checksum: 10c0/80fca30dd0f21aec23fdfab34f0a8d5f55df5097dd7f475f2ab561d45662c32ee306f5649071cd1a0ba0614b164c48ca3dc3ee1551a4daf204b8af90e4d893f5 - languageName: node - linkType: hard - -"esbuild@npm:^0.25.0": - version: 0.25.2 - resolution: "esbuild@npm:0.25.2" - dependencies: - "@esbuild/aix-ppc64": "npm:0.25.2" - "@esbuild/android-arm": "npm:0.25.2" - "@esbuild/android-arm64": "npm:0.25.2" - "@esbuild/android-x64": "npm:0.25.2" - "@esbuild/darwin-arm64": "npm:0.25.2" - "@esbuild/darwin-x64": "npm:0.25.2" - "@esbuild/freebsd-arm64": "npm:0.25.2" - "@esbuild/freebsd-x64": "npm:0.25.2" - "@esbuild/linux-arm": "npm:0.25.2" - "@esbuild/linux-arm64": "npm:0.25.2" - "@esbuild/linux-ia32": "npm:0.25.2" - "@esbuild/linux-loong64": "npm:0.25.2" - "@esbuild/linux-mips64el": "npm:0.25.2" - "@esbuild/linux-ppc64": "npm:0.25.2" - "@esbuild/linux-riscv64": "npm:0.25.2" - "@esbuild/linux-s390x": "npm:0.25.2" - "@esbuild/linux-x64": "npm:0.25.2" - "@esbuild/netbsd-arm64": "npm:0.25.2" - "@esbuild/netbsd-x64": "npm:0.25.2" - "@esbuild/openbsd-arm64": "npm:0.25.2" - "@esbuild/openbsd-x64": "npm:0.25.2" - "@esbuild/sunos-x64": "npm:0.25.2" - "@esbuild/win32-arm64": "npm:0.25.2" - "@esbuild/win32-ia32": "npm:0.25.2" - "@esbuild/win32-x64": "npm:0.25.2" + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 10c0/87ce0b78699c4d192b8cf7e9b688e9a0da10e6f58ff85a368bf3044ca1fa95626c98b769b5459352282e0065585b6f994a5e6699af5cccf9d31178960e2b58fd + languageName: node + linkType: hard + +"esbuild@npm:^0.25.8": + version: 0.25.8 + resolution: "esbuild@npm:0.25.8" + dependencies: + "@esbuild/aix-ppc64": "npm:0.25.8" + "@esbuild/android-arm": "npm:0.25.8" + "@esbuild/android-arm64": "npm:0.25.8" + "@esbuild/android-x64": "npm:0.25.8" + "@esbuild/darwin-arm64": "npm:0.25.8" + "@esbuild/darwin-x64": "npm:0.25.8" + "@esbuild/freebsd-arm64": "npm:0.25.8" + "@esbuild/freebsd-x64": "npm:0.25.8" + "@esbuild/linux-arm": "npm:0.25.8" + "@esbuild/linux-arm64": "npm:0.25.8" + "@esbuild/linux-ia32": "npm:0.25.8" + "@esbuild/linux-loong64": "npm:0.25.8" + "@esbuild/linux-mips64el": "npm:0.25.8" + "@esbuild/linux-ppc64": "npm:0.25.8" + "@esbuild/linux-riscv64": "npm:0.25.8" + "@esbuild/linux-s390x": "npm:0.25.8" + "@esbuild/linux-x64": "npm:0.25.8" + "@esbuild/netbsd-arm64": "npm:0.25.8" + "@esbuild/netbsd-x64": "npm:0.25.8" + "@esbuild/openbsd-arm64": "npm:0.25.8" + "@esbuild/openbsd-x64": "npm:0.25.8" + "@esbuild/openharmony-arm64": "npm:0.25.8" + "@esbuild/sunos-x64": "npm:0.25.8" + "@esbuild/win32-arm64": "npm:0.25.8" + "@esbuild/win32-ia32": "npm:0.25.8" + "@esbuild/win32-x64": "npm:0.25.8" dependenciesMeta: "@esbuild/aix-ppc64": optional: true @@ -6400,6 +5172,8 @@ __metadata: optional: true "@esbuild/openbsd-x64": optional: true + "@esbuild/openharmony-arm64": + optional: true "@esbuild/sunos-x64": optional: true "@esbuild/win32-arm64": @@ -6410,7 +5184,7 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: 10c0/87ce0b78699c4d192b8cf7e9b688e9a0da10e6f58ff85a368bf3044ca1fa95626c98b769b5459352282e0065585b6f994a5e6699af5cccf9d31178960e2b58fd + checksum: 10c0/43747a25e120d5dd9ce75c82f57306580d715647c8db4f4a0a84e73b04cf16c27572d3937d3cfb95d5ac3266a4d1bbd3913e3d76ae719693516289fc86f8a5fd languageName: node linkType: hard @@ -6421,13 +5195,6 @@ __metadata: languageName: node linkType: hard -"escalade@npm:^3.2.0": - version: 3.2.0 - resolution: "escalade@npm:3.2.0" - checksum: 10c0/ced4dd3a78e15897ed3be74e635110bbf3b08877b0a41be50dcb325ee0e0b5f65fc2d50e9845194d7c4633f327e2e1c6cce00a71b617c5673df0374201d67f65 - languageName: node - linkType: hard - "escape-carriage@npm:^1.3.0": version: 1.3.0 resolution: "escape-carriage@npm:1.3.0" @@ -6435,13 +5202,6 @@ __metadata: languageName: node linkType: hard -"escape-html@npm:~1.0.3": - version: 1.0.3 - resolution: "escape-html@npm:1.0.3" - checksum: 10c0/524c739d776b36c3d29fa08a22e03e8824e3b2fd57500e5e44ecf3cc4707c34c60f9ca0781c0e33d191f2991161504c295e98f68c78fe7baa6e57081ec6ac0a3 - languageName: node - linkType: hard - "escape-string-regexp@npm:^1.0.5": version: 1.0.5 resolution: "escape-string-regexp@npm:1.0.5" @@ -6498,16 +5258,6 @@ __metadata: languageName: node linkType: hard -"eslint-scope@npm:5.1.1": - version: 5.1.1 - resolution: "eslint-scope@npm:5.1.1" - dependencies: - esrecurse: "npm:^4.3.0" - estraverse: "npm:^4.1.1" - checksum: 10c0/d30ef9dc1c1cbdece34db1539a4933fe3f9b14e1ffb27ecc85987902ee663ad7c9473bbd49a9a03195a373741e62e2f807c4938992e019b511993d163450e70a - languageName: node - linkType: hard - "espree@npm:^3.5.4": version: 3.5.4 resolution: "espree@npm:3.5.4" @@ -6528,16 +5278,6 @@ __metadata: languageName: node linkType: hard -"esprima@npm:^4.0.0": - 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 - "esprima@npm:~1.0.2, esprima@npm:~1.0.3": version: 1.0.4 resolution: "esprima@npm:1.0.4" @@ -6558,29 +5298,6 @@ __metadata: languageName: node linkType: hard -"esrecurse@npm:^4.3.0": - version: 4.3.0 - resolution: "esrecurse@npm:4.3.0" - dependencies: - estraverse: "npm:^5.2.0" - checksum: 10c0/81a37116d1408ded88ada45b9fb16dbd26fba3aadc369ce50fcaf82a0bac12772ebd7b24cd7b91fc66786bf2c1ac7b5f196bc990a473efff972f5cb338877cf5 - languageName: node - linkType: hard - -"estraverse@npm:^4.1.1": - version: 4.3.0 - resolution: "estraverse@npm:4.3.0" - checksum: 10c0/9cb46463ef8a8a4905d3708a652d60122a0c20bb58dec7e0e12ab0e7235123d74214fc0141d743c381813e1b992767e2708194f6f6e0f9fd00c1b4e0887b8b6d - languageName: node - linkType: hard - -"estraverse@npm:^5.2.0": - version: 5.3.0 - resolution: "estraverse@npm:5.3.0" - checksum: 10c0/1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107 - languageName: node - linkType: hard - "estraverse@npm:~1.3.0": version: 1.3.2 resolution: "estraverse@npm:1.3.2" @@ -6625,13 +5342,6 @@ __metadata: languageName: node linkType: hard -"etag@npm:~1.8.1": - version: 1.8.1 - resolution: "etag@npm:1.8.1" - checksum: 10c0/12be11ef62fb9817314d790089a0a49fae4e1b50594135dcb8076312b7d7e470884b5100d249b28c18581b7fd52f8b485689ffae22a11ed9ec17377a33a08f84 - languageName: node - linkType: hard - "event-target-shim@npm:^5.0.0": version: 5.0.1 resolution: "event-target-shim@npm:5.0.1" @@ -6639,20 +5349,6 @@ __metadata: languageName: node linkType: hard -"eventemitter3@npm:^4.0.0": - version: 4.0.7 - resolution: "eventemitter3@npm:4.0.7" - checksum: 10c0/5f6d97cbcbac47be798e6355e3a7639a84ee1f7d9b199a07017f1d2f1e2fe236004d14fa5dfaeba661f94ea57805385e326236a6debbc7145c8877fbc0297c6b - languageName: node - linkType: hard - -"events@npm:^3.2.0": - version: 3.3.0 - resolution: "events@npm:3.3.0" - checksum: 10c0/d6b6f2adbccbcda74ddbab52ed07db727ef52e31a61ed26db9feb7dc62af7fc8e060defa65e5f8af9449b86b52cc1a1f6a79f2eafcf4e62add2b7a1fa4a432f6 - languageName: node - linkType: hard - "exenv@npm:^1.2.0, exenv@npm:^1.2.2": version: 1.2.2 resolution: "exenv@npm:1.2.2" @@ -6681,45 +5377,6 @@ __metadata: languageName: node linkType: hard -"express@npm:^4.21.2": - version: 4.21.2 - resolution: "express@npm:4.21.2" - dependencies: - accepts: "npm:~1.3.8" - array-flatten: "npm:1.1.1" - body-parser: "npm:1.20.3" - content-disposition: "npm:0.5.4" - content-type: "npm:~1.0.4" - cookie: "npm:0.7.1" - cookie-signature: "npm:1.0.6" - debug: "npm:2.6.9" - depd: "npm:2.0.0" - encodeurl: "npm:~2.0.0" - escape-html: "npm:~1.0.3" - etag: "npm:~1.8.1" - finalhandler: "npm:1.3.1" - fresh: "npm:0.5.2" - http-errors: "npm:2.0.0" - merge-descriptors: "npm:1.0.3" - methods: "npm:~1.1.2" - on-finished: "npm:2.4.1" - parseurl: "npm:~1.3.3" - path-to-regexp: "npm:0.1.12" - proxy-addr: "npm:~2.0.7" - qs: "npm:6.13.0" - range-parser: "npm:~1.2.1" - safe-buffer: "npm:5.2.1" - send: "npm:0.19.0" - serve-static: "npm:1.16.2" - setprototypeof: "npm:1.2.0" - statuses: "npm:2.0.1" - type-is: "npm:~1.6.18" - utils-merge: "npm:1.0.1" - vary: "npm:~1.1.2" - checksum: 10c0/38168fd0a32756600b56e6214afecf4fc79ec28eca7f7a91c2ab8d50df4f47562ca3f9dee412da7f5cea6b1a1544b33b40f9f8586dbacfbdada0fe90dbb10a1f - languageName: node - linkType: hard - "extend@npm:^3.0.0, extend@npm:~3.0.2": version: 3.0.2 resolution: "extend@npm:3.0.2" @@ -6777,7 +5434,7 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:3, fast-glob@npm:^3.3.2": +"fast-glob@npm:3": version: 3.3.2 resolution: "fast-glob@npm:3.3.2" dependencies: @@ -6817,13 +5474,6 @@ __metadata: languageName: node linkType: hard -"fastest-levenshtein@npm:^1.0.12": - version: 1.0.12 - resolution: "fastest-levenshtein@npm:1.0.12" - checksum: 10c0/1755f98942952d5acd773eef03f9f9f046d95c447b10d1ef672df65a40f9a4d3f176ef60ae93e465f1c2bae127b7eb047d4df7e0dce492805bda76aff325dc88 - languageName: node - linkType: hard - "fastq@npm:^1.6.0": version: 1.13.0 resolution: "fastq@npm:1.13.0" @@ -6833,15 +5483,6 @@ __metadata: languageName: node linkType: hard -"faye-websocket@npm:^0.11.3": - version: 0.11.4 - resolution: "faye-websocket@npm:0.11.4" - dependencies: - websocket-driver: "npm:>=0.5.1" - checksum: 10c0/c6052a0bb322778ce9f89af92890f6f4ce00d5ec92418a35e5f4c6864a4fe736fec0bcebd47eac7c0f0e979b01530746b1c85c83cb04bae789271abf19737420 - languageName: node - linkType: hard - "fd-slicer@npm:~1.1.0": version: 1.1.0 resolution: "fd-slicer@npm:1.1.0" @@ -6909,31 +5550,6 @@ __metadata: languageName: node linkType: hard -"finalhandler@npm:1.3.1": - version: 1.3.1 - resolution: "finalhandler@npm:1.3.1" - dependencies: - debug: "npm:2.6.9" - encodeurl: "npm:~2.0.0" - escape-html: "npm:~1.0.3" - on-finished: "npm:2.4.1" - parseurl: "npm:~1.3.3" - statuses: "npm:2.0.1" - unpipe: "npm:~1.0.0" - checksum: 10c0/d38035831865a49b5610206a3a9a9aae4e8523cbbcd01175d0480ffbf1278c47f11d89be3ca7f617ae6d94f29cf797546a4619cd84dd109009ef33f12f69019f - languageName: node - linkType: hard - -"find-up@npm:^4.0.0": - version: 4.1.0 - resolution: "find-up@npm:4.1.0" - dependencies: - locate-path: "npm:^5.0.0" - path-exists: "npm:^4.0.0" - checksum: 10c0/0406ee89ebeefa2d507feb07ec366bebd8a6167ae74aa4e34fb4c4abd06cf782a3ce26ae4194d70706f72182841733f00551c209fe575cb00bd92104056e78c1 - languageName: node - linkType: hard - "find-up@npm:^6.3.0": version: 6.3.0 resolution: "find-up@npm:6.3.0" @@ -6954,16 +5570,6 @@ __metadata: languageName: node linkType: hard -"follow-redirects@npm:^1.0.0": - version: 1.14.9 - resolution: "follow-redirects@npm:1.14.9" - peerDependenciesMeta: - debug: - optional: true - checksum: 10c0/08c465c17cbf3011ad16516609ee476abffa8fd1ff78c2082f1ff43614cb06586a0ccc8e99e5ebe13da06d064367cb269789e3ca0e93e2ad5b24fdc30b4294b6 - languageName: node - linkType: hard - "foreach@npm:^2.0.5": version: 2.0.5 resolution: "foreach@npm:2.0.5" @@ -7010,20 +5616,6 @@ __metadata: languageName: node linkType: hard -"forwarded@npm:0.2.0": - version: 0.2.0 - resolution: "forwarded@npm:0.2.0" - checksum: 10c0/9b67c3fac86acdbc9ae47ba1ddd5f2f81526fa4c8226863ede5600a3f7c7416ef451f6f1e240a3cc32d0fd79fcfe6beb08fd0da454f360032bde70bf80afbb33 - languageName: node - linkType: hard - -"fresh@npm:0.5.2": - version: 0.5.2 - resolution: "fresh@npm:0.5.2" - checksum: 10c0/c6d27f3ed86cc5b601404822f31c900dd165ba63fff8152a3ef714e2012e7535027063bc67ded4cb5b3a49fa596495d46cacd9f47d6328459cf570f08b7d9e5a - languageName: node - linkType: hard - "fs-constants@npm:^1.0.0": version: 1.0.0 resolution: "fs-constants@npm:1.0.0" @@ -7155,19 +5747,6 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.4": - version: 1.2.4 - resolution: "get-intrinsic@npm:1.2.4" - dependencies: - es-errors: "npm:^1.3.0" - function-bind: "npm:^1.1.2" - has-proto: "npm:^1.0.1" - has-symbols: "npm:^1.0.3" - hasown: "npm:^2.0.0" - checksum: 10c0/0a9b82c16696ed6da5e39b1267104475c47e3a9bdbe8b509dfe1710946e38a87be70d759f4bb3cda042d76a41ef47fe769660f3b7c0d1f68750299344ffb15b7 - languageName: node - linkType: hard - "get-stream@npm:^5.1.0": version: 5.2.0 resolution: "get-stream@npm:5.2.0" @@ -7177,15 +5756,6 @@ __metadata: languageName: node linkType: hard -"get-tsconfig@npm:^4.7.0": - version: 4.7.5 - resolution: "get-tsconfig@npm:4.7.5" - dependencies: - resolve-pkg-maps: "npm:^1.0.0" - checksum: 10c0/a917dff2ba9ee187c41945736bf9bbab65de31ce5bc1effd76267be483a7340915cff232199406379f26517d2d0a4edcdbcda8cca599c2480a0f2cf1e1de3efa - languageName: node - linkType: hard - "getpass@npm:^0.1.1": version: 0.1.7 resolution: "getpass@npm:0.1.7" @@ -7237,22 +5807,6 @@ __metadata: languageName: node linkType: hard -"glob-parent@npm:^6.0.1": - version: 6.0.2 - resolution: "glob-parent@npm:6.0.2" - dependencies: - is-glob: "npm:^4.0.3" - checksum: 10c0/317034d88654730230b3f43bb7ad4f7c90257a426e872ea0bf157473ac61c99bf5d205fad8f0185f989be8d2fa6d3c7dce1645d99d545b6ea9089c39f838e7f8 - languageName: node - linkType: hard - -"glob-to-regexp@npm:^0.4.1": - version: 0.4.1 - resolution: "glob-to-regexp@npm:0.4.1" - checksum: 10c0/0486925072d7a916f052842772b61c3e86247f0a80cc0deb9b5a3e8a1a9faad5b04fb6f58986a09f34d3e96cd2a22a24b7e9882fb1cf904c31e9a310de96c429 - languageName: node - linkType: hard - "glob@npm:^10.2.2, glob@npm:^10.3.10, glob@npm:^10.3.4, glob@npm:^10.4.1": version: 10.4.5 resolution: "glob@npm:10.4.5" @@ -7343,20 +5897,6 @@ __metadata: languageName: node linkType: hard -"globby@npm:^14.0.0": - version: 14.0.2 - resolution: "globby@npm:14.0.2" - dependencies: - "@sindresorhus/merge-streams": "npm:^2.1.0" - fast-glob: "npm:^3.3.2" - ignore: "npm:^5.2.4" - path-type: "npm:^5.0.0" - slash: "npm:^5.1.0" - unicorn-magic: "npm:^0.1.0" - checksum: 10c0/3f771cd683b8794db1e7ebc8b6b888d43496d93a82aad4e9d974620f578581210b6c5a6e75ea29573ed16a1345222fab6e9b877a8d1ed56eeb147e09f69c6f78 - languageName: node - linkType: hard - "globrex@npm:^0.1.2": version: 0.1.2 resolution: "globrex@npm:0.1.2" @@ -7364,16 +5904,7 @@ __metadata: languageName: node linkType: hard -"gopd@npm:^1.0.1": - version: 1.0.1 - resolution: "gopd@npm:1.0.1" - dependencies: - get-intrinsic: "npm:^1.1.3" - checksum: 10c0/505c05487f7944c552cee72087bf1567debb470d4355b1335f2c262d218ebbff805cd3715448fe29b4b380bae6912561d0467233e4165830efd28da241418c63 - languageName: node - linkType: hard - -"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.1.9, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6": +"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.1.9, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 @@ -7403,13 +5934,6 @@ __metadata: languageName: node linkType: hard -"handle-thing@npm:^2.0.0": - version: 2.0.1 - resolution: "handle-thing@npm:2.0.1" - checksum: 10c0/7ae34ba286a3434f1993ebd1cc9c9e6b6d8ea672182db28b1afc0a7119229552fa7031e3e5f3cd32a76430ece4e94b7da6f12af2eb39d6239a7693e4bd63a998 - languageName: node - linkType: hard - "har-schema@npm:^2.0.0": version: 2.0.0 resolution: "har-schema@npm:2.0.0" @@ -7441,23 +5965,7 @@ __metadata: languageName: node linkType: hard -"has-property-descriptors@npm:^1.0.2": - version: 1.0.2 - resolution: "has-property-descriptors@npm:1.0.2" - dependencies: - es-define-property: "npm:^1.0.0" - checksum: 10c0/253c1f59e80bb476cf0dde8ff5284505d90c3bdb762983c3514d36414290475fe3fd6f574929d84de2a8eec00d35cf07cb6776205ff32efd7c50719125f00236 - languageName: node - linkType: hard - -"has-proto@npm:^1.0.1": - version: 1.0.3 - resolution: "has-proto@npm:1.0.3" - checksum: 10c0/35a6989f81e9f8022c2f4027f8b48a552de714938765d019dbea6bb547bd49ce5010a3c7c32ec6ddac6e48fc546166a3583b128f5a7add8b058a6d8b4afec205 - languageName: node - linkType: hard - -"has-symbols@npm:^1.0.1, has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": +"has-symbols@npm:^1.0.1, has-symbols@npm:^1.0.2": version: 1.0.3 resolution: "has-symbols@npm:1.0.3" checksum: 10c0/e6922b4345a3f37069cdfe8600febbca791c94988c01af3394d86ca3360b4b93928bbf395859158f88099cb10b19d98e3bbab7c9ff2c1bd09cf665ee90afa2c3 @@ -7630,18 +6138,6 @@ __metadata: languageName: node linkType: hard -"hpack.js@npm:^2.1.6": - version: 2.1.6 - resolution: "hpack.js@npm:2.1.6" - dependencies: - inherits: "npm:^2.0.1" - obuf: "npm:^1.0.0" - readable-stream: "npm:^2.0.1" - wbuf: "npm:^1.1.0" - checksum: 10c0/55b9e824430bab82a19d079cb6e33042d7d0640325678c9917fcc020c61d8a08ca671b6c942c7f0aae9bb6e4b67ffb50734a72f9e21d66407c3138c1983b70f0 - languageName: node - linkType: hard - "html-encoding-sniffer@npm:^4.0.0": version: 4.0.0 resolution: "html-encoding-sniffer@npm:4.0.0" @@ -7682,45 +6178,6 @@ __metadata: languageName: node linkType: hard -"http-deceiver@npm:^1.2.7": - version: 1.2.7 - resolution: "http-deceiver@npm:1.2.7" - checksum: 10c0/8bb9b716f5fc55f54a451da7f49b9c695c3e45498a789634daec26b61e4add7c85613a4a9e53726c39d09de7a163891ecd6eb5809adb64500a840fd86fe81d03 - languageName: node - linkType: hard - -"http-errors@npm:2.0.0": - version: 2.0.0 - resolution: "http-errors@npm:2.0.0" - dependencies: - depd: "npm:2.0.0" - inherits: "npm:2.0.4" - setprototypeof: "npm:1.2.0" - statuses: "npm:2.0.1" - toidentifier: "npm:1.0.1" - checksum: 10c0/fc6f2715fe188d091274b5ffc8b3657bd85c63e969daa68ccb77afb05b071a4b62841acb7a21e417b5539014dff2ebf9550f0b14a9ff126f2734a7c1387f8e19 - languageName: node - linkType: hard - -"http-errors@npm:~1.6.2": - version: 1.6.3 - resolution: "http-errors@npm:1.6.3" - dependencies: - depd: "npm:~1.1.2" - inherits: "npm:2.0.3" - setprototypeof: "npm:1.1.0" - statuses: "npm:>= 1.4.0 < 2" - checksum: 10c0/17ec4046ee974477778bfdd525936c254b872054703ec2caa4d6f099566b8adade636ae6aeeacb39302c5cd6e28fb407ebd937f500f5010d0b6850750414ff78 - languageName: node - linkType: hard - -"http-parser-js@npm:>=0.5.1": - version: 0.5.6 - resolution: "http-parser-js@npm:0.5.6" - checksum: 10c0/2b449a5e7a4f6b28f6abdf8130d97b8fb3a50768fcdf3356c243878f2545685c6cdfb0c19be92b0348e4afca5a4d99c8482a50e0332e084291196bb221924f8a - languageName: node - linkType: hard - "http-proxy-agent@npm:^7.0.0": version: 7.0.0 resolution: "http-proxy-agent@npm:7.0.0" @@ -7741,35 +6198,6 @@ __metadata: languageName: node linkType: hard -"http-proxy-middleware@npm:^2.0.7": - version: 2.0.9 - resolution: "http-proxy-middleware@npm:2.0.9" - dependencies: - "@types/http-proxy": "npm:^1.17.8" - http-proxy: "npm:^1.18.1" - is-glob: "npm:^4.0.1" - is-plain-obj: "npm:^3.0.0" - micromatch: "npm:^4.0.2" - peerDependencies: - "@types/express": ^4.17.13 - peerDependenciesMeta: - "@types/express": - optional: true - checksum: 10c0/8e9032af625f7c9f2f0d318f6cdb14eb725cc16ffe7b4ccccea25cf591fa819bb7c3bb579e0b543e0ae9c73059b505a6d728290c757bff27bae526a6ed11c05e - languageName: node - linkType: hard - -"http-proxy@npm:^1.18.1": - version: 1.18.1 - resolution: "http-proxy@npm:1.18.1" - dependencies: - eventemitter3: "npm:^4.0.0" - follow-redirects: "npm:^1.0.0" - requires-port: "npm:^1.0.0" - checksum: 10c0/148dfa700a03fb421e383aaaf88ac1d94521dfc34072f6c59770528c65250983c2e4ec996f2f03aa9f3fe46cd1270a593126068319311e3e8d9e610a37533e94 - languageName: node - linkType: hard - "http-signature@npm:~1.2.0": version: 1.2.0 resolution: "http-signature@npm:1.2.0" @@ -7820,15 +6248,6 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:0.4.24, iconv-lite@npm:^0.4.4": - version: 0.4.24 - resolution: "iconv-lite@npm:0.4.24" - dependencies: - safer-buffer: "npm:>= 2.1.2 < 3" - checksum: 10c0/c6886a24cc00f2a059767440ec1bc00d334a89f250db8e0f7feb4961c8727118457e27c495ba94d082e51d3baca378726cd110aaf7ded8b9bbfd6a44760cf1d4 - languageName: node - linkType: hard - "iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2, iconv-lite@npm:^0.6.3": version: 0.6.3 resolution: "iconv-lite@npm:0.6.3" @@ -7838,12 +6257,12 @@ __metadata: languageName: node linkType: hard -"icss-utils@npm:^5.0.0, icss-utils@npm:^5.1.0": - version: 5.1.0 - resolution: "icss-utils@npm:5.1.0" - peerDependencies: - postcss: ^8.1.0 - checksum: 10c0/39c92936fabd23169c8611d2b5cc39e39d10b19b0d223352f20a7579f75b39d5f786114a6b8fc62bee8c5fed59ba9e0d38f7219a4db383e324fb3061664b043d +"iconv-lite@npm:^0.4.4": + version: 0.4.24 + resolution: "iconv-lite@npm:0.4.24" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3" + checksum: 10c0/c6886a24cc00f2a059767440ec1bc00d334a89f250db8e0f7feb4961c8727118457e27c495ba94d082e51d3baca378726cd110aaf7ded8b9bbfd6a44760cf1d4 languageName: node linkType: hard @@ -7854,7 +6273,7 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^5.2.0, ignore@npm:^5.2.4": +"ignore@npm:^5.2.0": version: 5.3.2 resolution: "ignore@npm:5.3.2" checksum: 10c0/f9f652c957983634ded1e7f02da3b559a0d4cc210fca3792cb67f1b153623c9c42efdc1c4121af171e295444459fc4a9201101fb041b1104a3c000bccb188337 @@ -7894,18 +6313,6 @@ __metadata: languageName: node linkType: hard -"import-local@npm:^3.0.2": - version: 3.1.0 - resolution: "import-local@npm:3.1.0" - dependencies: - pkg-dir: "npm:^4.2.0" - resolve-cwd: "npm:^3.0.0" - bin: - import-local-fixture: fixtures/cli.js - checksum: 10c0/c67ecea72f775fe8684ca3d057e54bdb2ae28c14bf261d2607c269c18ea0da7b730924c06262eca9aed4b8ab31e31d65bc60b50e7296c85908a56e2f7d41ecd2 - languageName: node - linkType: hard - "import-meta-resolve@npm:^3.0.0": version: 3.1.1 resolution: "import-meta-resolve@npm:3.1.1" @@ -7937,20 +6344,13 @@ __metadata: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.1, inherits@npm:~2.0.3": +"inherits@npm:2, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.1, inherits@npm:~2.0.3": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 languageName: node linkType: hard -"inherits@npm:2.0.3": - version: 2.0.3 - resolution: "inherits@npm:2.0.3" - checksum: 10c0/6e56402373149ea076a434072671f9982f5fad030c7662be0332122fe6c0fa490acb3cc1010d90b6eff8d640b1167d77674add52dfd1bb85d545cf29e80e73e7 - languageName: node - linkType: hard - "ini@npm:4.1.1": version: 4.1.1 resolution: "ini@npm:4.1.1" @@ -8010,20 +6410,6 @@ __metadata: languageName: node linkType: hard -"ipaddr.js@npm:1.9.1": - version: 1.9.1 - resolution: "ipaddr.js@npm:1.9.1" - checksum: 10c0/0486e775047971d3fdb5fb4f063829bac45af299ae0b82dcf3afa2145338e08290563a2a70f34b732d795ecc8311902e541a8530eeb30d75860a78ff4e94ce2a - languageName: node - linkType: hard - -"ipaddr.js@npm:^2.1.0": - version: 2.1.0 - resolution: "ipaddr.js@npm:2.1.0" - checksum: 10c0/9aa43ff99771e3d14ab3683df3909b3b033fe81337646bc63780b00ec9bc51d4a696a047c0b261c05867c0a25086ab03f0ce32ea444a6b39e10fac1315d53cab - languageName: node - linkType: hard - "is-absolute@npm:^1.0.0": version: 1.0.0 resolution: "is-absolute@npm:1.0.0" @@ -8106,15 +6492,6 @@ __metadata: languageName: node linkType: hard -"is-docker@npm:^3.0.0": - version: 3.0.0 - resolution: "is-docker@npm:3.0.0" - bin: - is-docker: cli.js - checksum: 10c0/d2c4f8e6d3e34df75a5defd44991b6068afad4835bb783b902fa12d13ebdb8f41b2a199dcb0b5ed2cb78bfee9e4c0bbdb69c2d9646f4106464674d3e697a5856 - languageName: node - linkType: hard - "is-extglob@npm:^2.1.1": version: 2.1.1 resolution: "is-extglob@npm:2.1.1" @@ -8136,7 +6513,7 @@ __metadata: languageName: node linkType: hard -"is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": +"is-glob@npm:^4.0.1, is-glob@npm:~4.0.1": version: 4.0.3 resolution: "is-glob@npm:4.0.3" dependencies: @@ -8145,17 +6522,6 @@ __metadata: languageName: node linkType: hard -"is-inside-container@npm:^1.0.0": - version: 1.0.0 - resolution: "is-inside-container@npm:1.0.0" - dependencies: - is-docker: "npm:^3.0.0" - bin: - is-inside-container: cli.js - checksum: 10c0/a8efb0e84f6197e6ff5c64c52890fa9acb49b7b74fed4da7c95383965da6f0fa592b4dbd5e38a79f87fc108196937acdbcd758fcefc9b140e479b39ce1fcd1cd - languageName: node - linkType: hard - "is-installed-globally@npm:^1.0.0": version: 1.0.0 resolution: "is-installed-globally@npm:1.0.0" @@ -8180,13 +6546,6 @@ __metadata: languageName: node linkType: hard -"is-network-error@npm:^1.0.0": - version: 1.0.1 - resolution: "is-network-error@npm:1.0.1" - checksum: 10c0/81d3d9c5f8588d114982e574e323028206e56e89b1bb5efd76f7e495a377ddfcd4f1e68579a7e65c15c911ccfe7be0025580198e20c77b18a36775580771b7f9 - languageName: node - linkType: hard - "is-number@npm:^7.0.0": version: 7.0.0 resolution: "is-number@npm:7.0.0" @@ -8208,13 +6567,6 @@ __metadata: languageName: node linkType: hard -"is-plain-obj@npm:^3.0.0": - version: 3.0.0 - resolution: "is-plain-obj@npm:3.0.0" - checksum: 10c0/8e6483bfb051d42ec9c704c0ede051a821c6b6f9a6c7a3e3b55aa855e00981b0580c8f3b1f5e2e62649b39179b1abfee35d6f8086d999bfaa32c1908d29b07bc - languageName: node - linkType: hard - "is-plain-obj@npm:^4.0.0": version: 4.1.0 resolution: "is-plain-obj@npm:4.1.0" @@ -8222,15 +6574,6 @@ __metadata: languageName: node linkType: hard -"is-plain-object@npm:^2.0.4": - version: 2.0.4 - resolution: "is-plain-object@npm:2.0.4" - dependencies: - isobject: "npm:^3.0.1" - checksum: 10c0/f050fdd5203d9c81e8c4df1b3ff461c4bc64e8b5ca383bcdde46131361d0a678e80bcf00b5257646f6c636197629644d53bd8e2375aea633de09a82d57e942f4 - languageName: node - linkType: hard - "is-potential-custom-element-name@npm:^1.0.1": version: 1.0.1 resolution: "is-potential-custom-element-name@npm:1.0.1" @@ -8303,15 +6646,6 @@ __metadata: languageName: node linkType: hard -"is-wsl@npm:^3.1.0": - version: 3.1.0 - resolution: "is-wsl@npm:3.1.0" - dependencies: - is-inside-container: "npm:^1.0.0" - checksum: 10c0/d3317c11995690a32c362100225e22ba793678fe8732660c6de511ae71a0ff05b06980cf21f98a6bf40d7be0e9e9506f859abe00a1118287d63e53d0a3d06947 - languageName: node - linkType: hard - "isarray@npm:0.0.1": version: 0.0.1 resolution: "isarray@npm:0.0.1" @@ -8347,13 +6681,6 @@ __metadata: languageName: node linkType: hard -"isobject@npm:^3.0.1": - version: 3.0.1 - resolution: "isobject@npm:3.0.1" - checksum: 10c0/03344f5064a82f099a0cd1a8a407f4c0d20b7b8485e8e816c39f249e9416b06c322e8dec5b842b6bb8a06de0af9cb48e7bc1b5352f0fadc2f0abac033db3d4db - languageName: node - linkType: hard - "isstream@npm:~0.1.2": version: 0.1.2 resolution: "isstream@npm:0.1.2" @@ -8427,17 +6754,6 @@ __metadata: languageName: node linkType: hard -"jest-worker@npm:^27.4.5": - version: 27.5.1 - resolution: "jest-worker@npm:27.5.1" - dependencies: - "@types/node": "npm:*" - merge-stream: "npm:^2.0.0" - supports-color: "npm:^8.0.0" - checksum: 10c0/8c4737ffd03887b3c6768e4cc3ca0269c0336c1e4b1b120943958ddb035ed2a0fc6acab6dc99631720a3720af4e708ff84fb45382ad1e83c27946adf3623969b - languageName: node - linkType: hard - "jimp@npm:0.2.27": version: 0.2.27 resolution: "jimp@npm:0.2.27" @@ -8503,18 +6819,6 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:^3.13.1": - version: 3.14.1 - resolution: "js-yaml@npm:3.14.1" - dependencies: - argparse: "npm:^1.0.7" - esprima: "npm:^4.0.0" - bin: - js-yaml: bin/js-yaml.js - checksum: 10c0/6746baaaeac312c4db8e75fa22331d9a04cccb7792d126ed8ce6a0bbcfef0cedaddd0c5098fade53db067c09fe00aa1c957674b4765610a8b06a5a189e46433b - languageName: node - linkType: hard - "js-yaml@npm:^4.1.0": version: 4.1.0 resolution: "js-yaml@npm:4.1.0" @@ -8622,7 +6926,7 @@ __metadata: languageName: node linkType: hard -"json-parse-even-better-errors@npm:^2.3.0, json-parse-even-better-errors@npm:^2.3.1": +"json-parse-even-better-errors@npm:^2.3.0": version: 2.3.1 resolution: "json-parse-even-better-errors@npm:2.3.1" checksum: 10c0/140932564c8f0b88455432e0f33c4cb4086b8868e37524e07e723f4eaedb9425bdc2bafd71bd1d9765bd15fd1e2d126972bc83990f55c467168c228c24d665f3 @@ -8675,7 +6979,7 @@ __metadata: languageName: node linkType: hard -"json5@npm:^2.1.2, json5@npm:^2.2.2, json5@npm:^2.2.3": +"json5@npm:^2.2.2, json5@npm:^2.2.3": version: 2.2.3 resolution: "json5@npm:2.2.3" bin: @@ -8732,13 +7036,6 @@ __metadata: languageName: node linkType: hard -"kind-of@npm:^6.0.2": - version: 6.0.3 - resolution: "kind-of@npm:6.0.3" - checksum: 10c0/61cdff9623dabf3568b6445e93e31376bee1cdb93f8ba7033d86022c2a9b1791a1d9510e026e6465ebd701a6dd2f7b0808483ad8838341ac52f003f512e0b4c4 - languageName: node - linkType: hard - "klaw@npm:^3.0.0": version: 3.0.0 resolution: "klaw@npm:3.0.0" @@ -8762,13 +7059,6 @@ __metadata: languageName: node linkType: hard -"klona@npm:^2.0.4": - version: 2.0.5 - resolution: "klona@npm:2.0.5" - checksum: 10c0/5b752c11ca8e2996612386699f52cc5aed802aa4116663d26239ac0b054fae25191dacb95587ecf1a167b039daa9fc3fa2da17dfd5d0821f3037de3821d9a9e5 - languageName: node - linkType: hard - "konan@npm:^2.1.1": version: 2.1.1 resolution: "konan@npm:2.1.1" @@ -8779,16 +7069,6 @@ __metadata: languageName: node linkType: hard -"launch-editor@npm:^2.6.1": - version: 2.6.1 - resolution: "launch-editor@npm:2.6.1" - dependencies: - picocolors: "npm:^1.0.0" - shell-quote: "npm:^1.8.1" - checksum: 10c0/82d0bd9a44e7a972157719e63dac1b8196db6ec7066c1ec57a495f6c3d6e734f3c4da89549e7b33eb3b0356668ad02a9e7782b6733f5ebd7a61b7c5f635a3ee9 - languageName: node - linkType: hard - "lazy-cache@npm:^1.0.3": version: 1.0.4 resolution: "lazy-cache@npm:1.0.4" @@ -8796,27 +7076,6 @@ __metadata: languageName: node linkType: hard -"lcov-parse@npm:^1.0.0": - version: 1.0.0 - resolution: "lcov-parse@npm:1.0.0" - bin: - lcov-parse: ./bin/cli.js - checksum: 10c0/0d7c3f55361a0f6eda4788928b014a7b56685ceb62b5f8fc1daf0b1dedba4d02e6aa0069e21fee92c479b7dacfd2e8e951e5cdec908f1615b516ff9f91033030 - languageName: node - linkType: hard - -"less-loader@npm:^10.2.0": - version: 10.2.0 - resolution: "less-loader@npm:10.2.0" - dependencies: - klona: "npm:^2.0.4" - peerDependencies: - less: ^3.5.0 || ^4.0.0 - webpack: ^5.0.0 - checksum: 10c0/214f190c7139a6a005f8f505d7f05e929361b1a16eaae427be8809f722ef798d1cb6525114d9e03ab87b6fa5e3fbe2d849494016df971cb29b9c10fd9f1a5a66 - languageName: node - linkType: hard - "less@npm:^4.0.0": version: 4.1.1 resolution: "less@npm:4.1.1" @@ -8919,13 +7178,6 @@ __metadata: languageName: node linkType: hard -"loader-runner@npm:^4.2.0": - version: 4.2.0 - resolution: "loader-runner@npm:4.2.0" - checksum: 10c0/907dee8c4d5841962005e22bf2fa10f7ea5849356243b43e443227641fa202f5edf1c996e5b36697e027533013d35554a46e75d3db8183731f11b5f38db565ea - languageName: node - linkType: hard - "loader-utils@npm:^0.2.16": version: 0.2.17 resolution: "loader-utils@npm:0.2.17" @@ -8938,26 +7190,6 @@ __metadata: languageName: node linkType: hard -"loader-utils@npm:^2.0.0, loader-utils@npm:^2.0.4": - version: 2.0.4 - resolution: "loader-utils@npm:2.0.4" - dependencies: - big.js: "npm:^5.2.2" - emojis-list: "npm:^3.0.0" - json5: "npm:^2.1.2" - checksum: 10c0/d5654a77f9d339ec2a03d88221a5a695f337bf71eb8dea031b3223420bb818964ba8ed0069145c19b095f6c8b8fd386e602a3fc7ca987042bd8bb1dcc90d7100 - languageName: node - linkType: hard - -"locate-path@npm:^5.0.0": - version: 5.0.0 - resolution: "locate-path@npm:5.0.0" - dependencies: - p-locate: "npm:^4.1.0" - checksum: 10c0/33a1c5247e87e022f9713e6213a744557a3e9ec32c5d0b5efb10aa3a38177615bf90221a5592674857039c1a0fd2063b82f285702d37b792d973e9e72ace6c59 - languageName: node - linkType: hard - "locate-path@npm:^7.1.0": version: 7.2.0 resolution: "locate-path@npm:7.2.0" @@ -9002,13 +7234,6 @@ __metadata: languageName: node linkType: hard -"log-driver@npm:^1.2.7": - version: 1.2.7 - resolution: "log-driver@npm:1.2.7" - checksum: 10c0/025a1ea2fcdd2a379c6411ce6dde7af23083b5795861d226de9baaec82a6a583eb9ab283e2d7585d2d7b6c8d2c3ff68729232c76a782cf050d0d254c23f0971a - languageName: node - linkType: hard - "log-symbols@npm:^4.1.0": version: 4.1.0 resolution: "log-symbols@npm:4.1.0" @@ -9423,22 +7648,6 @@ __metadata: languageName: node linkType: hard -"media-typer@npm:0.3.0": - version: 0.3.0 - resolution: "media-typer@npm:0.3.0" - checksum: 10c0/d160f31246907e79fed398470285f21bafb45a62869dc469b1c8877f3f064f5eabc4bcc122f9479b8b605bc5c76187d7871cf84c4ee3ecd3e487da1993279928 - languageName: node - linkType: hard - -"memfs@npm:^4.6.0": - version: 4.7.7 - resolution: "memfs@npm:4.7.7" - dependencies: - tslib: "npm:^2.0.0" - checksum: 10c0/d5926b84ad50e5d36b3351a65e1736b7c0aae364498f0aa736deae4245e1bcaf33b5df2f13f84db687a2331da56e6aefd8e10af387969c977adfdb028ad11638 - languageName: node - linkType: hard - "memoize-one@npm:*, memoize-one@npm:^6.0.0": version: 6.0.0 resolution: "memoize-one@npm:6.0.0" @@ -9455,13 +7664,6 @@ __metadata: languageName: node linkType: hard -"merge-descriptors@npm:1.0.3": - version: 1.0.3 - resolution: "merge-descriptors@npm:1.0.3" - checksum: 10c0/866b7094afd9293b5ea5dcd82d71f80e51514bed33b4c4e9f516795dc366612a4cbb4dc94356e943a8a6914889a914530badff27f397191b9b75cda20b6bae93 - languageName: node - linkType: hard - "merge-img@npm:^2.1.2": version: 2.1.3 resolution: "merge-img@npm:2.1.3" @@ -9472,13 +7674,6 @@ __metadata: languageName: node linkType: hard -"merge-stream@npm:^2.0.0": - version: 2.0.0 - resolution: "merge-stream@npm:2.0.0" - checksum: 10c0/867fdbb30a6d58b011449b8885601ec1690c3e41c759ecd5a9d609094f7aed0096c37823ff4a7190ef0b8f22cc86beb7049196ff68c016e3b3c671d0dac91ce5 - languageName: node - linkType: hard - "merge2@npm:^1.3.0, merge2@npm:^1.4.1": version: 1.4.1 resolution: "merge2@npm:1.4.1" @@ -9493,13 +7688,6 @@ __metadata: languageName: node linkType: hard -"methods@npm:~1.1.2": - version: 1.1.2 - resolution: "methods@npm:1.1.2" - checksum: 10c0/bdf7cc72ff0a33e3eede03708c08983c4d7a173f91348b4b1e4f47d4cdbf734433ad971e7d1e8c77247d9e5cd8adb81ea4c67b0a2db526b758b2233d7814b8b2 - languageName: node - linkType: hard - "micromark-core-commonmark@npm:^1.0.0, micromark-core-commonmark@npm:^1.0.1": version: 1.1.0 resolution: "micromark-core-commonmark@npm:1.1.0" @@ -9829,7 +8017,7 @@ __metadata: languageName: node linkType: hard -"micromatch@npm:^4.0.0, micromatch@npm:^4.0.2, micromatch@npm:^4.0.4": +"micromatch@npm:^4.0.4": version: 4.0.5 resolution: "micromatch@npm:4.0.5" dependencies: @@ -9849,14 +8037,14 @@ __metadata: languageName: node linkType: hard -"mime-db@npm:1.52.0, mime-db@npm:>= 1.43.0 < 2": +"mime-db@npm:1.52.0": version: 1.52.0 resolution: "mime-db@npm:1.52.0" checksum: 10c0/0557a01deebf45ac5f5777fe7740b2a5c309c6d62d40ceab4e23da9f821899ce7a900b7ac8157d4548ddbb7beffe9abc621250e6d182b0397ec7f10c7b91a5aa languageName: node linkType: hard -"mime-types@npm:^2.1.12, mime-types@npm:^2.1.27, mime-types@npm:^2.1.31, mime-types@npm:^2.1.35, mime-types@npm:~2.1.17, mime-types@npm:~2.1.19, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": +"mime-types@npm:^2.1.12, mime-types@npm:~2.1.19": version: 2.1.35 resolution: "mime-types@npm:2.1.35" dependencies: @@ -9865,7 +8053,7 @@ __metadata: languageName: node linkType: hard -"mime@npm:1.6.0, mime@npm:^1.3.4, mime@npm:^1.4.1": +"mime@npm:^1.3.4, mime@npm:^1.4.1": version: 1.6.0 resolution: "mime@npm:1.6.0" bin: @@ -9897,24 +8085,6 @@ __metadata: languageName: node linkType: hard -"mini-css-extract-plugin@npm:^2.5.2": - version: 2.5.2 - resolution: "mini-css-extract-plugin@npm:2.5.2" - dependencies: - schema-utils: "npm:^4.0.0" - peerDependencies: - webpack: ^5.0.0 - checksum: 10c0/5b603da661739be6dd8c8868a94a81a3d3e0059d41bc888a80dbeae9328ca2870de93ffac74634ee7676ab52ae6d6920a6371adbe90cb1899cf9fba24a25485a - languageName: node - linkType: hard - -"minimalistic-assert@npm:^1.0.0": - version: 1.0.1 - resolution: "minimalistic-assert@npm:1.0.1" - checksum: 10c0/96730e5601cd31457f81a296f521eb56036e6f69133c0b18c13fe941109d53ad23a4204d946a0d638d7f3099482a0cec8c9bb6d642604612ce43ee536be3dddd - languageName: node - linkType: hard - "minimatch@npm:6 || 7 || 8 || 9, minimatch@npm:^9.0.4": version: 9.0.5 resolution: "minimatch@npm:9.0.5" @@ -9949,7 +8119,7 @@ __metadata: languageName: node linkType: hard -"minimist@npm:^1.2.5, minimist@npm:^1.2.6": +"minimist@npm:^1.2.6": version: 1.2.6 resolution: "minimist@npm:1.2.6" checksum: 10c0/d0b566204044481c4401abbd24cc75814e753b37268e7fe7ccc78612bf3e37bf1e45a6c43fb0b119445ea1c413c000bde013f320b7211974f2f49bcbec1d0dbf @@ -10141,13 +8311,6 @@ __metadata: languageName: node linkType: hard -"ms@npm:2.0.0": - version: 2.0.0 - resolution: "ms@npm:2.0.0" - checksum: 10c0/f8fda810b39fd7255bbdc451c46286e549794fcc700dc9cd1d25658bbc4dc2563a5de6fe7c60f798a16a60c6ceb53f033cb353f493f0cf63e5199b702943159d - languageName: node - linkType: hard - "ms@npm:2.1.2": version: 2.1.2 resolution: "ms@npm:2.1.2" @@ -10155,25 +8318,13 @@ __metadata: languageName: node linkType: hard -"ms@npm:2.1.3, ms@npm:^2.1.1, ms@npm:^2.1.3": +"ms@npm:^2.1.1, ms@npm:^2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 languageName: node linkType: hard -"multicast-dns@npm:^7.2.5": - version: 7.2.5 - resolution: "multicast-dns@npm:7.2.5" - dependencies: - dns-packet: "npm:^5.2.2" - thunky: "npm:^1.0.2" - bin: - multicast-dns: cli.js - checksum: 10c0/5120171d4bdb1577764c5afa96e413353bff530d1b37081cb29cccc747f989eb1baf40574fe8e27060fc1aef72b59c042f72b9b208413de33bcf411343c69057 - languageName: node - linkType: hard - "n-gram@npm:^2.0.0": version: 2.0.1 resolution: "n-gram@npm:2.0.1" @@ -10277,20 +8428,13 @@ __metadata: languageName: node linkType: hard -"negotiator@npm:0.6.3, negotiator@npm:^0.6.3": +"negotiator@npm:^0.6.3": version: 0.6.3 resolution: "negotiator@npm:0.6.3" checksum: 10c0/3ec9fd413e7bf071c937ae60d572bc67155262068ed522cf4b3be5edbe6ddf67d095ec03a3a14ebf8fc8e95f8e1d61be4869db0dbb0de696f6b837358bd43fc2 languageName: node linkType: hard -"neo-async@npm:^2.6.2": - version: 2.6.2 - resolution: "neo-async@npm:2.6.2" - checksum: 10c0/c2f5a604a54a8ec5438a342e1f356dff4bc33ccccdb6dc668d94fe8e5eccfc9d2c2eea6064b0967a767ba63b33763f51ccf2cd2441b461a7322656c1f06b3f5d - languageName: node - linkType: hard - "node-fetch@npm:2.6.7": version: 2.6.7 resolution: "node-fetch@npm:2.6.7" @@ -10305,13 +8449,6 @@ __metadata: languageName: node linkType: hard -"node-forge@npm:^1": - version: 1.3.1 - resolution: "node-forge@npm:1.3.1" - checksum: 10c0/e882819b251a4321f9fc1d67c85d1501d3004b4ee889af822fd07f64de3d1a8e272ff00b689570af0465d65d6bf5074df9c76e900e0aff23e60b847f2a46fbe8 - languageName: node - linkType: hard - "node-gyp@npm:latest": version: 10.2.0 resolution: "node-gyp@npm:10.2.0" @@ -10339,13 +8476,6 @@ __metadata: languageName: node linkType: hard -"node-releases@npm:^2.0.19": - version: 2.0.19 - resolution: "node-releases@npm:2.0.19" - checksum: 10c0/52a0dbd25ccf545892670d1551690fe0facb6a471e15f2cfa1b20142a5b255b3aa254af5f59d6ecb69c2bec7390bc643c43aa63b13bf5e64b6075952e716b1aa - languageName: node - linkType: hard - "nopt@npm:^7.0.0": version: 7.2.1 resolution: "nopt@npm:7.2.1" @@ -10404,13 +8534,6 @@ __metadata: languageName: node linkType: hard -"object-inspect@npm:^1.13.1": - version: 1.13.2 - resolution: "object-inspect@npm:1.13.2" - checksum: 10c0/b97835b4c91ec37b5fd71add84f21c3f1047d1d155d00c0fcd6699516c256d4fcc6ff17a1aced873197fe447f91a3964178fd2a67a1ee2120cdaf60e81a050b4 - languageName: node - linkType: hard - "object-inspect@npm:~0.4.0": version: 0.4.0 resolution: "object-inspect@npm:0.4.0" @@ -10442,13 +8565,6 @@ __metadata: languageName: node linkType: hard -"obuf@npm:^1.0.0, obuf@npm:^1.1.2": - version: 1.1.2 - resolution: "obuf@npm:1.1.2" - checksum: 10c0/520aaac7ea701618eacf000fc96ae458e20e13b0569845800fc582f81b386731ab22d55354b4915d58171db00e79cfcd09c1638c02f89577ef092b38c65b7d81 - languageName: node - linkType: hard - "omggif@npm:^1.0.9": version: 1.0.10 resolution: "omggif@npm:1.0.10" @@ -10456,22 +8572,6 @@ __metadata: languageName: node linkType: hard -"on-finished@npm:2.4.1, on-finished@npm:^2.4.1": - version: 2.4.1 - resolution: "on-finished@npm:2.4.1" - dependencies: - ee-first: "npm:1.1.1" - checksum: 10c0/46fb11b9063782f2d9968863d9cbba33d77aa13c17f895f56129c274318b86500b22af3a160fe9995aa41317efcd22941b6eba747f718ced08d9a73afdb087b4 - languageName: node - linkType: hard - -"on-headers@npm:~1.0.2": - version: 1.0.2 - resolution: "on-headers@npm:1.0.2" - checksum: 10c0/f649e65c197bf31505a4c0444875db0258e198292f34b884d73c2f751e91792ef96bb5cf89aa0f4fecc2e4dc662461dda606b1274b0e564f539cae5d2f5fc32f - languageName: node - linkType: hard - "once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": version: 1.4.0 resolution: "once@npm:1.4.0" @@ -10490,18 +8590,6 @@ __metadata: languageName: node linkType: hard -"open@npm:^10.0.3": - version: 10.0.4 - resolution: "open@npm:10.0.4" - dependencies: - default-browser: "npm:^5.2.1" - define-lazy-prop: "npm:^3.0.0" - is-inside-container: "npm:^1.0.0" - is-wsl: "npm:^3.1.0" - checksum: 10c0/ec773cb8087a6987bcd1c7d5bec54edc855e321fe52bbfdf207f07d560b86936ec21066329e22bbcdc1e931da5662ae5cd6d0a6694a10df85e053ee79e1af744 - languageName: node - linkType: hard - "ora@npm:^5.4.1": version: 5.4.1 resolution: "ora@npm:5.4.1" @@ -10526,15 +8614,6 @@ __metadata: languageName: node linkType: hard -"p-limit@npm:^2.2.0": - version: 2.3.0 - resolution: "p-limit@npm:2.3.0" - dependencies: - p-try: "npm:^2.0.0" - checksum: 10c0/8da01ac53efe6a627080fafc127c873da40c18d87b3f5d5492d465bb85ec7207e153948df6b9cbaeb130be70152f874229b8242ee2be84c0794082510af97f12 - languageName: node - linkType: hard - "p-limit@npm:^4.0.0": version: 4.0.0 resolution: "p-limit@npm:4.0.0" @@ -10544,15 +8623,6 @@ __metadata: languageName: node linkType: hard -"p-locate@npm:^4.1.0": - version: 4.1.0 - resolution: "p-locate@npm:4.1.0" - dependencies: - p-limit: "npm:^2.2.0" - checksum: 10c0/1b476ad69ad7f6059744f343b26d51ce091508935c1dbb80c4e0a2f397ffce0ca3a1f9f5cd3c7ce19d7929a09719d5c65fe70d8ee289c3f267cd36f2881813e9 - languageName: node - linkType: hard - "p-locate@npm:^6.0.0": version: 6.0.0 resolution: "p-locate@npm:6.0.0" @@ -10571,24 +8641,6 @@ __metadata: languageName: node linkType: hard -"p-retry@npm:^6.2.0": - version: 6.2.0 - resolution: "p-retry@npm:6.2.0" - dependencies: - "@types/retry": "npm:0.12.2" - is-network-error: "npm:^1.0.0" - retry: "npm:^0.13.1" - checksum: 10c0/3277f2a8450fb1429c29c432d24c5965b32f187228f1beea56f5d49209717588a7dc0415def1c653f60e0d15ed72c56dacaa2d5fdfa71b0f860592b0aa6ce823 - languageName: node - linkType: hard - -"p-try@npm:^2.0.0": - version: 2.2.0 - resolution: "p-try@npm:2.2.0" - checksum: 10c0/c36c19907734c904b16994e6535b02c36c2224d433e01a2f1ab777237f4d86e6289fd5fd464850491e940379d4606ed850c03e0f9ab600b0ebddb511312e177f - languageName: node - linkType: hard - "package-json-from-dist@npm:^1.0.0": version: 1.0.0 resolution: "package-json-from-dist@npm:1.0.0" @@ -10730,20 +8782,6 @@ __metadata: languageName: node linkType: hard -"parseurl@npm:~1.3.2, parseurl@npm:~1.3.3": - version: 1.3.3 - resolution: "parseurl@npm:1.3.3" - checksum: 10c0/90dd4760d6f6174adb9f20cf0965ae12e23879b5f5464f38e92fce8073354341e4b3b76fa3d878351efe7d01e617121955284cfd002ab087fba1a0726ec0b4f5 - languageName: node - linkType: hard - -"path-exists@npm:^4.0.0": - version: 4.0.0 - resolution: "path-exists@npm:4.0.0" - checksum: 10c0/8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b - languageName: node - linkType: hard - "path-exists@npm:^5.0.0": version: 5.0.0 resolution: "path-exists@npm:5.0.0" @@ -10798,13 +8836,6 @@ __metadata: languageName: node linkType: hard -"path-to-regexp@npm:0.1.12": - version: 0.1.12 - resolution: "path-to-regexp@npm:0.1.12" - checksum: 10c0/1c6ff10ca169b773f3bba943bbc6a07182e332464704572962d277b900aeee81ac6aa5d060ff9e01149636c30b1f63af6e69dd7786ba6e0ddb39d4dee1f0645b - languageName: node - linkType: hard - "path-type@npm:^4.0.0": version: 4.0.0 resolution: "path-type@npm:4.0.0" @@ -10812,13 +8843,6 @@ __metadata: languageName: node linkType: hard -"path-type@npm:^5.0.0": - version: 5.0.0 - resolution: "path-type@npm:5.0.0" - checksum: 10c0/e8f4b15111bf483900c75609e5e74e3fcb79f2ddb73e41470028fcd3e4b5162ec65da9907be077ee5012c18801ff7fffb35f9f37a077f3f81d85a0b7d6578efd - languageName: node - linkType: hard - "pathe@npm:^2.0.3": version: 2.0.3 resolution: "pathe@npm:2.0.3" @@ -10986,15 +9010,6 @@ __metadata: languageName: node linkType: hard -"pkg-dir@npm:^4.2.0": - version: 4.2.0 - resolution: "pkg-dir@npm:4.2.0" - dependencies: - find-up: "npm:^4.0.0" - checksum: 10c0/c56bda7769e04907a88423feb320babaed0711af8c436ce3e56763ab1021ba107c7b0cafb11cde7529f669cfc22bffcaebffb573645cbd63842ea9fb17cd7728 - languageName: node - linkType: hard - "pngjs@npm:^3.0.0, pngjs@npm:^3.3.3": version: 3.4.0 resolution: "pngjs@npm:3.4.0" @@ -11016,68 +9031,7 @@ __metadata: languageName: node linkType: hard -"postcss-modules-extract-imports@npm:^3.0.0": - version: 3.0.0 - resolution: "postcss-modules-extract-imports@npm:3.0.0" - peerDependencies: - postcss: ^8.1.0 - checksum: 10c0/f8879d66d8162fb7a3fcd916d37574006c584ea509107b1cfb798a5e090175ef9470f601e46f0a305070d8ff2500e07489a5c1ac381c29a1dc1120e827ca7943 - languageName: node - linkType: hard - -"postcss-modules-local-by-default@npm:^4.0.0": - version: 4.0.0 - resolution: "postcss-modules-local-by-default@npm:4.0.0" - dependencies: - icss-utils: "npm:^5.0.0" - postcss-selector-parser: "npm:^6.0.2" - postcss-value-parser: "npm:^4.1.0" - peerDependencies: - postcss: ^8.1.0 - checksum: 10c0/8ee9c0d9918fd838854d434731371874b25c412dde135df981cc28d37d0660496389b0f8653dbcdbb6ee81f2bec90cb5b14668f6208f6f517400ac064e234c5a - languageName: node - linkType: hard - -"postcss-modules-scope@npm:^3.0.0": - version: 3.0.0 - resolution: "postcss-modules-scope@npm:3.0.0" - dependencies: - postcss-selector-parser: "npm:^6.0.4" - peerDependencies: - postcss: ^8.1.0 - checksum: 10c0/60af503910363689568c2c3701cb019a61b58b3d739391145185eec211bea5d50ccb6ecbe6955b39d856088072fd50ea002e40a52b50e33b181ff5c41da0308a - languageName: node - linkType: hard - -"postcss-modules-values@npm:^4.0.0": - version: 4.0.0 - resolution: "postcss-modules-values@npm:4.0.0" - dependencies: - icss-utils: "npm:^5.0.0" - peerDependencies: - postcss: ^8.1.0 - checksum: 10c0/dd18d7631b5619fb9921b198c86847a2a075f32e0c162e0428d2647685e318c487a2566cc8cc669fc2077ef38115cde7a068e321f46fb38be3ad49646b639dbc - languageName: node - linkType: hard - -"postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4": - version: 6.0.10 - resolution: "postcss-selector-parser@npm:6.0.10" - dependencies: - cssesc: "npm:^3.0.0" - util-deprecate: "npm:^1.0.2" - checksum: 10c0/a0b27c5e3f7604c8dc7cd83f145fdd7b21448e0d86072da99e0d78e536ba27aa9db2d42024c50aa530408ee517c4bdc0260529e1afb56608f9a82e839c207e82 - languageName: node - linkType: hard - -"postcss-value-parser@npm:^4.1.0, postcss-value-parser@npm:^4.2.0": - version: 4.2.0 - resolution: "postcss-value-parser@npm:4.2.0" - checksum: 10c0/f4142a4f56565f77c1831168e04e3effd9ffcc5aebaf0f538eee4b2d465adfd4b85a44257bb48418202a63806a7da7fe9f56c330aebb3cac898e46b4cbf49161 - languageName: node - linkType: hard - -"postcss@npm:^8.1.10, postcss@npm:^8.4.7": +"postcss@npm:^8.1.10": version: 8.4.12 resolution: "postcss@npm:8.4.12" dependencies: @@ -11250,16 +9204,6 @@ __metadata: languageName: node linkType: hard -"proxy-addr@npm:~2.0.7": - version: 2.0.7 - resolution: "proxy-addr@npm:2.0.7" - dependencies: - forwarded: "npm:0.2.0" - ipaddr.js: "npm:1.9.1" - checksum: 10c0/c3eed999781a35f7fd935f398b6d8920b6fb00bbc14287bc6de78128ccc1a02c89b95b56742bf7cf0362cc333c61d138532049c7dedc7a328ef13343eff81210 - languageName: node - linkType: hard - "proxy-from-env@npm:1.1.0": version: 1.1.0 resolution: "proxy-from-env@npm:1.1.0" @@ -11329,15 +9273,6 @@ __metadata: languageName: node linkType: hard -"qs@npm:6.13.0": - version: 6.13.0 - resolution: "qs@npm:6.13.0" - dependencies: - side-channel: "npm:^1.0.6" - checksum: 10c0/62372cdeec24dc83a9fb240b7533c0fdcf0c5f7e0b83343edd7310f0ab4c8205a5e7c56406531f2e47e1b4878a3821d652be4192c841de5b032ca83619d8f860 - languageName: node - linkType: hard - "qs@npm:~6.5.2": version: 6.5.2 resolution: "qs@npm:6.5.2" @@ -11369,34 +9304,6 @@ __metadata: languageName: node linkType: hard -"randombytes@npm:^2.1.0": - version: 2.1.0 - resolution: "randombytes@npm:2.1.0" - dependencies: - safe-buffer: "npm:^5.1.0" - checksum: 10c0/50395efda7a8c94f5dffab564f9ff89736064d32addf0cc7e8bf5e4166f09f8ded7a0849ca6c2d2a59478f7d90f78f20d8048bca3cdf8be09d8e8a10790388f3 - languageName: node - linkType: hard - -"range-parser@npm:^1.2.1, range-parser@npm:~1.2.1": - version: 1.2.1 - resolution: "range-parser@npm:1.2.1" - checksum: 10c0/96c032ac2475c8027b7a4e9fe22dc0dfe0f6d90b85e496e0f016fbdb99d6d066de0112e680805075bd989905e2123b3b3d002765149294dce0c1f7f01fcc2ea0 - languageName: node - linkType: hard - -"raw-body@npm:2.5.2": - version: 2.5.2 - resolution: "raw-body@npm:2.5.2" - dependencies: - bytes: "npm:3.1.2" - http-errors: "npm:2.0.0" - iconv-lite: "npm:0.4.24" - unpipe: "npm:1.0.0" - checksum: 10c0/b201c4b66049369a60e766318caff5cb3cc5a900efd89bdac431463822d976ad0670912c931fdbdcf5543207daf6f6833bca57aa116e1661d2ea91e12ca692c4 - languageName: node - linkType: hard - "rc-cascader@npm:~3.30.0": version: 3.30.0 resolution: "rc-cascader@npm:3.30.0" @@ -12318,7 +10225,7 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^2.0.1, readable-stream@npm:^2.2.2": +"readable-stream@npm:^2.2.2": version: 2.3.7 resolution: "readable-stream@npm:2.3.7" dependencies: @@ -12333,7 +10240,7 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^3.0.0, readable-stream@npm:^3.0.6, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0": +"readable-stream@npm:^3.0.0, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0": version: 3.6.2 resolution: "readable-stream@npm:3.6.2" dependencies: @@ -12582,7 +10489,7 @@ __metadata: languageName: node linkType: hard -"request@npm:^2.65.0, request@npm:^2.88.2": +"request@npm:^2.65.0": version: 2.88.2 resolution: "request@npm:2.88.2" dependencies: @@ -12624,13 +10531,6 @@ __metadata: languageName: node linkType: hard -"requires-port@npm:^1.0.0": - version: 1.0.0 - resolution: "requires-port@npm:1.0.0" - checksum: 10c0/b2bfdd09db16c082c4326e573a82c0771daaf7b53b9ce8ad60ea46aa6e30aaf475fe9b164800b89f93b748d2c234d8abff945d2551ba47bf5698e04cd7713267 - languageName: node - linkType: hard - "requizzle@npm:^0.2.3": version: 0.2.3 resolution: "requizzle@npm:0.2.3" @@ -12647,15 +10547,6 @@ __metadata: languageName: node linkType: hard -"resolve-cwd@npm:^3.0.0": - version: 3.0.0 - resolution: "resolve-cwd@npm:3.0.0" - dependencies: - resolve-from: "npm:^5.0.0" - checksum: 10c0/e608a3ebd15356264653c32d7ecbc8fd702f94c6703ea4ac2fb81d9c359180cba0ae2e6b71faa446631ed6145454d5a56b227efc33a2d40638ac13f8beb20ee4 - languageName: node - linkType: hard - "resolve-from@npm:^4.0.0": version: 4.0.0 resolution: "resolve-from@npm:4.0.0" @@ -12663,20 +10554,6 @@ __metadata: languageName: node linkType: hard -"resolve-from@npm:^5.0.0": - version: 5.0.0 - resolution: "resolve-from@npm:5.0.0" - checksum: 10c0/b21cb7f1fb746de8107b9febab60095187781137fd803e6a59a76d421444b1531b641bba5857f5dc011974d8a5c635d61cec49e6bd3b7fc20e01f0fafc4efbf2 - languageName: node - linkType: hard - -"resolve-pkg-maps@npm:^1.0.0": - version: 1.0.0 - resolution: "resolve-pkg-maps@npm:1.0.0" - checksum: 10c0/fb8f7bbe2ca281a73b7ef423a1cbc786fb244bd7a95cbe5c3fba25b27d327150beca8ba02f622baea65919a57e061eb5005204daa5f93ed590d9b77463a567ab - languageName: node - linkType: hard - "resolve@npm:^1.1.6, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.1": version: 1.22.8 resolution: "resolve@npm:1.22.8" @@ -12727,13 +10604,6 @@ __metadata: languageName: node linkType: hard -"retry@npm:^0.13.1": - version: 0.13.1 - resolution: "retry@npm:0.13.1" - checksum: 10c0/9ae822ee19db2163497e074ea919780b1efa00431d197c7afdb950e42bf109196774b92a49fc9821f0b8b328a98eea6017410bfc5e8a0fc19c85c6d11adb3772 - languageName: node - linkType: hard - "reusify@npm:^1.0.4": version: 1.0.4 resolution: "reusify@npm:1.0.4" @@ -12843,13 +10713,6 @@ __metadata: languageName: node linkType: hard -"run-applescript@npm:^7.0.0": - version: 7.0.0 - resolution: "run-applescript@npm:7.0.0" - checksum: 10c0/bd821bbf154b8e6c8ecffeaf0c33cebbb78eb2987476c3f6b420d67ab4c5301faa905dec99ded76ebb3a7042b4e440189ae6d85bbbd3fc6e8d493347ecda8bfe - languageName: node - linkType: hard - "run-parallel@npm:^1.1.9": version: 1.2.0 resolution: "run-parallel@npm:1.2.0" @@ -12868,20 +10731,20 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:5.1.2, safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": - version: 5.1.2 - resolution: "safe-buffer@npm:5.1.2" - checksum: 10c0/780ba6b5d99cc9a40f7b951d47152297d0e260f0df01472a1b99d4889679a4b94a13d644f7dbc4f022572f09ae9005fa2fbb93bbbd83643316f365a3e9a45b21 - languageName: node - linkType: hard - -"safe-buffer@npm:5.2.1, safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.2, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 languageName: node linkType: hard +"safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": + version: 5.1.2 + resolution: "safe-buffer@npm:5.1.2" + checksum: 10c0/780ba6b5d99cc9a40f7b951d47152297d0e260f0df01472a1b99d4889679a4b94a13d644f7dbc4f022572f09ae9005fa2fbb93bbbd83643316f365a3e9a45b21 + languageName: node + linkType: hard + "safe-regex@npm:^2.1.1": version: 2.1.1 resolution: "safe-regex@npm:2.1.1" @@ -12929,52 +10792,17 @@ __metadata: resolution: "scheduler@npm:0.19.1" dependencies: loose-envify: "npm:^1.1.0" - object-assign: "npm:^4.1.1" - checksum: 10c0/9658932a73148a93d791c064b331d9690ddfecc4de25bcd6c9b89f5f1166e3d23d9c31c1595d66565e5ffbb34d47035cb14841aba6444bc266bfcd215cefe9c0 - languageName: node - linkType: hard - -"scheduler@npm:^0.23.2": - version: 0.23.2 - resolution: "scheduler@npm:0.23.2" - dependencies: - loose-envify: "npm:^1.1.0" - checksum: 10c0/26383305e249651d4c58e6705d5f8425f153211aef95f15161c151f7b8de885f24751b377e4a0b3dd42cce09aad3f87a61dab7636859c0d89b7daf1a1e2a5c78 - languageName: node - linkType: hard - -"schema-utils@npm:^3.0.0": - version: 3.1.1 - resolution: "schema-utils@npm:3.1.1" - dependencies: - "@types/json-schema": "npm:^7.0.8" - ajv: "npm:^6.12.5" - ajv-keywords: "npm:^3.5.2" - checksum: 10c0/55a8da802a5f8f0ce6f68b6a139f3261cb423bd23795766da866a0f5738fc40303370fbe0c3eeba60b2a91c569ad7ce5318fea455f8fe866098c5a3a6b9050b0 - languageName: node - linkType: hard - -"schema-utils@npm:^4.0.0, schema-utils@npm:^4.2.0": - version: 4.2.0 - resolution: "schema-utils@npm:4.2.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: 10c0/8dab7e7800316387fd8569870b4b668cfcecf95ac551e369ea799bbcbfb63fb0365366d4b59f64822c9f7904d8c5afcfaf5a6124a4b08783e558cd25f299a6b4 + object-assign: "npm:^4.1.1" + checksum: 10c0/9658932a73148a93d791c064b331d9690ddfecc4de25bcd6c9b89f5f1166e3d23d9c31c1595d66565e5ffbb34d47035cb14841aba6444bc266bfcd215cefe9c0 languageName: node linkType: hard -"schema-utils@npm:^4.3.0": - version: 4.3.0 - resolution: "schema-utils@npm:4.3.0" +"scheduler@npm:^0.23.2": + version: 0.23.2 + resolution: "scheduler@npm:0.23.2" 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: 10c0/c23f0fa73ef71a01d4a2bb7af4c91e0d356ec640e071aa2d06ea5e67f042962bb7ac7c29a60a295bb0125878801bc3209197a2b8a833dd25bd38e37c3ed21427 + loose-envify: "npm:^1.1.0" + checksum: 10c0/26383305e249651d4c58e6705d5f8425f153211aef95f15161c151f7b8de885f24751b377e4a0b3dd42cce09aad3f87a61dab7636859c0d89b7daf1a1e2a5c78 languageName: node linkType: hard @@ -12994,23 +10822,6 @@ __metadata: languageName: node linkType: hard -"select-hose@npm:^2.0.0": - version: 2.0.0 - resolution: "select-hose@npm:2.0.0" - checksum: 10c0/01cc52edd29feddaf379efb4328aededa633f0ac43c64b11a8abd075ff34f05b0d280882c4fbcbdf1a0658202c9cd2ea8d5985174dcf9a2dac7e3a4996fa9b67 - languageName: node - linkType: hard - -"selfsigned@npm:^2.4.1": - version: 2.4.1 - resolution: "selfsigned@npm:2.4.1" - dependencies: - "@types/node-forge": "npm:^1.3.0" - node-forge: "npm:^1" - checksum: 10c0/521829ec36ea042f7e9963bf1da2ed040a815cf774422544b112ec53b7edc0bc50a0f8cc2ae7aa6cc19afa967c641fd96a15de0fc650c68651e41277d2e1df09 - languageName: node - linkType: hard - "semantic-ui-react@npm:^0.88.2": version: 0.88.2 resolution: "semantic-ui-react@npm:0.88.2" @@ -13078,100 +10889,6 @@ __metadata: languageName: node linkType: hard -"send@npm:0.19.0": - version: 0.19.0 - resolution: "send@npm:0.19.0" - dependencies: - debug: "npm:2.6.9" - depd: "npm:2.0.0" - destroy: "npm:1.2.0" - encodeurl: "npm:~1.0.2" - escape-html: "npm:~1.0.3" - etag: "npm:~1.8.1" - fresh: "npm:0.5.2" - http-errors: "npm:2.0.0" - mime: "npm:1.6.0" - ms: "npm:2.1.3" - on-finished: "npm:2.4.1" - range-parser: "npm:~1.2.1" - statuses: "npm:2.0.1" - checksum: 10c0/ea3f8a67a8f0be3d6bf9080f0baed6d2c51d11d4f7b4470de96a5029c598a7011c497511ccc28968b70ef05508675cebff27da9151dd2ceadd60be4e6cf845e3 - 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: 10c0/2dd09ef4b65a1289ba24a788b1423a035581bef60817bea1f01eda8e3bda623f86357665fe7ac1b50f6d4f583f97db9615b3f07b2a2e8cbcb75033965f771dd2 - languageName: node - linkType: hard - -"serve-index@npm:^1.9.1": - version: 1.9.1 - resolution: "serve-index@npm:1.9.1" - dependencies: - accepts: "npm:~1.3.4" - batch: "npm:0.6.1" - debug: "npm:2.6.9" - escape-html: "npm:~1.0.3" - http-errors: "npm:~1.6.2" - mime-types: "npm:~2.1.17" - parseurl: "npm:~1.3.2" - checksum: 10c0/a666471a24196f74371edf2c3c7bcdd82adbac52f600804508754b5296c3567588bf694258b19e0cb23a567acfa20d9721bfdaed3286007b81f9741ada8a3a9c - languageName: node - linkType: hard - -"serve-static@npm:1.16.2": - version: 1.16.2 - resolution: "serve-static@npm:1.16.2" - dependencies: - encodeurl: "npm:~2.0.0" - escape-html: "npm:~1.0.3" - parseurl: "npm:~1.3.3" - send: "npm:0.19.0" - checksum: 10c0/528fff6f5e12d0c5a391229ad893910709bc51b5705962b09404a1d813857578149b8815f35d3ee5752f44cd378d0f31669d4b1d7e2d11f41e08283d5134bd1f - languageName: node - linkType: hard - -"set-function-length@npm:^1.2.1": - version: 1.2.2 - resolution: "set-function-length@npm:1.2.2" - dependencies: - define-data-property: "npm:^1.1.4" - es-errors: "npm:^1.3.0" - function-bind: "npm:^1.1.2" - get-intrinsic: "npm:^1.2.4" - gopd: "npm:^1.0.1" - has-property-descriptors: "npm:^1.0.2" - checksum: 10c0/82850e62f412a258b71e123d4ed3873fa9377c216809551192bb6769329340176f109c2eeae8c22a8d386c76739855f78e8716515c818bcaef384b51110f0f3c - languageName: node - linkType: hard - -"setprototypeof@npm:1.1.0": - version: 1.1.0 - resolution: "setprototypeof@npm:1.1.0" - checksum: 10c0/a77b20876689c6a89c3b42f0c3596a9cae02f90fc902570cbd97198e9e8240382086c9303ad043e88cee10f61eae19f1004e51d885395a1e9bf49f9ebed12872 - languageName: node - linkType: hard - -"setprototypeof@npm:1.2.0": - version: 1.2.0 - resolution: "setprototypeof@npm:1.2.0" - checksum: 10c0/68733173026766fa0d9ecaeb07f0483f4c2dc70ca376b3b7c40b7cda909f94b0918f6c5ad5ce27a9160bdfb475efaa9d5e705a11d8eaae18f9835d20976028bc - languageName: node - linkType: hard - -"shallow-clone@npm:^3.0.0": - version: 3.0.1 - resolution: "shallow-clone@npm:3.0.1" - dependencies: - kind-of: "npm:^6.0.2" - checksum: 10c0/7bab09613a1b9f480c85a9823aebec533015579fa055ba6634aa56ba1f984380670eaf33b8217502931872aa1401c9fcadaa15f9f604d631536df475b05bcf1e - languageName: node - linkType: hard - "shallow-copy@npm:~0.0.1": version: 0.0.1 resolution: "shallow-copy@npm:0.0.1" @@ -13209,13 +10926,6 @@ __metadata: languageName: node linkType: hard -"shell-quote@npm:^1.8.1": - version: 1.8.1 - resolution: "shell-quote@npm:1.8.1" - checksum: 10c0/8cec6fd827bad74d0a49347057d40dfea1e01f12a6123bf82c4649f3ef152fc2bc6d6176e6376bffcd205d9d0ccb4f1f9acae889384d20baff92186f01ea455a - languageName: node - linkType: hard - "shelljs@npm:^0.8.5": version: 0.8.5 resolution: "shelljs@npm:0.8.5" @@ -13229,18 +10939,6 @@ __metadata: languageName: node linkType: hard -"side-channel@npm:^1.0.6": - version: 1.0.6 - resolution: "side-channel@npm:1.0.6" - dependencies: - call-bind: "npm:^1.0.7" - es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.4" - object-inspect: "npm:^1.13.1" - checksum: 10c0/d2afd163dc733cc0a39aa6f7e39bf0c436293510dbccbff446733daeaf295857dbccf94297092ec8c53e2503acac30f0b78830876f0485991d62a90e9cad305f - languageName: node - linkType: hard - "siginfo@npm:^2.0.0": version: 2.0.0 resolution: "siginfo@npm:2.0.0" @@ -13285,13 +10983,6 @@ __metadata: languageName: node linkType: hard -"slash@npm:^5.1.0": - version: 5.1.0 - resolution: "slash@npm:5.1.0" - checksum: 10c0/eb48b815caf0bdc390d0519d41b9e0556a14380f6799c72ba35caf03544d501d18befdeeef074bc9c052acf69654bc9e0d79d7f1de0866284137a40805299eb3 - languageName: node - linkType: hard - "smart-buffer@npm:^4.2.0": version: 4.2.0 resolution: "smart-buffer@npm:4.2.0" @@ -13299,17 +10990,6 @@ __metadata: languageName: node linkType: hard -"sockjs@npm:^0.3.24": - version: 0.3.24 - resolution: "sockjs@npm:0.3.24" - dependencies: - faye-websocket: "npm:^0.11.3" - uuid: "npm:^8.3.2" - websocket-driver: "npm:^0.7.4" - checksum: 10c0/aa102c7d921bf430215754511c81ea7248f2dcdf268fbdb18e4d8183493a86b8793b164c636c52f474a886f747447c962741df2373888823271efdb9d2594f33 - languageName: node - linkType: hard - "socks-proxy-agent@npm:^8.0.3": version: 8.0.4 resolution: "socks-proxy-agent@npm:8.0.4" @@ -13331,13 +11011,6 @@ __metadata: languageName: node linkType: hard -"source-list-map@npm:^2.0.0": - version: 2.0.1 - resolution: "source-list-map@npm:2.0.1" - checksum: 10c0/2e5e421b185dcd857f46c3c70e2e711a65d717b78c5f795e2e248c9d67757882ea989b80ebc08cf164eeeda5f4be8aa95d3b990225070b2daaaf3257c5958149 - languageName: node - linkType: hard - "source-map-js@npm:^1.0.2": version: 1.0.2 resolution: "source-map-js@npm:1.0.2" @@ -13352,16 +11025,6 @@ __metadata: languageName: node linkType: hard -"source-map-support@npm:~0.5.20": - version: 0.5.21 - resolution: "source-map-support@npm:0.5.21" - dependencies: - buffer-from: "npm:^1.0.0" - source-map: "npm:^0.6.0" - checksum: 10c0/9ee09942f415e0f721d6daad3917ec1516af746a8120bba7bb56278707a37f1eb8642bde456e98454b8a885023af81a16e646869975f06afc1a711fb90484e7d - languageName: node - linkType: hard - "source-map@npm:>= 0.1.2": version: 0.7.3 resolution: "source-map@npm:0.7.3" @@ -13369,13 +11032,6 @@ __metadata: languageName: node linkType: hard -"source-map@npm:^0.6.0, source-map@npm:~0.6.0, source-map@npm:~0.6.1": - version: 0.6.1 - resolution: "source-map@npm:0.6.1" - checksum: 10c0/ab55398007c5e5532957cb0beee2368529618ac0ab372d789806f5718123cc4367d57de3904b4e6a4170eb5a0b0f41373066d02ca0735a0c4d75c7d328d3e011 - languageName: node - linkType: hard - "source-map@npm:~0.1.33": version: 0.1.43 resolution: "source-map@npm:0.1.43" @@ -13392,6 +11048,13 @@ __metadata: languageName: node linkType: hard +"source-map@npm:~0.6.0": + version: 0.6.1 + resolution: "source-map@npm:0.6.1" + checksum: 10c0/ab55398007c5e5532957cb0beee2368529618ac0ab372d789806f5718123cc4367d57de3904b4e6a4170eb5a0b0f41373066d02ca0735a0c4d75c7d328d3e011 + languageName: node + linkType: hard + "space-separated-tokens@npm:^2.0.0": version: 2.0.2 resolution: "space-separated-tokens@npm:2.0.2" @@ -13433,33 +11096,6 @@ __metadata: languageName: node linkType: hard -"spdy-transport@npm:^3.0.0": - version: 3.0.0 - resolution: "spdy-transport@npm:3.0.0" - dependencies: - debug: "npm:^4.1.0" - detect-node: "npm:^2.0.4" - hpack.js: "npm:^2.1.6" - obuf: "npm:^1.1.2" - readable-stream: "npm:^3.0.6" - wbuf: "npm:^1.7.3" - checksum: 10c0/eaf7440fa90724fffc813c386d4a8a7427d967d6e46d7c51d8f8a533d1a6911b9823ea9218703debbae755337e85f110185d7a00ae22ec5c847077b908ce71bb - languageName: node - linkType: hard - -"spdy@npm:^4.0.2": - version: 4.0.2 - resolution: "spdy@npm:4.0.2" - dependencies: - debug: "npm:^4.1.0" - handle-thing: "npm:^2.0.0" - http-deceiver: "npm:^1.2.7" - select-hose: "npm:^2.0.0" - spdy-transport: "npm:^3.0.0" - checksum: 10c0/983509c0be9d06fd00bb9dff713c5b5d35d3ffd720db869acdd5ad7aa6fc0e02c2318b58f75328957d8ff772acdf1f7d19382b6047df342044ff3e2d6805ccdf - languageName: node - linkType: hard - "split2@npm:^3.1.1": version: 3.2.2 resolution: "split2@npm:3.2.2" @@ -13555,20 +11191,6 @@ __metadata: languageName: node linkType: hard -"statuses@npm:2.0.1": - version: 2.0.1 - resolution: "statuses@npm:2.0.1" - checksum: 10c0/34378b207a1620a24804ce8b5d230fea0c279f00b18a7209646d5d47e419d1cc23e7cbf33a25a1e51ac38973dc2ac2e1e9c647a8e481ef365f77668d72becfd0 - languageName: node - linkType: hard - -"statuses@npm:>= 1.4.0 < 2": - version: 1.5.0 - resolution: "statuses@npm:1.5.0" - checksum: 10c0/e433900956357b3efd79b1c547da4d291799ac836960c016d10a98f6a810b1b5c0dcc13b5a7aa609a58239b5190e1ea176ad9221c2157d2fd1c747393e6b2940 - languageName: node - linkType: hard - "std-env@npm:^3.8.1": version: 3.9.0 resolution: "std-env@npm:3.9.0" @@ -13729,15 +11351,6 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^8.0.0": - version: 8.1.1 - resolution: "supports-color@npm:8.1.1" - dependencies: - has-flag: "npm:^4.0.0" - checksum: 10c0/ea1d3c275dd604c974670f63943ed9bd83623edc102430c05adb8efc56ba492746b6e95386e7831b872ec3807fd89dd8eb43f735195f37b5ec343e4234cc7e89 - languageName: node - linkType: hard - "supports-color@npm:^9.0.0": version: 9.4.0 resolution: "supports-color@npm:9.4.0" @@ -13766,7 +11379,7 @@ __metadata: languageName: node linkType: hard -"tapable@npm:^2.1.1, tapable@npm:^2.2.0, tapable@npm:^2.2.1": +"tapable@npm:^2.2.0, tapable@npm:^2.2.1": version: 2.2.1 resolution: "tapable@npm:2.2.1" checksum: 10c0/bc40e6efe1e554d075469cedaba69a30eeb373552aaf41caeaaa45bf56ffacc2674261b106245bd566b35d8f3329b52d838e851ee0a852120acae26e622925c9 @@ -13828,42 +11441,6 @@ __metadata: languageName: node linkType: hard -"terser-webpack-plugin@npm:^5.3.11": - version: 5.3.14 - resolution: "terser-webpack-plugin@npm:5.3.14" - 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: 10c0/9b060947241af43bd6fd728456f60e646186aef492163672a35ad49be6fbc7f63b54a7356c3f6ff40a8f83f00a977edc26f044b8e106cc611c053c8c0eaf8569 - languageName: node - linkType: hard - -"terser@npm:^5.31.1": - version: 5.39.0 - resolution: "terser@npm:5.39.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: 10c0/83326545ea1aecd6261030568b6191ccfa4cb6aa61d9ea41746a52479f50017a78b77e4725fbbc207c5df841ffa66a773c5ac33636e95c7ab94fe7e0379ae5c7 - languageName: node - linkType: hard - "test-exclude@npm:^7.0.1": version: 7.0.1 resolution: "test-exclude@npm:7.0.1" @@ -13924,13 +11501,6 @@ __metadata: languageName: node linkType: hard -"thunky@npm:^1.0.2": - version: 1.1.0 - resolution: "thunky@npm:1.1.0" - checksum: 10c0/369764f39de1ce1de2ba2fa922db4a3f92e9c7f33bcc9a713241bc1f4a5238b484c17e0d36d1d533c625efb00e9e82c3e45f80b47586945557b45abb890156d2 - languageName: node - linkType: hard - "timm@npm:^1.6.1": version: 1.7.1 resolution: "timm@npm:1.7.1" @@ -14040,13 +11610,6 @@ __metadata: languageName: node linkType: hard -"toidentifier@npm:1.0.1": - version: 1.0.1 - resolution: "toidentifier@npm:1.0.1" - checksum: 10c0/93937279934bd66cc3270016dd8d0afec14fb7c94a05c72dc57321f8bd1fa97e5bea6d1f7c89e728d077ca31ea125b78320a616a6c6cd0e6b9cb94cb864381c1 - languageName: node - linkType: hard - "tough-cookie@npm:^5.1.1": version: 5.1.2 resolution: "tough-cookie@npm:5.1.2" @@ -14105,21 +11668,6 @@ __metadata: languageName: node linkType: hard -"ts-loader@npm:^9.4.1": - version: 9.4.1 - resolution: "ts-loader@npm:9.4.1" - dependencies: - chalk: "npm:^4.1.0" - enhanced-resolve: "npm:^5.0.0" - micromatch: "npm:^4.0.0" - semver: "npm:^7.3.4" - peerDependencies: - typescript: "*" - webpack: ^5.0.0 - checksum: 10c0/df0969a2167fa8ab04f86b87aeb521525b749b14f65e22894889cbbb7c9053b1a277a700a98bdd62df76de08260bb1ed13d0ad676849312b3c280c3ceba39859 - languageName: node - linkType: hard - "tsconfck@npm:^3.0.3": version: 3.1.5 resolution: "tsconfck@npm:3.1.5" @@ -14234,16 +11782,6 @@ __metadata: languageName: node linkType: hard -"type-is@npm:~1.6.18": - version: 1.6.18 - resolution: "type-is@npm:1.6.18" - dependencies: - media-typer: "npm:0.3.0" - mime-types: "npm:~2.1.24" - checksum: 10c0/a23daeb538591b7efbd61ecf06b6feb2501b683ffdc9a19c74ef5baba362b4347e42f1b4ed81f5882a8c96a3bfff7f93ce3ffaf0cbbc879b532b04c97a55db9d - languageName: node - linkType: hard - "typed-redux-saga@npm:^1.4.0": version: 1.4.0 resolution: "typed-redux-saga@npm:1.4.0" @@ -14435,13 +11973,6 @@ __metadata: languageName: node linkType: hard -"unicorn-magic@npm:^0.1.0": - version: 0.1.0 - resolution: "unicorn-magic@npm:0.1.0" - checksum: 10c0/e4ed0de05b0a05e735c7d8a2930881e5efcfc3ec897204d5d33e7e6247f4c31eac92e383a15d9a6bccb7319b4271ee4bea946e211bf14951fec6ff2cbbb66a92 - languageName: node - linkType: hard - "unified@npm:^10.0.0": version: 10.1.2 resolution: "unified@npm:10.1.2" @@ -14560,13 +12091,6 @@ __metadata: languageName: node linkType: hard -"unpipe@npm:1.0.0, unpipe@npm:~1.0.0": - version: 1.0.0 - resolution: "unpipe@npm:1.0.0" - checksum: 10c0/193400255bd48968e5c5383730344fbb4fa114cdedfab26e329e50dd2d81b134244bb8a72c6ac1b10ab0281a58b363d06405632c9d49ca9dfd5e90cbd7d0f32c - languageName: node - linkType: hard - "update-browserslist-db@npm:^1.0.11": version: 1.0.11 resolution: "update-browserslist-db@npm:1.0.11" @@ -14581,20 +12105,6 @@ __metadata: languageName: node linkType: hard -"update-browserslist-db@npm:^1.1.1": - version: 1.1.3 - resolution: "update-browserslist-db@npm:1.1.3" - dependencies: - escalade: "npm:^3.2.0" - picocolors: "npm:^1.1.1" - peerDependencies: - browserslist: ">= 4.21.0" - bin: - update-browserslist-db: cli.js - checksum: 10c0/682e8ecbf9de474a626f6462aa85927936cdd256fe584c6df2508b0df9f7362c44c957e9970df55dfe44d3623807d26316ea2c7d26b80bb76a16c56c37233c32 - languageName: node - linkType: hard - "uri-js@npm:^4.2.2": version: 4.4.1 resolution: "uri-js@npm:4.4.1" @@ -14648,20 +12158,13 @@ __metadata: languageName: node linkType: hard -"util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1": +"util-deprecate@npm:^1.0.1, util-deprecate@npm:~1.0.1": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" checksum: 10c0/41a5bdd214df2f6c3ecf8622745e4a366c4adced864bc3c833739791aeeeb1838119af7daed4ba36428114b5c67dcda034a79c882e97e43c03e66a4dd7389942 languageName: node linkType: hard -"utils-merge@npm:1.0.1": - version: 1.0.1 - resolution: "utils-merge@npm:1.0.1" - checksum: 10c0/02ba649de1b7ca8854bfe20a82f1dfbdda3fb57a22ab4a8972a63a34553cf7aa51bc9081cf7e001b035b88186d23689d69e71b510e610a09a4c66f68aa95b672 - languageName: node - linkType: hard - "utrie@npm:^1.0.2": version: 1.0.2 resolution: "utrie@npm:1.0.2" @@ -14680,15 +12183,6 @@ __metadata: languageName: node linkType: hard -"uuid@npm:^8.3.2": - version: 8.3.2 - resolution: "uuid@npm:8.3.2" - bin: - uuid: dist/bin/uuid - checksum: 10c0/bcbb807a917d374a49f475fae2e87fdca7da5e5530820ef53f65ba1d12131bd81a92ecf259cc7ce317cbe0f289e7d79fdfebcef9bfa3087c8c8a2fa304c9be54 - languageName: node - linkType: hard - "uvu@npm:^0.5.0": version: 0.5.6 resolution: "uvu@npm:0.5.6" @@ -14713,13 +12207,6 @@ __metadata: languageName: node linkType: hard -"vary@npm:~1.1.2": - version: 1.1.2 - resolution: "vary@npm:1.1.2" - checksum: 10c0/f15d588d79f3675135ba783c91a4083dcd290a2a5be9fcb6514220a1634e23df116847b1cc51f66bfb0644cf9353b2abb7815ae499bab06e46dd33c1a6bf1f4f - languageName: node - linkType: hard - "verror@npm:1.10.0": version: 1.10.0 resolution: "verror@npm:1.10.0" @@ -14966,16 +12453,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: 10c0/ec60a5f0e9efaeca0102fd9126346b3b2d523e01c34030d3fddf5813a7125765121ebdc2552981136dcd2c852deb1af0b39340f2fcc235f292db5399d0283577 - languageName: node - linkType: hard - "watskeburt@npm:^4.2.3": version: 4.2.3 resolution: "watskeburt@npm:4.2.3" @@ -14985,15 +12462,6 @@ __metadata: languageName: node linkType: hard -"wbuf@npm:^1.1.0, wbuf@npm:^1.7.3": - version: 1.7.3 - resolution: "wbuf@npm:1.7.3" - dependencies: - minimalistic-assert: "npm:^1.0.0" - checksum: 10c0/56edcc5ef2b3d30913ba8f1f5cccc364d180670b24d5f3f8849c1e6fb514e5c7e3a87548ae61227a82859eba6269c11393ae24ce12a2ea1ecb9b465718ddced7 - languageName: node - linkType: hard - "wcwidth@npm:^1.0.1": version: 1.0.1 resolution: "wcwidth@npm:1.0.1" @@ -15032,7 +12500,6 @@ __metadata: "@ant-design/colors": "npm:^7.0.0" "@ant-design/icons": "npm:^5.5.0" "@biomejs/biome": "npm:^1.9.4" - "@chialab/esbuild-plugin-worker": "npm:^0.18.1" "@dnd-kit/core": "npm:^6.1.0" "@dnd-kit/sortable": "npm:^8.0.0" "@fortawesome/fontawesome-free": "npm:^5.15.4" @@ -15076,9 +12543,6 @@ __metadata: classnames: "npm:^2.2.5" color-hash: "npm:^2.0.1" comlink: "npm:^4.3.0" - copy-webpack-plugin: "npm:^12.0.2" - coveralls: "npm:^3.0.2" - css-loader: "npm:^6.5.1" cwise: "npm:^1.0.10" dagre: "npm:^0.8.5" dayjs: "npm:^1.11.13" @@ -15089,8 +12553,7 @@ __metadata: distance-transform: "npm:^1.0.2" documentation: "npm:^14.0.2" dpdm: "npm:^3.14.0" - esbuild: "npm:^0.25" - esbuild-loader: "npm:^4.1.0" + esbuild: "npm:^0.25.8" esbuild-plugin-copy: "npm:^2.1.1" esbuild-plugin-less: "npm:^1.3.24" esbuild-plugin-polyfill-node: "npm:^0.3.0" @@ -15108,14 +12571,12 @@ __metadata: json-loader: "npm:^0.5.7" jsonschema: "npm:^1.2.4" less: "npm:^4.0.0" - less-loader: "npm:^10.2.0" lodash: "npm:^4.17.21" lz-string: "npm:^1.4.4" lz4-wasm: "npm:^0.9.2" lz4-wasm-nodejs: "npm:^0.9.2" memoize-one: "npm:^6.0.0" merge-img: "npm:^2.1.2" - mini-css-extract-plugin: "npm:^2.5.2" minisearch: "npm:^5.0.0" mjs: "npm:^1.0.0" ml-matrix: "npm:^6.10.4" @@ -15156,7 +12617,6 @@ __metadata: three: "npm:^0.169.0" three-mesh-bvh: "npm:^0.9.0" tmp: "npm:0.0.33" - ts-loader: "npm:^9.4.1" tween.js: "npm:^16.3.1" typed-redux-saga: "npm:^1.4.0" typescript: "npm:^5.8.0" @@ -15165,189 +12625,9 @@ __metadata: url-join: "npm:^4.0.0" vite-tsconfig-paths: "npm:^5.1.4" vitest: "npm:^3.1.1" - webpack: "npm:^5.97.1" - webpack-cli: "npm:^5.1.4" - webpack-dev-server: "npm:^5.2.0" - worker-loader: "npm:^3.0.8" languageName: unknown linkType: soft -"webpack-cli@npm:^5.1.4": - version: 5.1.4 - resolution: "webpack-cli@npm:5.1.4" - dependencies: - "@discoveryjs/json-ext": "npm:^0.5.0" - "@webpack-cli/configtest": "npm:^2.1.1" - "@webpack-cli/info": "npm:^2.0.2" - "@webpack-cli/serve": "npm:^2.0.5" - colorette: "npm:^2.0.14" - commander: "npm:^10.0.1" - cross-spawn: "npm:^7.0.3" - envinfo: "npm:^7.7.3" - fastest-levenshtein: "npm:^1.0.12" - import-local: "npm:^3.0.2" - interpret: "npm:^3.1.1" - rechoir: "npm:^0.8.0" - webpack-merge: "npm:^5.7.3" - peerDependencies: - webpack: 5.x.x - peerDependenciesMeta: - "@webpack-cli/generators": - optional: true - webpack-bundle-analyzer: - optional: true - webpack-dev-server: - optional: true - bin: - webpack-cli: bin/cli.js - checksum: 10c0/4266909ae5e2e662c8790ac286e965b2c7fd5a4a2f07f48e28576234c9a5f631847ccddc18e1b3281c7b4be04a7ff4717d2636033a322dde13ac995fd0d9de10 - languageName: node - linkType: hard - -"webpack-dev-middleware@npm:^7.4.2": - version: 7.4.2 - resolution: "webpack-dev-middleware@npm:7.4.2" - dependencies: - colorette: "npm:^2.0.10" - memfs: "npm:^4.6.0" - mime-types: "npm:^2.1.31" - on-finished: "npm:^2.4.1" - range-parser: "npm:^1.2.1" - schema-utils: "npm:^4.0.0" - peerDependencies: - webpack: ^5.0.0 - peerDependenciesMeta: - webpack: - optional: true - checksum: 10c0/2aa873ef57a7095d7fba09400737b6066adc3ded229fd6eba89a666f463c2614c68e01ae58f662c9cdd74f0c8da088523d972329bf4a054e470bc94feb8bcad0 - languageName: node - linkType: hard - -"webpack-dev-server@npm:^5.2.0": - version: 5.2.0 - resolution: "webpack-dev-server@npm:5.2.0" - dependencies: - "@types/bonjour": "npm:^3.5.13" - "@types/connect-history-api-fallback": "npm:^1.5.4" - "@types/express": "npm:^4.17.21" - "@types/serve-index": "npm:^1.9.4" - "@types/serve-static": "npm:^1.15.5" - "@types/sockjs": "npm:^0.3.36" - "@types/ws": "npm:^8.5.10" - ansi-html-community: "npm:^0.0.8" - bonjour-service: "npm:^1.2.1" - chokidar: "npm:^3.6.0" - colorette: "npm:^2.0.10" - compression: "npm:^1.7.4" - connect-history-api-fallback: "npm:^2.0.0" - express: "npm:^4.21.2" - graceful-fs: "npm:^4.2.6" - http-proxy-middleware: "npm:^2.0.7" - ipaddr.js: "npm:^2.1.0" - launch-editor: "npm:^2.6.1" - open: "npm:^10.0.3" - p-retry: "npm:^6.2.0" - schema-utils: "npm:^4.2.0" - selfsigned: "npm:^2.4.1" - serve-index: "npm:^1.9.1" - sockjs: "npm:^0.3.24" - spdy: "npm:^4.0.2" - webpack-dev-middleware: "npm:^7.4.2" - ws: "npm:^8.18.0" - peerDependencies: - webpack: ^5.0.0 - peerDependenciesMeta: - webpack: - optional: true - webpack-cli: - optional: true - bin: - webpack-dev-server: bin/webpack-dev-server.js - checksum: 10c0/afb2e51945ac54ef3039e11e377241e1cb97a8d3f526f39f13c3fa924c530fb6063200c2c3ae4e33e6bcc110d4abed777c09ce18e2d261012853d81f3c5820ab - languageName: node - linkType: hard - -"webpack-merge@npm:^5.7.3": - version: 5.8.0 - resolution: "webpack-merge@npm:5.8.0" - dependencies: - clone-deep: "npm:^4.0.1" - wildcard: "npm:^2.0.0" - checksum: 10c0/400eaaba69d2240d51dc7a4427dde37849a8f2fdf93731be6a8aad34d70d55bb38cb10c5001c7b339fc91f8c8547e782ecbd79eff24ad861e21e6a4c5dc959fb - languageName: node - linkType: hard - -"webpack-sources@npm:^1.4.3": - version: 1.4.3 - resolution: "webpack-sources@npm:1.4.3" - dependencies: - source-list-map: "npm:^2.0.0" - source-map: "npm:~0.6.1" - checksum: 10c0/78dafb3e1e297d3f4eb6204311e8c64d28cd028f82887ba33aaf03fffc82482d8e1fdf6de25a60f4dde621d3565f4c3b1bfb350f09add8f4e54e00279ff3db5e - languageName: node - linkType: hard - -"webpack-sources@npm:^3.2.3": - version: 3.2.3 - resolution: "webpack-sources@npm:3.2.3" - checksum: 10c0/2ef63d77c4fad39de4a6db17323d75eb92897b32674e97d76f0a1e87c003882fc038571266ad0ef581ac734cbe20952912aaa26155f1905e96ce251adbb1eb4e - languageName: node - linkType: hard - -"webpack@npm:^5.97.1": - version: 5.98.0 - resolution: "webpack@npm:5.98.0" - 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:^4.3.0" - tapable: "npm:^2.1.1" - terser-webpack-plugin: "npm:^5.3.11" - watchpack: "npm:^2.4.1" - webpack-sources: "npm:^3.2.3" - peerDependenciesMeta: - webpack-cli: - optional: true - bin: - webpack: bin/webpack.js - checksum: 10c0/bee4fa77f444802f0beafb2ff30eb5454a606163ad7d3cc9a5dcc9d24033c62407bed04601b25dea49ea3969b352c1b530a86c753246f42560a4a084eefb094e - languageName: node - linkType: hard - -"websocket-driver@npm:>=0.5.1, websocket-driver@npm:^0.7.4": - version: 0.7.4 - resolution: "websocket-driver@npm:0.7.4" - dependencies: - http-parser-js: "npm:>=0.5.1" - safe-buffer: "npm:>=5.1.0" - websocket-extensions: "npm:>=0.1.1" - checksum: 10c0/5f09547912b27bdc57bac17b7b6527d8993aa4ac8a2d10588bb74aebaf785fdcf64fea034aae0c359b7adff2044dd66f3d03866e4685571f81b13e548f9021f1 - languageName: node - linkType: hard - -"websocket-extensions@npm:>=0.1.1": - version: 0.1.4 - resolution: "websocket-extensions@npm:0.1.4" - checksum: 10c0/bbc8c233388a0eb8a40786ee2e30d35935cacbfe26ab188b3e020987e85d519c2009fe07cfc37b7f718b85afdba7e54654c9153e6697301f72561bfe429177e0 - languageName: node - linkType: hard - "whatwg-encoding@npm:^3.1.1": version: 3.1.1 resolution: "whatwg-encoding@npm:3.1.1" @@ -15428,13 +12708,6 @@ __metadata: languageName: node linkType: hard -"wildcard@npm:^2.0.0": - version: 2.0.0 - resolution: "wildcard@npm:2.0.0" - checksum: 10c0/4e22a45f4fa7f0f0d3e11860ee9ce9225246d41af6ec507e6a7d64c2692afb40d695b92c8f801deda8d3536007c2ec07981079fd0c8bb38b8521de072b33ab7a - languageName: node - linkType: hard - "window-size@npm:0.1.0": version: 0.1.0 resolution: "window-size@npm:0.1.0" @@ -15449,18 +12722,6 @@ __metadata: languageName: node linkType: hard -"worker-loader@npm:^3.0.8": - version: 3.0.8 - resolution: "worker-loader@npm:3.0.8" - dependencies: - loader-utils: "npm:^2.0.0" - schema-utils: "npm:^3.0.0" - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - checksum: 10c0/a81218a21efa05ab75265e9f6af9c2e27774aa8ca10737f849a094fa2b422ec14df82c35cbb285edb9f2d128b8038ae7dba6183c2f4fbdce20f216662df28244 - languageName: node - linkType: hard - "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": version: 7.0.0 resolution: "wrap-ansi@npm:7.0.0" From 13efe94e4ca6150223eb549f80e8442861d4d9a2 Mon Sep 17 00:00:00 2001 From: Tom Herold Date: Tue, 22 Jul 2025 16:47:32 +0200 Subject: [PATCH 11/23] added explanations to custom esbuild plugins --- tools/esbuild/protoPlugin.js | 4 ++++ tools/esbuild/workerPlugin.js | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/tools/esbuild/protoPlugin.js b/tools/esbuild/protoPlugin.js index 33820ed8fd..f0286838ed 100644 --- a/tools/esbuild/protoPlugin.js +++ b/tools/esbuild/protoPlugin.js @@ -1,3 +1,7 @@ +// esbuild plugin for bundling .proto files. +// This plugin resolves and loads .proto files using protobuf.js, +// converting them into a JSON representation that can be imported as a module. + const path = require('node:path'); const fs = require('node:fs'); const protobuf = require('protobufjs'); diff --git a/tools/esbuild/workerPlugin.js b/tools/esbuild/workerPlugin.js index 91805df0f8..53544fc29f 100644 --- a/tools/esbuild/workerPlugin.js +++ b/tools/esbuild/workerPlugin.js @@ -1,3 +1,7 @@ +// esbuild plugin for handling web workers. +// This plugin identifies .worker.ts files, creates separate esbuild bundles for each, +// and provides a virtual module that exports the URL to the bundled worker file. + const esbuild = require("esbuild"); const path = require("node:path"); From 3f94638cecba623167903caf3826c6f6e4d32e1e Mon Sep 17 00:00:00 2001 From: Tom Herold Date: Tue, 22 Jul 2025 16:54:48 +0200 Subject: [PATCH 12/23] fix typing --- frontend/javascripts/viewer/workers/comlink_wrapper.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/javascripts/viewer/workers/comlink_wrapper.ts b/frontend/javascripts/viewer/workers/comlink_wrapper.ts index 33b3cb2bb1..07d3769844 100644 --- a/frontend/javascripts/viewer/workers/comlink_wrapper.ts +++ b/frontend/javascripts/viewer/workers/comlink_wrapper.ts @@ -47,18 +47,18 @@ type UseCreateWorkerToUseMe = { readonly _wrapped: T; }; export function createWorker any>( - workerUrl: string, + workerFunction: UseCreateWorkerToUseMe, ): (...params: Parameters) => Promise> { if (wrap == null) { // In a node context (e.g., when executing tests), we don't create web workers which is why // we can simply return the input function here. - // @ts-ignore - return WorkerClass; + // @ts-expect-error + return workerFunction; } return wrap( // @ts-ignore - new Worker(workerUrl), + new Worker(workerFunction), ); } export function expose(fn: T): UseCreateWorkerToUseMe { From baed4232683863caec6068eaebe594f1da2ae0c6 Mon Sep 17 00:00:00 2001 From: Tom Herold Date: Wed, 23 Jul 2025 16:56:21 +0200 Subject: [PATCH 13/23] finally bundle everything correctly --- esbuild_config.js | 10 +++-- package.json | 1 + process_shim.js | 21 ----------- tools/esbuild/workerPlugin.js | 18 +++++++++ tools/proxy/proxy.js | 2 +- yarn.lock | 69 ++++++++++++++++++++++++++++++++++- 6 files changed, 95 insertions(+), 26 deletions(-) delete mode 100644 process_shim.js diff --git a/esbuild_config.js b/esbuild_config.js index cd79a0b1a8..f828756095 100755 --- a/esbuild_config.js +++ b/esbuild_config.js @@ -12,6 +12,8 @@ const browserslistToEsbuild = require("browserslist-to-esbuild"); const { lessLoader } = require("esbuild-plugin-less"); const copyPlugin = require("esbuild-plugin-copy").default; const polyfillNode = require("esbuild-plugin-polyfill-node").polyfillNode; +const esbuildPluginWorker = require("@chialab/esbuild-plugin-worker").default; + // Custom Plugins for Webknossos const { createWorkerPlugin } = require("./tools/esbuild/workerPlugin.js"); @@ -50,13 +52,16 @@ async function build(env = {}) { }, ], }), - createWorkerPlugin(buildOutDir, srcPath, target, polyfillNode, lessLoader, __dirname, env.logLevel), + createWorkerPlugin(buildOutDir, srcPath, target, polyfillNode, lessLoader, __dirname, env.logLevel), // Resolves import Worker from myFunc.worker; + esbuildPluginWorker() // Resolves new Worker(myWorker.js) ]; const buildOptions = { entryPoints: { main: path.resolve(srcPath, "main.tsx"), + // generateMeshBVHWorker: require.resolve("three-mesh-bvh/src/workers/generateMeshBVH.worker.js"), + }, bundle: true, outdir: buildOutDir, @@ -72,9 +77,8 @@ async function build(env = {}) { "process.env.NODE_ENV": JSON.stringify(isProduction ? "production" : "development"), "process.env.BABEL_ENV": JSON.stringify(process.env.BABEL_ENV || "development"), "process.browser": "true", - "global": "global" + "global": "window" }, - inject: [path.resolve(__dirname, "process_shim.js")], loader: { ".woff": "file", ".woff2": "file", diff --git a/package.json b/package.json index 1bfb7a411a..92f05c4f9a 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ }, "devDependencies": { "@biomejs/biome": "^1.9.4", + "@chialab/esbuild-plugin-worker": "^0.18.1", "@redux-saga/testing-utils": "^1.1.5", "@shaderfrog/glsl-parser": "^0.3.0", "@types/color-hash": "^1.0.2", diff --git a/process_shim.js b/process_shim.js deleted file mode 100644 index ba6696abb3..0000000000 --- a/process_shim.js +++ /dev/null @@ -1,21 +0,0 @@ -// process-shim.js -// This file provides the process global that some modules expect -import process from 'process/browser'; - -if (typeof global === 'undefined') { - window.global = window; -} - -// Make it available globally -if (typeof globalThis !== 'undefined') { - globalThis.process = process; -} else if (typeof window !== 'undefined') { - window.process = process; -} else if (typeof global !== 'undefined') { - global.process = process; -} - - -// Also provide a fallback for when process is accessed directly -export { process }; -export default process; \ No newline at end of file diff --git a/tools/esbuild/workerPlugin.js b/tools/esbuild/workerPlugin.js index 53544fc29f..e70d047a29 100644 --- a/tools/esbuild/workerPlugin.js +++ b/tools/esbuild/workerPlugin.js @@ -1,3 +1,21 @@ +/** + * @summary Custom esbuild plugin for bundling web workers. + * @description + * This plugin finds files ending with the `.worker.ts` suffix, bundles each into a + * separate IIFE file, and provides the URL to the bundled worker script to the main + * application. + * + * It works in three stages: + * 1. `onResolve` intercepts imports for `.worker` files and registers them. + * 2. `onLoad` replaces the import with a URL string pointing to the future worker bundle. + * 3. `onEnd` runs a separate esbuild process for each registered worker to create the + * final bundle. + * + * @example + * // This allows for a clean import of worker URLs: + * import workerUrl from './my.worker'; + * const worker = new Worker(workerUrl); + */ // esbuild plugin for handling web workers. // This plugin identifies .worker.ts files, creates separate esbuild bundles for each, // and provides a virtual module that exports the URL to the bundled worker file. diff --git a/tools/proxy/proxy.js b/tools/proxy/proxy.js index 994c8af4a0..728535da1d 100644 --- a/tools/proxy/proxy.js +++ b/tools/proxy/proxy.js @@ -88,7 +88,7 @@ for (const [key, proc] of Object.entries(processes).filter((x) => x[1] !== null) process.on("SIGTERM", shutdown); process.on("SIGINT", shutdown); -proxy.on("error", (err, req, res) => { +proxy.on("error", (err, _req, res) => { console.error(loggingPrefix, "Sending Bad gateway due to the following error: ", err); res.writeHead(503, { "Content-Type": "text/html" }); res.end(` diff --git a/yarn.lock b/yarn.lock index 105cea30e2..697cb9ed41 100644 --- a/yarn.lock +++ b/yarn.lock @@ -524,6 +524,54 @@ __metadata: languageName: node linkType: hard +"@chialab/esbuild-plugin-meta-url@npm:^0.18.2": + version: 0.18.2 + resolution: "@chialab/esbuild-plugin-meta-url@npm:0.18.2" + dependencies: + "@chialab/esbuild-rna": "npm:^0.18.1" + "@chialab/estransform": "npm:^0.18.1" + mime-types: "npm:^2.1.35" + checksum: 10c0/4dec36074bb6d58e2b1ff52a8cfd5a098fd49296f73a23c80f427e97c64d81fca90d42cdd094ef2068b0c49529d0c4aecc34ef38cce5680f1454999252712655 + languageName: node + linkType: hard + +"@chialab/esbuild-plugin-worker@npm:^0.18.1": + version: 0.18.1 + resolution: "@chialab/esbuild-plugin-worker@npm:0.18.1" + dependencies: + "@chialab/esbuild-plugin-meta-url": "npm:^0.18.2" + "@chialab/esbuild-rna": "npm:^0.18.0" + "@chialab/estransform": "npm:^0.18.1" + checksum: 10c0/261f3854b70c3595c5e1f51ad465db72a2f5d64044c484e0504d09eb7eb9f695d3c91a34c4add5f721667abf493bf0ec9b34778e89cbadc86dfe11763945206d + languageName: node + linkType: hard + +"@chialab/esbuild-rna@npm:^0.18.0, @chialab/esbuild-rna@npm:^0.18.1": + version: 0.18.2 + resolution: "@chialab/esbuild-rna@npm:0.18.2" + dependencies: + "@chialab/estransform": "npm:^0.18.0" + "@chialab/node-resolve": "npm:^0.18.0" + checksum: 10c0/ed1e542b85b121b02fa6fd9a554c7306d96ffd08e29905fa7959acd0011e9fba7c70702f4dee2e32d3a9b7b886767d319bb7cd6909ee765c364f828348329884 + languageName: node + linkType: hard + +"@chialab/estransform@npm:^0.18.0, @chialab/estransform@npm:^0.18.1": + version: 0.18.1 + resolution: "@chialab/estransform@npm:0.18.1" + dependencies: + "@parcel/source-map": "npm:^2.0.0" + checksum: 10c0/0e58a740a44de0918a413e6ef85061a8c2e87d26d5ba3e9e819bf08636fd9630da78caec318fa95e66b1ad1f8aa7ea4e1f00e1b2d8d0720f2837d8eff3e6f63c + languageName: node + linkType: hard + +"@chialab/node-resolve@npm:^0.18.0": + version: 0.18.0 + resolution: "@chialab/node-resolve@npm:0.18.0" + checksum: 10c0/99ba3e219de064d0fb97079e3f715eae088f1b203825bf6a4ecb7c3bfc03db1dd6509a3e6d2c130d370200e29a5e2d43cde44ca3324377d4cad04d38582d1769 + languageName: node + linkType: hard + "@csstools/color-helpers@npm:^5.0.2": version: 5.0.2 resolution: "@csstools/color-helpers@npm:5.0.2" @@ -1664,6 +1712,15 @@ __metadata: languageName: node linkType: hard +"@parcel/source-map@npm:^2.0.0": + version: 2.1.1 + resolution: "@parcel/source-map@npm:2.1.1" + dependencies: + detect-libc: "npm:^1.0.3" + checksum: 10c0/cea8450e152666be413556f0d100f125e81646bffc497e7c792bd9fc5067d052f1a008c8404ce1cd3a587d58b9ef57207ada89149cf2c705e71b1978308045f6 + languageName: node + linkType: hard + "@pkgjs/parseargs@npm:^0.11.0": version: 0.11.0 resolution: "@pkgjs/parseargs@npm:0.11.0" @@ -4636,6 +4693,15 @@ __metadata: languageName: node linkType: hard +"detect-libc@npm:^1.0.3": + version: 1.0.3 + resolution: "detect-libc@npm:1.0.3" + bin: + detect-libc: ./bin/detect-libc.js + checksum: 10c0/4da0deae9f69e13bc37a0902d78bf7169480004b1fed3c19722d56cff578d16f0e11633b7fbf5fb6249181236c72e90024cbd68f0b9558ae06e281f47326d50d + languageName: node + linkType: hard + "devtools-protocol@npm:0.0.1107588": version: 0.0.1107588 resolution: "devtools-protocol@npm:0.0.1107588" @@ -8044,7 +8110,7 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:^2.1.12, mime-types@npm:~2.1.19": +"mime-types@npm:^2.1.12, mime-types@npm:^2.1.35, mime-types@npm:~2.1.19": version: 2.1.35 resolution: "mime-types@npm:2.1.35" dependencies: @@ -12500,6 +12566,7 @@ __metadata: "@ant-design/colors": "npm:^7.0.0" "@ant-design/icons": "npm:^5.5.0" "@biomejs/biome": "npm:^1.9.4" + "@chialab/esbuild-plugin-worker": "npm:^0.18.1" "@dnd-kit/core": "npm:^6.1.0" "@dnd-kit/sortable": "npm:^8.0.0" "@fortawesome/fontawesome-free": "npm:^5.15.4" From 50e792cd0d73c2090c456274eed133275c6d64ae Mon Sep 17 00:00:00 2001 From: Tom Herold Date: Wed, 23 Jul 2025 16:56:21 +0200 Subject: [PATCH 14/23] cleanup and comments --- .github/workflows/build_test_deploy.yml | 2 +- app/views/main.scala.html | 7 -- esbuild_config.js | 10 ++- frontend/javascripts/libs/DRACOLoader.ts | 1 - .../viewer/model/helpers/reduce_reducers.ts | 2 +- .../viewer/workers/comlink_wrapper.ts | 11 ++- frontend/javascripts/viewer/workers/readme.md | 2 +- package.json | 1 + process_shim.js | 21 ------ tools/esbuild/workerPlugin.js | 18 +++++ tools/proxy/proxy.js | 2 +- yarn.lock | 69 ++++++++++++++++++- 12 files changed, 107 insertions(+), 39 deletions(-) delete mode 100644 process_shim.js diff --git a/.github/workflows/build_test_deploy.yml b/.github/workflows/build_test_deploy.yml index bf891f17d6..6e871516b4 100644 --- a/.github/workflows/build_test_deploy.yml +++ b/.github/workflows/build_test_deploy.yml @@ -188,7 +188,7 @@ jobs: env: WK_VERSION: ${{ github.run_id }} - - name: Build webknossos (webpack) + - name: Build webknossos (esbuild) run: yarn build - name: Build webknossos (sbt) diff --git a/app/views/main.scala.html b/app/views/main.scala.html index c51ab92edf..1dd2b085eb 100755 --- a/app/views/main.scala.html +++ b/app/views/main.scala.html @@ -27,12 +27,6 @@ } - - diff --git a/esbuild_config.js b/esbuild_config.js index cd79a0b1a8..f828756095 100755 --- a/esbuild_config.js +++ b/esbuild_config.js @@ -12,6 +12,8 @@ const browserslistToEsbuild = require("browserslist-to-esbuild"); const { lessLoader } = require("esbuild-plugin-less"); const copyPlugin = require("esbuild-plugin-copy").default; const polyfillNode = require("esbuild-plugin-polyfill-node").polyfillNode; +const esbuildPluginWorker = require("@chialab/esbuild-plugin-worker").default; + // Custom Plugins for Webknossos const { createWorkerPlugin } = require("./tools/esbuild/workerPlugin.js"); @@ -50,13 +52,16 @@ async function build(env = {}) { }, ], }), - createWorkerPlugin(buildOutDir, srcPath, target, polyfillNode, lessLoader, __dirname, env.logLevel), + createWorkerPlugin(buildOutDir, srcPath, target, polyfillNode, lessLoader, __dirname, env.logLevel), // Resolves import Worker from myFunc.worker; + esbuildPluginWorker() // Resolves new Worker(myWorker.js) ]; const buildOptions = { entryPoints: { main: path.resolve(srcPath, "main.tsx"), + // generateMeshBVHWorker: require.resolve("three-mesh-bvh/src/workers/generateMeshBVH.worker.js"), + }, bundle: true, outdir: buildOutDir, @@ -72,9 +77,8 @@ async function build(env = {}) { "process.env.NODE_ENV": JSON.stringify(isProduction ? "production" : "development"), "process.env.BABEL_ENV": JSON.stringify(process.env.BABEL_ENV || "development"), "process.browser": "true", - "global": "global" + "global": "window" }, - inject: [path.resolve(__dirname, "process_shim.js")], loader: { ".woff": "file", ".woff2": "file", diff --git a/frontend/javascripts/libs/DRACOLoader.ts b/frontend/javascripts/libs/DRACOLoader.ts index 03448a2dc6..b112a14a29 100644 --- a/frontend/javascripts/libs/DRACOLoader.ts +++ b/frontend/javascripts/libs/DRACOLoader.ts @@ -237,7 +237,6 @@ class DRACOLoader extends Loader { _getWorker(taskID, taskCost) { return this._initDecoder().then(() => { if (this.workerPool.length < this.workerLimit) { - // See https://webpack.js.org/guides/web-workers/ const worker = new Worker(new URL("./DRACOWorker.worker.js", import.meta.url)); worker._callbacks = {}; diff --git a/frontend/javascripts/viewer/model/helpers/reduce_reducers.ts b/frontend/javascripts/viewer/model/helpers/reduce_reducers.ts index 3cae8341f1..744dd1ded3 100644 --- a/frontend/javascripts/viewer/model/helpers/reduce_reducers.ts +++ b/frontend/javascripts/viewer/model/helpers/reduce_reducers.ts @@ -2,7 +2,7 @@ import deepFreezeLib from "deep-freeze"; import _ from "lodash"; // Do not use the deep-freeze library in production -// process.env.NODE_ENV is being substituted by webpack +// process.env.NODE_ENV is being substituted by esbuild let deepFreeze = deepFreezeLib; if (process.env.NODE_ENV === "production") deepFreeze = _.identity; diff --git a/frontend/javascripts/viewer/workers/comlink_wrapper.ts b/frontend/javascripts/viewer/workers/comlink_wrapper.ts index 07d3769844..0820da9fd1 100644 --- a/frontend/javascripts/viewer/workers/comlink_wrapper.ts +++ b/frontend/javascripts/viewer/workers/comlink_wrapper.ts @@ -3,6 +3,14 @@ import { throwTransferHandlerWithResponseSupport, } from "viewer/workers/headers_transfer_handler"; +// Worker modules export bare functions and typically instantiated with new Worker("./path/to/my/worker.js"); + +// JS bundlers (like esbuild) try to match these calls and generate new entry points/bundles for the worker code. +// However, our esbuild pipeline is a bit different: +// 1) We import our worker code with regular import statements, e.g. import worker from './my.worker'; +// 2) We consolidated all worker/Comlink stuff into this wrapper, calling new Worker(workerFunction). Since workerFunction is a variable it is usually not identified by esbuild as it matches not pattern. +// Similar to the webpack worker-loader, we have a custom esbuild plugin to load worker codes. See tools/esbuild/workerPlugin.js. + function importComlink() { const isNodeContext = typeof process !== "undefined" && process.title !== "browser"; @@ -36,8 +44,7 @@ const { wrap, transferHandlers, _expose, _transfer } = importComlink(); transferHandlers.set("requestOptions", requestOptionsTransferHandler); // Overwrite the default throw handler with ours that supports responses. transferHandlers.set("throw", throwTransferHandlerWithResponseSupport); -// Worker modules export bare functions, but webpack turns these into Worker classes which need to be -// instantiated first. + // To ensure that code always executes the necessary instantiation, we cheat a bit with the typing in the following code. // In reality, `expose` receives a function and returns it again. However, we tell flow that it wraps the function, so that // unwrapping becomes necessary. diff --git a/frontend/javascripts/viewer/workers/readme.md b/frontend/javascripts/viewer/workers/readme.md index ca66b0ae78..188b1be483 100644 --- a/frontend/javascripts/viewer/workers/readme.md +++ b/frontend/javascripts/viewer/workers/readme.md @@ -28,6 +28,6 @@ See `compress.worker.js` for an example. - Accessing global state (e.g., the Store) is not directly possible from web workers, since they have their own execution context. Pass necessary information into web workers via parameters. - By default, parameters and return values are either structurally cloned or transferred (if they support it) to/from the web worker. Copying is potentially performance-intensive and also won't propagate any mutations across the main-thread/webworker border. If objects are transferable (e.g., for ArrayBuffers, but not TypedArrays), they are moved to the new context, which means that they cannot be accessed in the old thread, anymore. In both cases, care has to be taken. In general, web workers should only be responsible for a very small (but cpu intensive) task with a bare minimum of dependencies. - Not all objects can be passed between main thread and web workers (e.g., Header objects). For these cases, you have to implement and register a specific transfer handler for the object type. See `headers_transfer_handler.js` as an example. -- Web worker files can import NPM modules and also modules from within this code base, but beware that the execution context between the main thread and web workers is strictly isolated. Webpack will create a separate JS file for each web worker into which all imported code is compiled. +- Web worker files can import NPM modules and also modules from within this code base, but beware that the execution context between the main thread and web workers is strictly isolated. esbuild will create a separate JS file for each web worker into which all imported code is compiled. Learn more about the Comlink module we use [here](https://github.com/GoogleChromeLabs/comlink). diff --git a/package.json b/package.json index 1bfb7a411a..92f05c4f9a 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ }, "devDependencies": { "@biomejs/biome": "^1.9.4", + "@chialab/esbuild-plugin-worker": "^0.18.1", "@redux-saga/testing-utils": "^1.1.5", "@shaderfrog/glsl-parser": "^0.3.0", "@types/color-hash": "^1.0.2", diff --git a/process_shim.js b/process_shim.js deleted file mode 100644 index ba6696abb3..0000000000 --- a/process_shim.js +++ /dev/null @@ -1,21 +0,0 @@ -// process-shim.js -// This file provides the process global that some modules expect -import process from 'process/browser'; - -if (typeof global === 'undefined') { - window.global = window; -} - -// Make it available globally -if (typeof globalThis !== 'undefined') { - globalThis.process = process; -} else if (typeof window !== 'undefined') { - window.process = process; -} else if (typeof global !== 'undefined') { - global.process = process; -} - - -// Also provide a fallback for when process is accessed directly -export { process }; -export default process; \ No newline at end of file diff --git a/tools/esbuild/workerPlugin.js b/tools/esbuild/workerPlugin.js index 53544fc29f..e70d047a29 100644 --- a/tools/esbuild/workerPlugin.js +++ b/tools/esbuild/workerPlugin.js @@ -1,3 +1,21 @@ +/** + * @summary Custom esbuild plugin for bundling web workers. + * @description + * This plugin finds files ending with the `.worker.ts` suffix, bundles each into a + * separate IIFE file, and provides the URL to the bundled worker script to the main + * application. + * + * It works in three stages: + * 1. `onResolve` intercepts imports for `.worker` files and registers them. + * 2. `onLoad` replaces the import with a URL string pointing to the future worker bundle. + * 3. `onEnd` runs a separate esbuild process for each registered worker to create the + * final bundle. + * + * @example + * // This allows for a clean import of worker URLs: + * import workerUrl from './my.worker'; + * const worker = new Worker(workerUrl); + */ // esbuild plugin for handling web workers. // This plugin identifies .worker.ts files, creates separate esbuild bundles for each, // and provides a virtual module that exports the URL to the bundled worker file. diff --git a/tools/proxy/proxy.js b/tools/proxy/proxy.js index 994c8af4a0..728535da1d 100644 --- a/tools/proxy/proxy.js +++ b/tools/proxy/proxy.js @@ -88,7 +88,7 @@ for (const [key, proc] of Object.entries(processes).filter((x) => x[1] !== null) process.on("SIGTERM", shutdown); process.on("SIGINT", shutdown); -proxy.on("error", (err, req, res) => { +proxy.on("error", (err, _req, res) => { console.error(loggingPrefix, "Sending Bad gateway due to the following error: ", err); res.writeHead(503, { "Content-Type": "text/html" }); res.end(` diff --git a/yarn.lock b/yarn.lock index 105cea30e2..697cb9ed41 100644 --- a/yarn.lock +++ b/yarn.lock @@ -524,6 +524,54 @@ __metadata: languageName: node linkType: hard +"@chialab/esbuild-plugin-meta-url@npm:^0.18.2": + version: 0.18.2 + resolution: "@chialab/esbuild-plugin-meta-url@npm:0.18.2" + dependencies: + "@chialab/esbuild-rna": "npm:^0.18.1" + "@chialab/estransform": "npm:^0.18.1" + mime-types: "npm:^2.1.35" + checksum: 10c0/4dec36074bb6d58e2b1ff52a8cfd5a098fd49296f73a23c80f427e97c64d81fca90d42cdd094ef2068b0c49529d0c4aecc34ef38cce5680f1454999252712655 + languageName: node + linkType: hard + +"@chialab/esbuild-plugin-worker@npm:^0.18.1": + version: 0.18.1 + resolution: "@chialab/esbuild-plugin-worker@npm:0.18.1" + dependencies: + "@chialab/esbuild-plugin-meta-url": "npm:^0.18.2" + "@chialab/esbuild-rna": "npm:^0.18.0" + "@chialab/estransform": "npm:^0.18.1" + checksum: 10c0/261f3854b70c3595c5e1f51ad465db72a2f5d64044c484e0504d09eb7eb9f695d3c91a34c4add5f721667abf493bf0ec9b34778e89cbadc86dfe11763945206d + languageName: node + linkType: hard + +"@chialab/esbuild-rna@npm:^0.18.0, @chialab/esbuild-rna@npm:^0.18.1": + version: 0.18.2 + resolution: "@chialab/esbuild-rna@npm:0.18.2" + dependencies: + "@chialab/estransform": "npm:^0.18.0" + "@chialab/node-resolve": "npm:^0.18.0" + checksum: 10c0/ed1e542b85b121b02fa6fd9a554c7306d96ffd08e29905fa7959acd0011e9fba7c70702f4dee2e32d3a9b7b886767d319bb7cd6909ee765c364f828348329884 + languageName: node + linkType: hard + +"@chialab/estransform@npm:^0.18.0, @chialab/estransform@npm:^0.18.1": + version: 0.18.1 + resolution: "@chialab/estransform@npm:0.18.1" + dependencies: + "@parcel/source-map": "npm:^2.0.0" + checksum: 10c0/0e58a740a44de0918a413e6ef85061a8c2e87d26d5ba3e9e819bf08636fd9630da78caec318fa95e66b1ad1f8aa7ea4e1f00e1b2d8d0720f2837d8eff3e6f63c + languageName: node + linkType: hard + +"@chialab/node-resolve@npm:^0.18.0": + version: 0.18.0 + resolution: "@chialab/node-resolve@npm:0.18.0" + checksum: 10c0/99ba3e219de064d0fb97079e3f715eae088f1b203825bf6a4ecb7c3bfc03db1dd6509a3e6d2c130d370200e29a5e2d43cde44ca3324377d4cad04d38582d1769 + languageName: node + linkType: hard + "@csstools/color-helpers@npm:^5.0.2": version: 5.0.2 resolution: "@csstools/color-helpers@npm:5.0.2" @@ -1664,6 +1712,15 @@ __metadata: languageName: node linkType: hard +"@parcel/source-map@npm:^2.0.0": + version: 2.1.1 + resolution: "@parcel/source-map@npm:2.1.1" + dependencies: + detect-libc: "npm:^1.0.3" + checksum: 10c0/cea8450e152666be413556f0d100f125e81646bffc497e7c792bd9fc5067d052f1a008c8404ce1cd3a587d58b9ef57207ada89149cf2c705e71b1978308045f6 + languageName: node + linkType: hard + "@pkgjs/parseargs@npm:^0.11.0": version: 0.11.0 resolution: "@pkgjs/parseargs@npm:0.11.0" @@ -4636,6 +4693,15 @@ __metadata: languageName: node linkType: hard +"detect-libc@npm:^1.0.3": + version: 1.0.3 + resolution: "detect-libc@npm:1.0.3" + bin: + detect-libc: ./bin/detect-libc.js + checksum: 10c0/4da0deae9f69e13bc37a0902d78bf7169480004b1fed3c19722d56cff578d16f0e11633b7fbf5fb6249181236c72e90024cbd68f0b9558ae06e281f47326d50d + languageName: node + linkType: hard + "devtools-protocol@npm:0.0.1107588": version: 0.0.1107588 resolution: "devtools-protocol@npm:0.0.1107588" @@ -8044,7 +8110,7 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:^2.1.12, mime-types@npm:~2.1.19": +"mime-types@npm:^2.1.12, mime-types@npm:^2.1.35, mime-types@npm:~2.1.19": version: 2.1.35 resolution: "mime-types@npm:2.1.35" dependencies: @@ -12500,6 +12566,7 @@ __metadata: "@ant-design/colors": "npm:^7.0.0" "@ant-design/icons": "npm:^5.5.0" "@biomejs/biome": "npm:^1.9.4" + "@chialab/esbuild-plugin-worker": "npm:^0.18.1" "@dnd-kit/core": "npm:^6.1.0" "@dnd-kit/sortable": "npm:^8.0.0" "@fortawesome/fontawesome-free": "npm:^5.15.4" From a9f802b69f3f085bbe03104d3c98394a7392eeb7 Mon Sep 17 00:00:00 2001 From: Tom Herold Date: Fri, 8 Aug 2025 12:26:22 +0200 Subject: [PATCH 15/23] improvements --- esbuild_config.js | 2 +- tools/esbuild/workerPlugin.js | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/esbuild_config.js b/esbuild_config.js index f828756095..bcbe0d5071 100755 --- a/esbuild_config.js +++ b/esbuild_config.js @@ -52,7 +52,7 @@ async function build(env = {}) { }, ], }), - createWorkerPlugin(buildOutDir, srcPath, target, polyfillNode, lessLoader, __dirname, env.logLevel), // Resolves import Worker from myFunc.worker; + createWorkerPlugin(buildOutDir, srcPath, target, __dirname, env.logLevel, isProduction), // Resolves import Worker from myFunc.worker; esbuildPluginWorker() // Resolves new Worker(myWorker.js) ]; diff --git a/tools/esbuild/workerPlugin.js b/tools/esbuild/workerPlugin.js index e70d047a29..7c63b107a8 100644 --- a/tools/esbuild/workerPlugin.js +++ b/tools/esbuild/workerPlugin.js @@ -16,18 +16,20 @@ * import workerUrl from './my.worker'; * const worker = new Worker(workerUrl); */ -// esbuild plugin for handling web workers. -// This plugin identifies .worker.ts files, creates separate esbuild bundles for each, -// and provides a virtual module that exports the URL to the bundled worker file. const esbuild = require("esbuild"); const path = require("node:path"); +// Community plugins +const { lessLoader } = require("esbuild-plugin-less"); +const polyfillNode = require("esbuild-plugin-polyfill-node").polyfillNode; +// const wasmLoader = require("esbuild-plugin-wasm").default; +const {wasmPlugin} = require("./wasmPlugin.js"); + // Custom worker plugin that creates separate bundles for .worker.ts files -const createWorkerPlugin = (buildOutDir, srcPath, target, polyfillNode, lessLoader, projectRoot, logLevel) => ({ +const createWorkerPlugin = (buildOutDir, srcPath, target, projectRoot, logLevel, isProduction) => ({ name: "worker", setup(build) { - const isProduction = process.env.NODE_ENV === "production"; const workerEntries = new Map(); // Collect all worker files during the resolve phase @@ -79,16 +81,14 @@ const createWorkerPlugin = (buildOutDir, srcPath, target, polyfillNode, lessLoad url: require.resolve("url/"), }, external: [], // Bundle everything for workers - // Don"t inject process-shim in workers - inject: [], resolveExtensions: [".ts", ".tsx", ".js", ".json"], plugins: [ polyfillNode(), + wasmPlugin(), lessLoader({ javascriptEnabled: true, }), ], - loader: {".wasm": "file"} }); if (logLevel !== "silent") { From 6bde645261f0e3e02b718d2f862532de8cd9f4b9 Mon Sep 17 00:00:00 2001 From: Tom Herold Date: Fri, 8 Aug 2025 13:17:08 +0200 Subject: [PATCH 16/23] add wasm support --- esbuild_config.js | 3 +++ frontend/javascripts/viewer/workers/comlink_wrapper.ts | 2 +- package.json | 3 ++- tools/esbuild/workerPlugin.js | 9 ++++----- yarn.lock | 8 ++++++++ 5 files changed, 18 insertions(+), 7 deletions(-) diff --git a/esbuild_config.js b/esbuild_config.js index bcbe0d5071..510ba6c2ab 100755 --- a/esbuild_config.js +++ b/esbuild_config.js @@ -13,6 +13,7 @@ const { lessLoader } = require("esbuild-plugin-less"); const copyPlugin = require("esbuild-plugin-copy").default; const polyfillNode = require("esbuild-plugin-polyfill-node").polyfillNode; const esbuildPluginWorker = require("@chialab/esbuild-plugin-worker").default; +const { wasmLoader } = require("esbuild-plugin-wasm"); // Custom Plugins for Webknossos @@ -41,6 +42,8 @@ async function build(env = {}) { const plugins = [ polyfillNode(), createProtoPlugin(protoPath), + // Use community plugin for ESM-compatible WASM imports + wasmLoader(), lessLoader({ javascriptEnabled: true, }), diff --git a/frontend/javascripts/viewer/workers/comlink_wrapper.ts b/frontend/javascripts/viewer/workers/comlink_wrapper.ts index 0820da9fd1..56c0f1637a 100644 --- a/frontend/javascripts/viewer/workers/comlink_wrapper.ts +++ b/frontend/javascripts/viewer/workers/comlink_wrapper.ts @@ -65,7 +65,7 @@ export function createWorker any>( return wrap( // @ts-ignore - new Worker(workerFunction), + new Worker(workerFunction, { type: "module" }), ); } export function expose(fn: T): UseCreateWorkerToUseMe { diff --git a/package.json b/package.json index 4498bf6cd8..01f3a13b66 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,7 @@ "esbuild-plugin-copy": "^2.1.1", "esbuild-plugin-less": "^1.3.24", "esbuild-plugin-polyfill-node": "^0.3.0", + "esbuild-plugin-wasm": "^1.1.0", "espree": "^3.5.4", "husky": "^9.1.5", "jsdoc": "^3.5.5", @@ -193,4 +194,4 @@ "url-join": "^4.0.0" }, "packageManager": "yarn@4.9.2" -} \ No newline at end of file +} diff --git a/tools/esbuild/workerPlugin.js b/tools/esbuild/workerPlugin.js index 7c63b107a8..889b7e4c5d 100644 --- a/tools/esbuild/workerPlugin.js +++ b/tools/esbuild/workerPlugin.js @@ -23,8 +23,7 @@ const path = require("node:path"); // Community plugins const { lessLoader } = require("esbuild-plugin-less"); const polyfillNode = require("esbuild-plugin-polyfill-node").polyfillNode; -// const wasmLoader = require("esbuild-plugin-wasm").default; -const {wasmPlugin} = require("./wasmPlugin.js"); +const { wasmLoader } = require("esbuild-plugin-wasm"); // Custom worker plugin that creates separate bundles for .worker.ts files const createWorkerPlugin = (buildOutDir, srcPath, target, projectRoot, logLevel, isProduction) => ({ @@ -67,7 +66,7 @@ const createWorkerPlugin = (buildOutDir, srcPath, target, projectRoot, logLevel, await esbuild.build({ entryPoints: [workerPath], bundle: true, - format: "iife", + format: "esm", target: target, outfile: path.join(buildOutDir, workerOutputPath), minify: isProduction, @@ -81,10 +80,10 @@ const createWorkerPlugin = (buildOutDir, srcPath, target, projectRoot, logLevel, url: require.resolve("url/"), }, external: [], // Bundle everything for workers - resolveExtensions: [".ts", ".tsx", ".js", ".json"], + resolveExtensions: [".ts", ".tsx", ".js", ".json", ".wasm"], plugins: [ polyfillNode(), - wasmPlugin(), + wasmLoader(), lessLoader({ javascriptEnabled: true, }), diff --git a/yarn.lock b/yarn.lock index f63e9741f3..e310a9aba7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5072,6 +5072,13 @@ __metadata: languageName: node linkType: hard +"esbuild-plugin-wasm@npm:^1.1.0": + version: 1.1.0 + resolution: "esbuild-plugin-wasm@npm:1.1.0" + checksum: 10c0/b5e199773f42b8192194c2cb0440900ec152c193aa4ffe4802a81c02240f17603a070ca5e7a27257fbb205c5f4465d3a71f06913a2fecb9a3313a80eddcb9f53 + languageName: node + linkType: hard + "esbuild@npm:^0.25.0": version: 0.25.2 resolution: "esbuild@npm:0.25.2" @@ -12617,6 +12624,7 @@ __metadata: esbuild-plugin-copy: "npm:^2.1.1" esbuild-plugin-less: "npm:^1.3.24" esbuild-plugin-polyfill-node: "npm:^0.3.0" + esbuild-plugin-wasm: "npm:^1.1.0" espree: "npm:^3.5.4" file-saver: "npm:^2.0.1" flexlayout-react: "npm:0.7.15" From 2ed96541dc5c89fc67363203d4f69006908bd47f Mon Sep 17 00:00:00 2001 From: Tom Herold Date: Fri, 8 Aug 2025 13:27:04 +0200 Subject: [PATCH 17/23] DRY --- esbuild_config.js | 3 +- tools/esbuild/workerPlugin.js | 67 ++++++++++++++++------------------- 2 files changed, 32 insertions(+), 38 deletions(-) diff --git a/esbuild_config.js b/esbuild_config.js index 510ba6c2ab..1ab12cdc9c 100755 --- a/esbuild_config.js +++ b/esbuild_config.js @@ -55,7 +55,8 @@ async function build(env = {}) { }, ], }), - createWorkerPlugin(buildOutDir, srcPath, target, __dirname, env.logLevel, isProduction), // Resolves import Worker from myFunc.worker; + // DRY worker bundling: reuse main config defaults + createWorkerPlugin({ logLevel: env.logLevel }), // Resolves import Worker from myFunc.worker; esbuildPluginWorker() // Resolves new Worker(myWorker.js) ]; diff --git a/tools/esbuild/workerPlugin.js b/tools/esbuild/workerPlugin.js index 889b7e4c5d..7b50715aba 100644 --- a/tools/esbuild/workerPlugin.js +++ b/tools/esbuild/workerPlugin.js @@ -2,7 +2,7 @@ * @summary Custom esbuild plugin for bundling web workers. * @description * This plugin finds files ending with the `.worker.ts` suffix, bundles each into a - * separate IIFE file, and provides the URL to the bundled worker script to the main + * separate bundle file, and provides the URL to the bundled worker script to the main * application. * * It works in three stages: @@ -20,24 +20,29 @@ const esbuild = require("esbuild"); const path = require("node:path"); -// Community plugins -const { lessLoader } = require("esbuild-plugin-less"); -const polyfillNode = require("esbuild-plugin-polyfill-node").polyfillNode; -const { wasmLoader } = require("esbuild-plugin-wasm"); - // Custom worker plugin that creates separate bundles for .worker.ts files -const createWorkerPlugin = (buildOutDir, srcPath, target, projectRoot, logLevel, isProduction) => ({ - name: "worker", +// DRY: reuses the main esbuild config (initialOptions) and only overrides worker-specific bits +const createWorkerPlugin = ({ logLevel = "info" } = {}) => ({ + name: "wk-worker-bundler", setup(build) { const workerEntries = new Map(); + const initial = build.initialOptions || {}; + const absWorkingDir = initial.absWorkingDir || process.cwd(); + const outdir = initial.outdir || absWorkingDir; + const publicPathRaw = initial.publicPath || "/"; + const publicPath = publicPathRaw.endsWith("/") ? publicPathRaw : `${publicPathRaw}/`; + const srcRoot = path.resolve(absWorkingDir, "frontend/javascripts"); // Collect all worker files during the resolve phase build.onResolve({ filter: /\.worker$/ }, (args) => { - const workerPath = path.resolve(srcPath, args.path + ".ts"); - const workerName = path.basename(args.path, ".worker.ts"); - const workerOutputPath = `${workerName}.js`; + const isBare = !args.path.startsWith(".") && !path.isAbsolute(args.path); + const baseDir = isBare ? srcRoot : (args.resolveDir || absWorkingDir); + const resolvedWorkerPath = path.resolve(baseDir, `${args.path}.ts`); + // Maintain previous behavior: strip the .worker suffix in the output filename + const workerBaseName = path.basename(args.path, ".worker"); + const workerOutputPath = `${workerBaseName}.js`; - workerEntries.set(workerPath, workerOutputPath); + workerEntries.set(resolvedWorkerPath, workerOutputPath); // Return a virtual module that exports the worker URL return { @@ -48,8 +53,8 @@ const createWorkerPlugin = (buildOutDir, srcPath, target, projectRoot, logLevel, // Handle the virtual worker URL modules build.onLoad({ filter: /.*/, namespace: "worker-url" }, (args) => { - const workerName = path.basename(args.path, ".worker.ts"); - const workerUrl = `/assets/bundle/${workerName}.js`; + const workerBaseName = path.basename(args.path, ".worker"); + const workerUrl = `${publicPath}${workerBaseName}.js`; return { contents: `export default "${workerUrl}";`, @@ -63,31 +68,19 @@ const createWorkerPlugin = (buildOutDir, srcPath, target, projectRoot, logLevel, for (const [workerPath, workerOutputPath] of workerEntries) { try { + // Base on main build config and override worker-specific parts + const basePlugins = Array.isArray(initial.plugins) ? initial.plugins : []; + // Exclude any worker-related + const workerPlugins = basePlugins.filter((p) => p && typeof p.name === "string" && !/worker/i.test(p.name)); + await esbuild.build({ + ...initial, entryPoints: [workerPath], - bundle: true, - format: "esm", - target: target, - outfile: path.join(buildOutDir, workerOutputPath), - minify: isProduction, - sourcemap: isProduction ? "external" : "inline", - define: { - "process.env.NODE_ENV": JSON.stringify(isProduction ? "production" : "development"), - }, - alias: { - react: path.resolve(projectRoot, "node_modules/react"), - three: path.resolve(projectRoot, "node_modules/three/src/Three.js"), - url: require.resolve("url/"), - }, - external: [], // Bundle everything for workers - resolveExtensions: [".ts", ".tsx", ".js", ".json", ".wasm"], - plugins: [ - polyfillNode(), - wasmLoader(), - lessLoader({ - javascriptEnabled: true, - }), - ], + outfile: path.join(outdir, workerOutputPath), + outdir: undefined, // ensure single-file output via outfile + splitting: false, // keep worker as a single file + external: [], + plugins: workerPlugins, }); if (logLevel !== "silent") { From 1cb89c54cfda19386840d0a201c9ea7d2fd169ed Mon Sep 17 00:00:00 2001 From: Tom Herold Date: Fri, 8 Aug 2025 13:41:31 +0200 Subject: [PATCH 18/23] cleanup --- esbuild_config.js | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/esbuild_config.js b/esbuild_config.js index 1ab12cdc9c..5445662195 100755 --- a/esbuild_config.js +++ b/esbuild_config.js @@ -15,7 +15,6 @@ const polyfillNode = require("esbuild-plugin-polyfill-node").polyfillNode; const esbuildPluginWorker = require("@chialab/esbuild-plugin-worker").default; const { wasmLoader } = require("esbuild-plugin-wasm"); - // Custom Plugins for Webknossos const { createWorkerPlugin } = require("./tools/esbuild/workerPlugin.js"); const { createProtoPlugin } = require("./tools/esbuild/protoPlugin.js"); @@ -38,11 +37,9 @@ async function build(env = {}) { ? fs.mkdtempSync(path.join(os.tmpdir(), "esbuild-dev")) : outputPath; - // Base plugins const plugins = [ polyfillNode(), createProtoPlugin(protoPath), - // Use community plugin for ESM-compatible WASM imports wasmLoader(), lessLoader({ javascriptEnabled: true, @@ -55,7 +52,6 @@ async function build(env = {}) { }, ], }), - // DRY worker bundling: reuse main config defaults createWorkerPlugin({ logLevel: env.logLevel }), // Resolves import Worker from myFunc.worker; esbuildPluginWorker() // Resolves new Worker(myWorker.js) ]; @@ -64,8 +60,6 @@ async function build(env = {}) { const buildOptions = { entryPoints: { main: path.resolve(srcPath, "main.tsx"), - // generateMeshBVHWorker: require.resolve("three-mesh-bvh/src/workers/generateMeshBVH.worker.js"), - }, bundle: true, outdir: buildOutDir, @@ -81,7 +75,7 @@ async function build(env = {}) { "process.env.NODE_ENV": JSON.stringify(isProduction ? "production" : "development"), "process.env.BABEL_ENV": JSON.stringify(process.env.BABEL_ENV || "development"), "process.browser": "true", - "global": "window" + "global": "globalThis" }, loader: { ".woff": "file", @@ -91,18 +85,25 @@ async function build(env = {}) { ".svg": "file", ".png": "file", ".jpg": "file", - ".wasm": "file", + ".jpeg": "file", + ".gif": "file", + ".webp": "file", + ".ico": "file", + ".mp4": "file", + ".webm": "file", + ".ogg": "file", }, resolveExtensions: [".ts", ".tsx", ".js", ".json", ".proto", ".wasm"], alias: { react: path.resolve(__dirname, "node_modules/react"), three: path.resolve(__dirname, "node_modules/three/src/Three.js"), - url: require.resolve("url/"), }, plugins: plugins, - external: ["/assets/images/*", "fs", "path", "util", "module"], + external: ["/assets/images/*", "fs"], + logLevel: env.logLevel || "info", + legalComments: isProduction ? "inline" : "none", publicPath: "/assets/bundle/", - metafile: !isWatch, // Don"t generate metafile for dev server + metafile: !isWatch, // Don't generate metafile for dev server logOverride: { "direct-eval": "silent", }, From 16d681a0ab5ecea3b75775e102a1b7b43be1366f Mon Sep 17 00:00:00 2001 From: Tom Herold Date: Fri, 8 Aug 2025 13:49:02 +0200 Subject: [PATCH 19/23] apply feedback --- esbuild_config.js | 1 - 1 file changed, 1 deletion(-) diff --git a/esbuild_config.js b/esbuild_config.js index 5445662195..e73ee8edcc 100755 --- a/esbuild_config.js +++ b/esbuild_config.js @@ -96,7 +96,6 @@ async function build(env = {}) { resolveExtensions: [".ts", ".tsx", ".js", ".json", ".proto", ".wasm"], alias: { react: path.resolve(__dirname, "node_modules/react"), - three: path.resolve(__dirname, "node_modules/three/src/Three.js"), }, plugins: plugins, external: ["/assets/images/*", "fs"], From ba39e0296d453131970aed9a1247b0c9cf01683d Mon Sep 17 00:00:00 2001 From: Tom Herold Date: Fri, 8 Aug 2025 15:56:37 +0200 Subject: [PATCH 20/23] Update tools/esbuild/protoPlugin.js Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- tools/esbuild/protoPlugin.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/esbuild/protoPlugin.js b/tools/esbuild/protoPlugin.js index f0286838ed..ab7c3d3c55 100644 --- a/tools/esbuild/protoPlugin.js +++ b/tools/esbuild/protoPlugin.js @@ -28,7 +28,7 @@ const createProtoPlugin = (protoPath) => ({ } return { - errors: [{ text: "Could not resolve .proto file: ${args.path}" }], + errors: [{ text: `Could not resolve .proto file: ${args.path}` }], }; }); From 2a1e6fbebc863491cd6ee13d136c29e88a80d52a Mon Sep 17 00:00:00 2001 From: Tom Herold Date: Thu, 14 Aug 2025 15:10:33 +0200 Subject: [PATCH 21/23] Use caching for worker plugin --- tools/esbuild/workerPlugin.js | 107 +++++++++++++++++++++++----------- 1 file changed, 74 insertions(+), 33 deletions(-) diff --git a/tools/esbuild/workerPlugin.js b/tools/esbuild/workerPlugin.js index 7b50715aba..eee60d0f12 100644 --- a/tools/esbuild/workerPlugin.js +++ b/tools/esbuild/workerPlugin.js @@ -11,6 +11,9 @@ * 3. `onEnd` runs a separate esbuild process for each registered worker to create the * final bundle. * + * It uses `esbuild.context` to cache build information and avoid rebuilding workers + * that have not changed, which is especially useful in watch mode. + * * @example * // This allows for a clean import of worker URLs: * import workerUrl from './my.worker'; @@ -26,36 +29,42 @@ const createWorkerPlugin = ({ logLevel = "info" } = {}) => ({ name: "wk-worker-bundler", setup(build) { const workerEntries = new Map(); + const workerContexts = new Map(); const initial = build.initialOptions || {}; const absWorkingDir = initial.absWorkingDir || process.cwd(); const outdir = initial.outdir || absWorkingDir; const publicPathRaw = initial.publicPath || "/"; const publicPath = publicPathRaw.endsWith("/") ? publicPathRaw : `${publicPathRaw}/`; const srcRoot = path.resolve(absWorkingDir, "frontend/javascripts"); - + + // Reset worker entries at the beginning of each build + build.onStart(() => { + workerEntries.clear(); + }); + // Collect all worker files during the resolve phase build.onResolve({ filter: /\.worker$/ }, (args) => { const isBare = !args.path.startsWith(".") && !path.isAbsolute(args.path); - const baseDir = isBare ? srcRoot : (args.resolveDir || absWorkingDir); + const baseDir = isBare ? srcRoot : args.resolveDir || absWorkingDir; const resolvedWorkerPath = path.resolve(baseDir, `${args.path}.ts`); // Maintain previous behavior: strip the .worker suffix in the output filename const workerBaseName = path.basename(args.path, ".worker"); const workerOutputPath = `${workerBaseName}.js`; - + workerEntries.set(resolvedWorkerPath, workerOutputPath); - + // Return a virtual module that exports the worker URL return { path: args.path, namespace: "worker-url", }; }); - + // Handle the virtual worker URL modules build.onLoad({ filter: /.*/, namespace: "worker-url" }, (args) => { const workerBaseName = path.basename(args.path, ".worker"); const workerUrl = `${publicPath}${workerBaseName}.js`; - + return { contents: `export default "${workerUrl}";`, loader: "js", @@ -65,35 +74,67 @@ const createWorkerPlugin = ({ logLevel = "info" } = {}) => ({ // Build all worker bundles at the end build.onEnd(async (result) => { if (result.errors.length > 0) return; - - for (const [workerPath, workerOutputPath] of workerEntries) { - try { - // Base on main build config and override worker-specific parts - const basePlugins = Array.isArray(initial.plugins) ? initial.plugins : []; - // Exclude any worker-related - const workerPlugins = basePlugins.filter((p) => p && typeof p.name === "string" && !/worker/i.test(p.name)); - - await esbuild.build({ - ...initial, - entryPoints: [workerPath], - outfile: path.join(outdir, workerOutputPath), - outdir: undefined, // ensure single-file output via outfile - splitting: false, // keep worker as a single file - external: [], - plugins: workerPlugins, - }); - - if (logLevel !== "silent") { - console.log(`✓ Built worker: ${workerOutputPath}`); - } - } catch (error) { - console.error(`✗ Failed to build worker ${workerOutputPath}:`, error.message); - result.errors.push({ - text: `Worker build failed: ${error.message}`, - location: { file: workerPath }, - }); + + const activeWorkerPaths = new Set(workerEntries.keys()); + + // Dispose of contexts for workers that are no longer in use + for (const [workerPath, context] of workerContexts.entries()) { + if (!activeWorkerPaths.has(workerPath)) { + context.dispose(); + workerContexts.delete(workerPath); } } + + const buildPromises = Array.from(workerEntries.entries()).map( + async ([workerPath, workerOutputPath]) => { + try { + let context = workerContexts.get(workerPath); + + if (!context) { + // Base on main build config and override worker-specific parts + const basePlugins = Array.isArray(initial.plugins) ? initial.plugins : []; + // Exclude any worker-related plugins to avoid infinite loops + const workerPlugins = basePlugins.filter( + (p) => p && typeof p.name === "string" && !/worker/i.test(p.name), + ); + + const workerOptions = { + ...initial, + entryPoints: [workerPath], + outfile: path.join(outdir, workerOutputPath), + outdir: undefined, // ensure single-file output via outfile + splitting: false, // keep worker as a single file + external: [], + plugins: workerPlugins, + }; + // Banner and footer from the main build might not be suitable for workers + delete workerOptions.banner; + delete workerOptions.footer; + + context = await esbuild.context(workerOptions); + workerContexts.set(workerPath, context); + } + + const buildResult = await context.rebuild(); + + if (buildResult.errors.length > 0) { + // esbuild logs errors automatically. We add context and propagate them. + console.error(`✗ Failed to build worker ${workerOutputPath}`); + result.errors.push(...buildResult.errors); + } else if (logLevel !== "silent") { + console.log(`✓ Built worker: ${workerOutputPath}`); + } + } catch (error) { + console.error(`✗ Failed to build worker ${workerOutputPath}:`, error.message); + result.errors.push({ + text: `Worker build failed: ${error.message}`, + location: { file: workerPath }, + }); + } + }, + ); + + await Promise.all(buildPromises); }); }, }); From 2da388051253cfd79cb47c3a61b20f4b0c8adc3c Mon Sep 17 00:00:00 2001 From: Tom Herold Date: Thu, 14 Aug 2025 16:02:36 +0200 Subject: [PATCH 22/23] use different tmp directory --- esbuild_config.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/esbuild_config.js b/esbuild_config.js index e73ee8edcc..5319b1112d 100755 --- a/esbuild_config.js +++ b/esbuild_config.js @@ -34,9 +34,15 @@ async function build(env = {}) { // Determine output directory for bundles. // In watch mode, it's a temp dir. In production, it's the public bundle dir. const buildOutDir = isWatch - ? fs.mkdtempSync(path.join(os.tmpdir(), "esbuild-dev")) + ? path.join(os.tmpdir(), "webknossos-esbuild-dev") : outputPath; + if (isWatch) { + // Ensure a clean, stable directory for development builds + fs.rmSync(buildOutDir, { recursive: true, force: true }); + fs.mkdirSync(buildOutDir, { recursive: true }); + } + const plugins = [ polyfillNode(), createProtoPlugin(protoPath), From 3c386c85118bb02730cb5311093c1c0435639422 Mon Sep 17 00:00:00 2001 From: Philipp Otto Date: Fri, 26 Sep 2025 14:25:04 +0200 Subject: [PATCH 23/23] fix loading of lazy modules by using express server for serving esbuild's output; requests are paused as long as builds are ongoing --- esbuild_config.js | 85 ++++-- package.json | 2 + yarn.lock | 669 +++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 739 insertions(+), 17 deletions(-) diff --git a/esbuild_config.js b/esbuild_config.js index 5319b1112d..630b678c3b 100755 --- a/esbuild_config.js +++ b/esbuild_config.js @@ -3,6 +3,10 @@ const path = require("node:path"); const fs = require("node:fs"); const os = require("node:os"); +const express = require("express"); + +const app = express(); + const srcPath = path.resolve(__dirname, "frontend/javascripts/"); const outputPath = path.resolve(__dirname, "public/bundle/"); const protoPath = path.join(__dirname, "webknossos-datastore/proto"); @@ -27,6 +31,11 @@ const target = browserslistToEsbuild([ "last 1 iOS versions", ]); +function now() { + const d = new Date(); + return d.toISOString().replace("T", " ").replace("Z", ""); +} + async function build(env = {}) { const isProduction = env.production || process.env.NODE_ENV === "production"; const isWatch = env.watch; @@ -37,12 +46,42 @@ async function build(env = {}) { ? path.join(os.tmpdir(), "webknossos-esbuild-dev") : outputPath; + console.log("buildOutDir", buildOutDir); + if (isWatch) { // Ensure a clean, stable directory for development builds fs.rmSync(buildOutDir, { recursive: true, force: true }); fs.mkdirSync(buildOutDir, { recursive: true }); } + let onBuildDone = () => {} + + // Track ongoing builds so that incoming requests can be paused until all builds are finished. + let currentBuildCount = 0; + let buildStartTime = null; + let buildCounterPlugin = { + name: 'buildCounterPlugin', + setup(build) { + build.onStart(() => { + if (currentBuildCount === 0) { + buildStartTime = performance.now(); + } + currentBuildCount++; + console.log(now(), 'build started. currentBuildCount=', currentBuildCount) + }) + build.onEnd(() => { + currentBuildCount--; + if (currentBuildCount === 0) { + console.log("Build took", performance.now() - buildStartTime); + } + console.log(now(), 'build ended. currentBuildCount=', currentBuildCount) + if (currentBuildCount === 0) { + onBuildDone(); + } + }) + }, + } + const plugins = [ polyfillNode(), createProtoPlugin(protoPath), @@ -59,7 +98,8 @@ async function build(env = {}) { ], }), createWorkerPlugin({ logLevel: env.logLevel }), // Resolves import Worker from myFunc.worker; - esbuildPluginWorker() // Resolves new Worker(myWorker.js) + esbuildPluginWorker(), // Resolves new Worker(myWorker.js) + buildCounterPlugin ]; @@ -103,7 +143,7 @@ async function build(env = {}) { alias: { react: path.resolve(__dirname, "node_modules/react"), }, - plugins: plugins, + plugins, external: ["/assets/images/*", "fs"], logLevel: env.logLevel || "info", legalComments: isProduction ? "inline" : "none", @@ -117,22 +157,37 @@ async function build(env = {}) { if (env.watch) { // Development server mode const ctx = await esbuild.context(buildOptions); - - const { host, port } = await ctx.serve({ - servedir: buildOutDir, - port: env.PORT || 9002, - onRequest: (args) => { - if (env.logLevel === "verbose") { - console.log(`[${args.method}] ${args.path} - status ${args.status}`); - } - }, + const port = env.PORT || 9002; + + // queue for waiting requests + let waiting = []; + + function gateMiddleware(req, res, next) { + if (currentBuildCount === 0) { + return next(); // allow immediately + } + + // hold request + waiting.push({ req, res, next }); + } + + app.use("/", gateMiddleware, express.static(buildOutDir)); + + onBuildDone = function releaseRequests() { + const queued = waiting; + waiting = []; + queued.forEach(({ next }) => { + return next(); + }); + } + + app.listen(port, "127.0.0.1", () => { + console.log(`Server running at http://localhost:${port}/assets/bundle/`); }); - console.log(`Development server running at http://${host}:${port}`); + console.log(`Development server running at http://localhost:${port}`); console.log(`Serving files from temporary directory: ${buildOutDir}`); - await ctx.watch(); - process.on("SIGINT", async () => { await ctx.dispose(); process.exit(0); @@ -170,4 +225,4 @@ if (require.main === module) { }); build(env).catch(console.error); -} \ No newline at end of file +} diff --git a/package.json b/package.json index 01f3a13b66..6c177b2d0e 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "@types/color-hash": "^1.0.2", "@types/cwise": "^1.0.4", "@types/dagre": "^0.7.48", + "@types/express": "^5", "@types/file-saver": "^2.0.5", "@types/jsdom": "^21.1.7", "@types/lodash": "^4.17.4", @@ -45,6 +46,7 @@ "esbuild-plugin-polyfill-node": "^0.3.0", "esbuild-plugin-wasm": "^1.1.0", "espree": "^3.5.4", + "express": "^5.1.0", "husky": "^9.1.5", "jsdoc": "^3.5.5", "jsdom": "^26.1.0", diff --git a/yarn.lock b/yarn.lock index e310a9aba7..e0810e127e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2300,6 +2300,16 @@ __metadata: languageName: node linkType: hard +"@types/body-parser@npm:*": + version: 1.19.6 + resolution: "@types/body-parser@npm:1.19.6" + dependencies: + "@types/connect": "npm:*" + "@types/node": "npm:*" + checksum: 10c0/542da05c924dce58ee23f50a8b981fee36921850c82222e384931fda3e106f750f7880c47be665217d72dbe445129049db6eb1f44e7a06b09d62af8f3cca8ea7 + languageName: node + linkType: hard + "@types/caseless@npm:*": version: 0.12.2 resolution: "@types/caseless@npm:0.12.2" @@ -2314,6 +2324,15 @@ __metadata: languageName: node linkType: hard +"@types/connect@npm:*": + version: 3.4.38 + resolution: "@types/connect@npm:3.4.38" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/2e1cdba2c410f25649e77856505cd60223250fa12dff7a503e492208dbfdd25f62859918f28aba95315251fd1f5e1ffbfca1e25e73037189ab85dd3f8d0a148c + languageName: node + linkType: hard + "@types/cwise-compiler@npm:*": version: 1.1.4 resolution: "@types/cwise-compiler@npm:1.1.4" @@ -2636,6 +2655,29 @@ __metadata: languageName: node linkType: hard +"@types/express-serve-static-core@npm:^5.0.0": + version: 5.0.7 + resolution: "@types/express-serve-static-core@npm:5.0.7" + dependencies: + "@types/node": "npm:*" + "@types/qs": "npm:*" + "@types/range-parser": "npm:*" + "@types/send": "npm:*" + checksum: 10c0/28666f6a0743b8678be920a6eed075bc8afc96fc7d8ef59c3c049bd6b51533da3b24daf3b437d061e053fba1475e4f3175cb4972f5e8db41608e817997526430 + languageName: node + linkType: hard + +"@types/express@npm:^5": + version: 5.0.3 + resolution: "@types/express@npm:5.0.3" + dependencies: + "@types/body-parser": "npm:*" + "@types/express-serve-static-core": "npm:^5.0.0" + "@types/serve-static": "npm:*" + checksum: 10c0/f0fbc8daa7f40070b103cf4d020ff1dd08503477d866d1134b87c0390bba71d5d7949cb8b4e719a81ccba89294d8e1573414e6dcbb5bb1d097a7b820928ebdef + languageName: node + linkType: hard + "@types/extend@npm:^3.0.0": version: 3.0.1 resolution: "@types/extend@npm:3.0.1" @@ -2686,6 +2728,13 @@ __metadata: languageName: node linkType: hard +"@types/http-errors@npm:*": + version: 2.0.5 + resolution: "@types/http-errors@npm:2.0.5" + checksum: 10c0/00f8140fbc504f47356512bd88e1910c2f07e04233d99c88c854b3600ce0523c8cd0ba7d1897667243282eb44c59abb9245959e2428b9de004f93937f52f7c15 + languageName: node + linkType: hard + "@types/jsdom@npm:^21.1.7": version: 21.1.7 resolution: "@types/jsdom@npm:21.1.7" @@ -2753,6 +2802,13 @@ __metadata: languageName: node linkType: hard +"@types/mime@npm:^1": + version: 1.3.5 + resolution: "@types/mime@npm:1.3.5" + checksum: 10c0/c2ee31cd9b993804df33a694d5aa3fa536511a49f2e06eeab0b484fef59b4483777dbb9e42a4198a0809ffbf698081fdbca1e5c2218b82b91603dfab10a10fbc + languageName: node + linkType: hard + "@types/minimatch@npm:*": version: 5.1.2 resolution: "@types/minimatch@npm:5.1.2" @@ -2857,6 +2913,20 @@ __metadata: languageName: node linkType: hard +"@types/qs@npm:*": + version: 6.14.0 + resolution: "@types/qs@npm:6.14.0" + checksum: 10c0/5b3036df6e507483869cdb3858201b2e0b64b4793dc4974f188caa5b5732f2333ab9db45c08157975054d3b070788b35088b4bc60257ae263885016ee2131310 + languageName: node + linkType: hard + +"@types/range-parser@npm:*": + version: 1.2.7 + resolution: "@types/range-parser@npm:1.2.7" + checksum: 10c0/361bb3e964ec5133fa40644a0b942279ed5df1949f21321d77de79f48b728d39253e5ce0408c9c17e4e0fd95ca7899da36841686393b9f7a1e209916e9381a3c + languageName: node + linkType: hard + "@types/react-command-palette@npm:^0.18.4": version: 0.18.4 resolution: "@types/react-command-palette@npm:0.18.4" @@ -2904,6 +2974,27 @@ __metadata: languageName: node linkType: hard +"@types/send@npm:*": + version: 0.17.5 + resolution: "@types/send@npm:0.17.5" + dependencies: + "@types/mime": "npm:^1" + "@types/node": "npm:*" + checksum: 10c0/a86c9b89bb0976ff58c1cdd56360ea98528f4dbb18a5c2287bb8af04815513a576a42b4e0e1e7c4d14f7d6ea54733f6ef935ebff8c65e86d9c222881a71e1f15 + languageName: node + linkType: hard + +"@types/serve-static@npm:*": + version: 1.15.8 + resolution: "@types/serve-static@npm:1.15.8" + dependencies: + "@types/http-errors": "npm:*" + "@types/node": "npm:*" + "@types/send": "npm:*" + checksum: 10c0/8ad86a25b87da5276cb1008c43c74667ff7583904d46d5fcaf0355887869d859d453d7dc4f890788ae04705c23720e9b6b6f3215e2d1d2a4278bbd090a9268dd + languageName: node + linkType: hard + "@types/shelljs@npm:^0.8.5": version: 0.8.15 resolution: "@types/shelljs@npm:0.8.15" @@ -3193,6 +3284,16 @@ __metadata: languageName: node linkType: hard +"accepts@npm:^2.0.0": + version: 2.0.0 + resolution: "accepts@npm:2.0.0" + dependencies: + mime-types: "npm:^3.0.0" + negotiator: "npm:^1.0.0" + checksum: 10c0/98374742097e140891546076215f90c32644feacf652db48412329de4c2a529178a81aa500fbb13dd3e6cbf6e68d829037b123ac037fc9a08bcec4b87b358eef + languageName: node + linkType: hard + "acorn-jsx-walk@npm:^2.0.0": version: 2.0.0 resolution: "acorn-jsx-walk@npm:2.0.0" @@ -3731,6 +3832,23 @@ __metadata: languageName: node linkType: hard +"body-parser@npm:^2.2.0": + version: 2.2.0 + resolution: "body-parser@npm:2.2.0" + dependencies: + bytes: "npm:^3.1.2" + content-type: "npm:^1.0.5" + debug: "npm:^4.4.0" + http-errors: "npm:^2.0.0" + iconv-lite: "npm:^0.6.3" + on-finished: "npm:^2.4.1" + qs: "npm:^6.14.0" + raw-body: "npm:^3.0.0" + type-is: "npm:^2.0.0" + checksum: 10c0/a9ded39e71ac9668e2211afa72e82ff86cc5ef94de1250b7d1ba9cc299e4150408aaa5f1e8b03dd4578472a3ce6d1caa2a23b27a6c18e526e48b4595174c116c + languageName: node + linkType: hard + "brace-expansion@npm:^1.1.7": version: 1.1.11 resolution: "brace-expansion@npm:1.1.11" @@ -3820,6 +3938,13 @@ __metadata: languageName: node linkType: hard +"bytes@npm:3.1.2, bytes@npm:^3.1.2": + version: 3.1.2 + resolution: "bytes@npm:3.1.2" + checksum: 10c0/76d1c43cbd602794ad8ad2ae94095cddeb1de78c5dddaa7005c51af10b0176c69971a6d88e805a90c2b6550d76636e43c40d8427a808b8645ede885de4a0358e + languageName: node + linkType: hard + "cac@npm:^6.7.14": version: 6.7.14 resolution: "cac@npm:6.7.14" @@ -3847,6 +3972,16 @@ __metadata: languageName: node linkType: hard +"call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2": + version: 1.0.2 + resolution: "call-bind-apply-helpers@npm:1.0.2" + dependencies: + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + checksum: 10c0/47bd9901d57b857590431243fea704ff18078b16890a6b3e021e12d279bbf211d039155e27d7566b374d49ee1f8189344bac9833dec7a20cdec370506361c938 + languageName: node + linkType: hard + "call-bind@npm:^1.0.2": version: 1.0.2 resolution: "call-bind@npm:1.0.2" @@ -3857,6 +3992,16 @@ __metadata: languageName: node linkType: hard +"call-bound@npm:^1.0.2": + version: 1.0.4 + resolution: "call-bound@npm:1.0.4" + dependencies: + call-bind-apply-helpers: "npm:^1.0.2" + get-intrinsic: "npm:^1.3.0" + checksum: 10c0/f4796a6a0941e71c766aea672f63b72bc61234c4f4964dc6d7606e3664c307e7d77845328a8f3359ce39ddb377fed67318f9ee203dea1d47e46165dcf2917644 + languageName: node + linkType: hard + "callsites@npm:^3.0.0": version: 3.1.0 resolution: "callsites@npm:3.1.0" @@ -4232,6 +4377,22 @@ __metadata: languageName: node linkType: hard +"content-disposition@npm:^1.0.0": + version: 1.0.0 + resolution: "content-disposition@npm:1.0.0" + dependencies: + safe-buffer: "npm:5.2.1" + checksum: 10c0/c7b1ba0cea2829da0352ebc1b7f14787c73884bc707c8bc2271d9e3bf447b372270d09f5d3980dc5037c749ceef56b9a13fccd0b0001c87c3f12579967e4dd27 + languageName: node + linkType: hard + +"content-type@npm:^1.0.5": + version: 1.0.5 + resolution: "content-type@npm:1.0.5" + checksum: 10c0/b76ebed15c000aee4678c3707e0860cb6abd4e680a598c0a26e17f0bfae723ec9cc2802f0ff1bc6e4d80603719010431d2231018373d4dde10f9ccff9dadf5af + languageName: node + linkType: hard + "convert-source-map@npm:^1.7.0": version: 1.8.0 resolution: "convert-source-map@npm:1.8.0" @@ -4241,6 +4402,20 @@ __metadata: languageName: node linkType: hard +"cookie-signature@npm:^1.2.1": + version: 1.2.2 + resolution: "cookie-signature@npm:1.2.2" + checksum: 10c0/54e05df1a293b3ce81589b27dddc445f462f6fa6812147c033350cd3561a42bc14481674e05ed14c7bd0ce1e8bb3dc0e40851bad75415733711294ddce0b7bc6 + languageName: node + linkType: hard + +"cookie@npm:^0.7.1": + version: 0.7.2 + resolution: "cookie@npm:0.7.2" + checksum: 10c0/9596e8ccdbf1a3a88ae02cf5ee80c1c50959423e1022e4e60b91dd87c622af1da309253d8abdb258fb5e3eacb4f08e579dc58b4897b8087574eee0fd35dfa5d2 + languageName: node + linkType: hard + "copy-anything@npm:^2.0.1": version: 2.0.3 resolution: "copy-anything@npm:2.0.3" @@ -4545,6 +4720,18 @@ __metadata: languageName: node linkType: hard +"debug@npm:^4.3.5": + version: 4.4.3 + resolution: "debug@npm:4.4.3" + dependencies: + ms: "npm:^2.1.3" + peerDependenciesMeta: + supports-color: + optional: true + checksum: 10c0/d79136ec6c83ecbefd0f6a5593da6a9c91ec4d7ddc4b54c883d6e71ec9accb5f67a1a5e96d00a328196b5b5c86d365e98d8a3a70856aaf16b4e7b1985e67f5a6 + languageName: node + linkType: hard + "debug@npm:^4.4.0": version: 4.4.0 resolution: "debug@npm:4.4.0" @@ -4642,6 +4829,13 @@ __metadata: languageName: node linkType: hard +"depd@npm:2.0.0, depd@npm:^2.0.0": + version: 2.0.0 + resolution: "depd@npm:2.0.0" + checksum: 10c0/58bd06ec20e19529b06f7ad07ddab60e504d9e0faca4bd23079fac2d279c3594334d736508dc350e06e510aba5e22e4594483b3a6562ce7c17dd797f4cc4ad2c + languageName: node + linkType: hard + "dependency-cruiser@npm:^16.10.0": version: 16.10.0 resolution: "dependency-cruiser@npm:16.10.0" @@ -4853,6 +5047,17 @@ __metadata: languageName: node linkType: hard +"dunder-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "dunder-proto@npm:1.0.1" + dependencies: + call-bind-apply-helpers: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + gopd: "npm:^1.2.0" + checksum: 10c0/199f2a0c1c16593ca0a145dbf76a962f8033ce3129f01284d48c45ed4e14fea9bbacd7b3610b6cdc33486cef20385ac054948fefc6272fcce645c09468f93031 + languageName: node + linkType: hard + "dup@npm:^1.0.0": version: 1.0.0 resolution: "dup@npm:1.0.0" @@ -4893,6 +5098,13 @@ __metadata: languageName: node linkType: hard +"ee-first@npm:1.1.1": + version: 1.1.1 + resolution: "ee-first@npm:1.1.1" + checksum: 10c0/b5bb125ee93161bc16bfe6e56c6b04de5ad2aa44234d8f644813cc95d861a6910903132b05093706de2b706599367c4130eb6d170f6b46895686b95f87d017b7 + languageName: node + linkType: hard + "electron-to-chromium@npm:^1.4.477": version: 1.4.479 resolution: "electron-to-chromium@npm:1.4.479" @@ -4921,6 +5133,13 @@ __metadata: languageName: node linkType: hard +"encodeurl@npm:^2.0.0": + version: 2.0.0 + resolution: "encodeurl@npm:2.0.0" + checksum: 10c0/5d317306acb13e6590e28e27924c754163946a2480de11865c991a3a7eed4315cd3fba378b543ca145829569eefe9b899f3d84bb09870f675ae60bc924b01ceb + languageName: node + linkType: hard + "encoding@npm:^0.1.13": version: 0.1.13 resolution: "encoding@npm:0.1.13" @@ -5013,6 +5232,20 @@ __metadata: languageName: node linkType: hard +"es-define-property@npm:^1.0.1": + version: 1.0.1 + resolution: "es-define-property@npm:1.0.1" + checksum: 10c0/3f54eb49c16c18707949ff25a1456728c883e81259f045003499efba399c08bad00deebf65cccde8c0e07908c1a225c9d472b7107e558f2a48e28d530e34527c + languageName: node + linkType: hard + +"es-errors@npm:^1.3.0": + version: 1.3.0 + resolution: "es-errors@npm:1.3.0" + checksum: 10c0/0a61325670072f98d8ae3b914edab3559b6caa980f08054a3b872052640d91da01d38df55df797fcc916389d77fc92b8d5906cf028f4db46d7e3003abecbca85 + languageName: node + linkType: hard + "es-module-lexer@npm:^1.6.0": version: 1.6.0 resolution: "es-module-lexer@npm:1.6.0" @@ -5020,6 +5253,15 @@ __metadata: languageName: node linkType: hard +"es-object-atoms@npm:^1.0.0, es-object-atoms@npm:^1.1.1": + version: 1.1.1 + resolution: "es-object-atoms@npm:1.1.1" + dependencies: + es-errors: "npm:^1.3.0" + checksum: 10c0/65364812ca4daf48eb76e2a3b7a89b3f6a2e62a1c420766ce9f692665a29d94fe41fe88b65f24106f449859549711e4b40d9fb8002d862dfd7eb1c512d10be0c + languageName: node + linkType: hard + "es6-promise@npm:^3.0.2": version: 3.3.1 resolution: "es6-promise@npm:3.3.1" @@ -5268,6 +5510,13 @@ __metadata: languageName: node linkType: hard +"escape-html@npm:^1.0.3": + version: 1.0.3 + resolution: "escape-html@npm:1.0.3" + checksum: 10c0/524c739d776b36c3d29fa08a22e03e8824e3b2fd57500e5e44ecf3cc4707c34c60f9ca0781c0e33d191f2991161504c295e98f68c78fe7baa6e57081ec6ac0a3 + languageName: node + linkType: hard + "escape-string-regexp@npm:^1.0.5": version: 1.0.5 resolution: "escape-string-regexp@npm:1.0.5" @@ -5408,6 +5657,13 @@ __metadata: languageName: node linkType: hard +"etag@npm:^1.8.1": + version: 1.8.1 + resolution: "etag@npm:1.8.1" + checksum: 10c0/12be11ef62fb9817314d790089a0a49fae4e1b50594135dcb8076312b7d7e470884b5100d249b28c18581b7fd52f8b485689ffae22a11ed9ec17377a33a08f84 + languageName: node + linkType: hard + "event-target-shim@npm:^5.0.0": version: 5.0.1 resolution: "event-target-shim@npm:5.0.1" @@ -5443,6 +5699,41 @@ __metadata: languageName: node linkType: hard +"express@npm:^5.1.0": + version: 5.1.0 + resolution: "express@npm:5.1.0" + dependencies: + accepts: "npm:^2.0.0" + body-parser: "npm:^2.2.0" + content-disposition: "npm:^1.0.0" + content-type: "npm:^1.0.5" + cookie: "npm:^0.7.1" + cookie-signature: "npm:^1.2.1" + debug: "npm:^4.4.0" + encodeurl: "npm:^2.0.0" + escape-html: "npm:^1.0.3" + etag: "npm:^1.8.1" + finalhandler: "npm:^2.1.0" + fresh: "npm:^2.0.0" + http-errors: "npm:^2.0.0" + merge-descriptors: "npm:^2.0.0" + mime-types: "npm:^3.0.0" + on-finished: "npm:^2.4.1" + once: "npm:^1.4.0" + parseurl: "npm:^1.3.3" + proxy-addr: "npm:^2.0.7" + qs: "npm:^6.14.0" + range-parser: "npm:^1.2.1" + router: "npm:^2.2.0" + send: "npm:^1.1.0" + serve-static: "npm:^2.2.0" + statuses: "npm:^2.0.1" + type-is: "npm:^2.0.1" + vary: "npm:^1.1.2" + checksum: 10c0/80ce7c53c5f56887d759b94c3f2283e2e51066c98d4b72a4cc1338e832b77f1e54f30d0239cc10815a0f849bdb753e6a284d2fa48d4ab56faf9c501f55d751d6 + languageName: node + linkType: hard + "extend@npm:^3.0.0, extend@npm:~3.0.2": version: 3.0.2 resolution: "extend@npm:3.0.2" @@ -5616,6 +5907,20 @@ __metadata: languageName: node linkType: hard +"finalhandler@npm:^2.1.0": + version: 2.1.0 + resolution: "finalhandler@npm:2.1.0" + dependencies: + debug: "npm:^4.4.0" + encodeurl: "npm:^2.0.0" + escape-html: "npm:^1.0.3" + on-finished: "npm:^2.4.1" + parseurl: "npm:^1.3.3" + statuses: "npm:^2.0.1" + checksum: 10c0/da0bbca6d03873472ee890564eb2183f4ed377f25f3628a0fc9d16dac40bed7b150a0d82ebb77356e4c6d97d2796ad2dba22948b951dddee2c8768b0d1b9fb1f + languageName: node + linkType: hard + "find-up@npm:^6.3.0": version: 6.3.0 resolution: "find-up@npm:6.3.0" @@ -5682,6 +5987,20 @@ __metadata: languageName: node linkType: hard +"forwarded@npm:0.2.0": + version: 0.2.0 + resolution: "forwarded@npm:0.2.0" + checksum: 10c0/9b67c3fac86acdbc9ae47ba1ddd5f2f81526fa4c8226863ede5600a3f7c7416ef451f6f1e240a3cc32d0fd79fcfe6beb08fd0da454f360032bde70bf80afbb33 + languageName: node + linkType: hard + +"fresh@npm:^2.0.0": + version: 2.0.0 + resolution: "fresh@npm:2.0.0" + checksum: 10c0/0557548194cb9a809a435bf92bcfbc20c89e8b5eb38861b73ced36750437251e39a111fc3a18b98531be9dd91fe1411e4969f229dc579ec0251ce6c5d4900bbc + languageName: node + linkType: hard + "fs-constants@npm:^1.0.0": version: 1.0.0 resolution: "fs-constants@npm:1.0.0" @@ -5813,6 +6132,34 @@ __metadata: languageName: node linkType: hard +"get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.3.0": + version: 1.3.0 + resolution: "get-intrinsic@npm:1.3.0" + dependencies: + call-bind-apply-helpers: "npm:^1.0.2" + es-define-property: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.1.1" + function-bind: "npm:^1.1.2" + get-proto: "npm:^1.0.1" + gopd: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" + hasown: "npm:^2.0.2" + math-intrinsics: "npm:^1.1.0" + checksum: 10c0/52c81808af9a8130f581e6a6a83e1ba4a9f703359e7a438d1369a5267a25412322f03dcbd7c549edaef0b6214a0630a28511d7df0130c93cfd380f4fa0b5b66a + languageName: node + linkType: hard + +"get-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "get-proto@npm:1.0.1" + dependencies: + dunder-proto: "npm:^1.0.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/9224acb44603c5526955e83510b9da41baf6ae73f7398875fba50edc5e944223a89c4a72b070fcd78beb5f7bdda58ecb6294adc28f7acfc0da05f76a2399643c + languageName: node + linkType: hard + "get-stream@npm:^5.1.0": version: 5.2.0 resolution: "get-stream@npm:5.2.0" @@ -5970,6 +6317,13 @@ __metadata: languageName: node linkType: hard +"gopd@npm:^1.2.0": + version: 1.2.0 + resolution: "gopd@npm:1.2.0" + checksum: 10c0/50fff1e04ba2b7737c097358534eacadad1e68d24cccee3272e04e007bed008e68d2614f3987788428fd192a5ae3889d08fb2331417e4fc4a9ab366b2043cead + languageName: node + linkType: hard + "graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.1.9, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" @@ -6038,6 +6392,13 @@ __metadata: languageName: node linkType: hard +"has-symbols@npm:^1.1.0": + version: 1.1.0 + resolution: "has-symbols@npm:1.1.0" + checksum: 10c0/dde0a734b17ae51e84b10986e651c664379018d10b91b6b0e9b293eddb32f0f069688c841fb40f19e9611546130153e0a2a48fd7f512891fb000ddfa36f5a20e + languageName: node + linkType: hard + "has-tostringtag@npm:^1.0.0": version: 1.0.0 resolution: "has-tostringtag@npm:1.0.0" @@ -6065,6 +6426,15 @@ __metadata: languageName: node linkType: hard +"hasown@npm:^2.0.2": + version: 2.0.2 + resolution: "hasown@npm:2.0.2" + dependencies: + function-bind: "npm:^1.1.2" + checksum: 10c0/3769d434703b8ac66b209a4cca0737519925bbdb61dd887f93a16372b14694c63ff4e797686d87c90f08168e81082248b9b028bad60d4da9e0d1148766f56eb9 + languageName: node + linkType: hard + "hast-util-from-parse5@npm:^7.0.0": version: 7.1.2 resolution: "hast-util-from-parse5@npm:7.1.2" @@ -6244,6 +6614,19 @@ __metadata: languageName: node linkType: hard +"http-errors@npm:2.0.0, http-errors@npm:^2.0.0": + version: 2.0.0 + resolution: "http-errors@npm:2.0.0" + dependencies: + depd: "npm:2.0.0" + inherits: "npm:2.0.4" + setprototypeof: "npm:1.2.0" + statuses: "npm:2.0.1" + toidentifier: "npm:1.0.1" + checksum: 10c0/fc6f2715fe188d091274b5ffc8b3657bd85c63e969daa68ccb77afb05b071a4b62841acb7a21e417b5539014dff2ebf9550f0b14a9ff126f2734a7c1387f8e19 + languageName: node + linkType: hard + "http-proxy-agent@npm:^7.0.0": version: 7.0.0 resolution: "http-proxy-agent@npm:7.0.0" @@ -6323,6 +6706,15 @@ __metadata: languageName: node linkType: hard +"iconv-lite@npm:0.7.0": + version: 0.7.0 + resolution: "iconv-lite@npm:0.7.0" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3.0.0" + checksum: 10c0/2382400469071c55b6746c531eed5fa4d033e5db6690b7331fb2a5f59a30d7a9782932e92253db26df33c1cf46fa200a3fbe524a2a7c62037c762283f188ec2f + languageName: node + linkType: hard + "iconv-lite@npm:^0.4.4": version: 0.4.24 resolution: "iconv-lite@npm:0.4.24" @@ -6410,7 +6802,7 @@ __metadata: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.1, inherits@npm:~2.0.3": +"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.1, inherits@npm:~2.0.3": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 @@ -6476,6 +6868,13 @@ __metadata: languageName: node linkType: hard +"ipaddr.js@npm:1.9.1": + version: 1.9.1 + resolution: "ipaddr.js@npm:1.9.1" + checksum: 10c0/0486e775047971d3fdb5fb4f063829bac45af299ae0b82dcf3afa2145338e08290563a2a70f34b732d795ecc8311902e541a8530eeb30d75860a78ff4e94ce2a + languageName: node + linkType: hard + "is-absolute@npm:^1.0.0": version: 1.0.0 resolution: "is-absolute@npm:1.0.0" @@ -6647,6 +7046,13 @@ __metadata: languageName: node linkType: hard +"is-promise@npm:^4.0.0": + version: 4.0.0 + resolution: "is-promise@npm:4.0.0" + checksum: 10c0/ebd5c672d73db781ab33ccb155fb9969d6028e37414d609b115cc534654c91ccd061821d5b987eefaa97cf4c62f0b909bb2f04db88306de26e91bfe8ddc01503 + languageName: node + linkType: hard + "is-regex@npm:^1.0.4": version: 1.1.4 resolution: "is-regex@npm:1.1.4" @@ -7512,6 +7918,13 @@ __metadata: languageName: node linkType: hard +"math-intrinsics@npm:^1.1.0": + version: 1.1.0 + resolution: "math-intrinsics@npm:1.1.0" + checksum: 10c0/7579ff94e899e2f76ab64491d76cf606274c874d8f2af4a442c016bd85688927fcfca157ba6bf74b08e9439dc010b248ce05b96cc7c126a354c3bae7fcb48b7f + languageName: node + linkType: hard + "mdast-util-definitions@npm:^5.0.0": version: 5.1.2 resolution: "mdast-util-definitions@npm:5.1.2" @@ -7714,6 +8127,13 @@ __metadata: languageName: node linkType: hard +"media-typer@npm:^1.1.0": + version: 1.1.0 + resolution: "media-typer@npm:1.1.0" + checksum: 10c0/7b4baa40b25964bb90e2121ee489ec38642127e48d0cc2b6baa442688d3fde6262bfdca86d6bbf6ba708784afcac168c06840c71facac70e390f5f759ac121b9 + languageName: node + linkType: hard + "memoize-one@npm:*, memoize-one@npm:^6.0.0": version: 6.0.0 resolution: "memoize-one@npm:6.0.0" @@ -7730,6 +8150,13 @@ __metadata: languageName: node linkType: hard +"merge-descriptors@npm:^2.0.0": + version: 2.0.0 + resolution: "merge-descriptors@npm:2.0.0" + checksum: 10c0/95389b7ced3f9b36fbdcf32eb946dc3dd1774c2fdf164609e55b18d03aa499b12bd3aae3a76c1c7185b96279e9803525550d3eb292b5224866060a288f335cb3 + languageName: node + linkType: hard + "merge-img@npm:^2.1.2": version: 2.1.3 resolution: "merge-img@npm:2.1.3" @@ -8110,6 +8537,13 @@ __metadata: languageName: node linkType: hard +"mime-db@npm:^1.54.0": + version: 1.54.0 + resolution: "mime-db@npm:1.54.0" + checksum: 10c0/8d907917bc2a90fa2df842cdf5dfeaf509adc15fe0531e07bb2f6ab15992416479015828d6a74200041c492e42cce3ebf78e5ce714388a0a538ea9c53eece284 + languageName: node + linkType: hard + "mime-types@npm:^2.1.12, mime-types@npm:^2.1.35, mime-types@npm:~2.1.19": version: 2.1.35 resolution: "mime-types@npm:2.1.35" @@ -8119,6 +8553,15 @@ __metadata: languageName: node linkType: hard +"mime-types@npm:^3.0.0, mime-types@npm:^3.0.1": + version: 3.0.1 + resolution: "mime-types@npm:3.0.1" + dependencies: + mime-db: "npm:^1.54.0" + checksum: 10c0/bd8c20d3694548089cf229016124f8f40e6a60bbb600161ae13e45f793a2d5bb40f96bbc61f275836696179c77c1d6bf4967b2a75e0a8ad40fe31f4ed5be4da5 + languageName: node + linkType: hard + "mime@npm:^1.3.4, mime@npm:^1.4.1": version: 1.6.0 resolution: "mime@npm:1.6.0" @@ -8501,6 +8944,13 @@ __metadata: languageName: node linkType: hard +"negotiator@npm:^1.0.0": + version: 1.0.0 + resolution: "negotiator@npm:1.0.0" + checksum: 10c0/4c559dd52669ea48e1914f9d634227c561221dd54734070791f999c52ed0ff36e437b2e07d5c1f6e32909fc625fe46491c16e4a8f0572567d4dd15c3a4fda04b + languageName: node + linkType: hard + "node-fetch@npm:2.6.7": version: 2.6.7 resolution: "node-fetch@npm:2.6.7" @@ -8600,6 +9050,13 @@ __metadata: languageName: node linkType: hard +"object-inspect@npm:^1.13.3": + version: 1.13.4 + resolution: "object-inspect@npm:1.13.4" + checksum: 10c0/d7f8711e803b96ea3191c745d6f8056ce1f2496e530e6a19a0e92d89b0fa3c76d910c31f0aa270432db6bd3b2f85500a376a83aaba849a8d518c8845b3211692 + languageName: node + linkType: hard + "object-inspect@npm:~0.4.0": version: 0.4.0 resolution: "object-inspect@npm:0.4.0" @@ -8638,6 +9095,15 @@ __metadata: languageName: node linkType: hard +"on-finished@npm:^2.4.1": + version: 2.4.1 + resolution: "on-finished@npm:2.4.1" + dependencies: + ee-first: "npm:1.1.1" + checksum: 10c0/46fb11b9063782f2d9968863d9cbba33d77aa13c17f895f56129c274318b86500b22af3a160fe9995aa41317efcd22941b6eba747f718ced08d9a73afdb087b4 + languageName: node + linkType: hard + "once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": version: 1.4.0 resolution: "once@npm:1.4.0" @@ -8848,6 +9314,13 @@ __metadata: languageName: node linkType: hard +"parseurl@npm:^1.3.3": + version: 1.3.3 + resolution: "parseurl@npm:1.3.3" + checksum: 10c0/90dd4760d6f6174adb9f20cf0965ae12e23879b5f5464f38e92fce8073354341e4b3b76fa3d878351efe7d01e617121955284cfd002ab087fba1a0726ec0b4f5 + languageName: node + linkType: hard + "path-exists@npm:^5.0.0": version: 5.0.0 resolution: "path-exists@npm:5.0.0" @@ -8902,6 +9375,13 @@ __metadata: languageName: node linkType: hard +"path-to-regexp@npm:^8.0.0": + version: 8.3.0 + resolution: "path-to-regexp@npm:8.3.0" + checksum: 10c0/ee1544a73a3f294a97a4c663b0ce71bbf1621d732d80c9c9ed201b3e911a86cb628ebad691b9d40f40a3742fe22011e5a059d8eed2cf63ec2cb94f6fb4efe67c + languageName: node + linkType: hard + "path-type@npm:^4.0.0": version: 4.0.0 resolution: "path-type@npm:4.0.0" @@ -9270,6 +9750,16 @@ __metadata: languageName: node linkType: hard +"proxy-addr@npm:^2.0.7": + version: 2.0.7 + resolution: "proxy-addr@npm:2.0.7" + dependencies: + forwarded: "npm:0.2.0" + ipaddr.js: "npm:1.9.1" + checksum: 10c0/c3eed999781a35f7fd935f398b6d8920b6fb00bbc14287bc6de78128ccc1a02c89b95b56742bf7cf0362cc333c61d138532049c7dedc7a328ef13343eff81210 + languageName: node + linkType: hard + "proxy-from-env@npm:1.1.0": version: 1.1.0 resolution: "proxy-from-env@npm:1.1.0" @@ -9339,6 +9829,15 @@ __metadata: languageName: node linkType: hard +"qs@npm:^6.14.0": + version: 6.14.0 + resolution: "qs@npm:6.14.0" + dependencies: + side-channel: "npm:^1.1.0" + checksum: 10c0/8ea5d91bf34f440598ee389d4a7d95820e3b837d3fd9f433871f7924801becaa0cd3b3b4628d49a7784d06a8aea9bc4554d2b6d8d584e2d221dc06238a42909c + languageName: node + linkType: hard + "qs@npm:~6.5.2": version: 6.5.2 resolution: "qs@npm:6.5.2" @@ -9370,6 +9869,25 @@ __metadata: languageName: node linkType: hard +"range-parser@npm:^1.2.1": + version: 1.2.1 + resolution: "range-parser@npm:1.2.1" + checksum: 10c0/96c032ac2475c8027b7a4e9fe22dc0dfe0f6d90b85e496e0f016fbdb99d6d066de0112e680805075bd989905e2123b3b3d002765149294dce0c1f7f01fcc2ea0 + languageName: node + linkType: hard + +"raw-body@npm:^3.0.0": + version: 3.0.1 + resolution: "raw-body@npm:3.0.1" + dependencies: + bytes: "npm:3.1.2" + http-errors: "npm:2.0.0" + iconv-lite: "npm:0.7.0" + unpipe: "npm:1.0.0" + checksum: 10c0/892f4fbd21ecab7e2fed0f045f7af9e16df7e8050879639d4e482784a2f4640aaaa33d916a0e98013f23acb82e09c2e3c57f84ab97104449f728d22f65a7d79a + languageName: node + linkType: hard + "rc-cascader@npm:~3.30.0": version: 3.30.0 resolution: "rc-cascader@npm:3.30.0" @@ -10772,6 +11290,19 @@ __metadata: languageName: node linkType: hard +"router@npm:^2.2.0": + version: 2.2.0 + resolution: "router@npm:2.2.0" + dependencies: + debug: "npm:^4.4.0" + depd: "npm:^2.0.0" + is-promise: "npm:^4.0.0" + parseurl: "npm:^1.3.3" + path-to-regexp: "npm:^8.0.0" + checksum: 10c0/3279de7450c8eae2f6e095e9edacbdeec0abb5cb7249c6e719faa0db2dba43574b4fff5892d9220631c9abaff52dd3cad648cfea2aaace845e1a071915ac8867 + languageName: node + linkType: hard + "rrweb-cssom@npm:^0.8.0": version: 0.8.0 resolution: "rrweb-cssom@npm:0.8.0" @@ -10797,7 +11328,7 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:5.2.1, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 @@ -10955,6 +11486,44 @@ __metadata: languageName: node linkType: hard +"send@npm:^1.1.0, send@npm:^1.2.0": + version: 1.2.0 + resolution: "send@npm:1.2.0" + dependencies: + debug: "npm:^4.3.5" + encodeurl: "npm:^2.0.0" + escape-html: "npm:^1.0.3" + etag: "npm:^1.8.1" + fresh: "npm:^2.0.0" + http-errors: "npm:^2.0.0" + mime-types: "npm:^3.0.1" + ms: "npm:^2.1.3" + on-finished: "npm:^2.4.1" + range-parser: "npm:^1.2.1" + statuses: "npm:^2.0.1" + checksum: 10c0/531bcfb5616948d3468d95a1fd0adaeb0c20818ba4a500f439b800ca2117971489e02074ce32796fd64a6772ea3e7235fe0583d8241dbd37a053dc3378eff9a5 + languageName: node + linkType: hard + +"serve-static@npm:^2.2.0": + version: 2.2.0 + resolution: "serve-static@npm:2.2.0" + dependencies: + encodeurl: "npm:^2.0.0" + escape-html: "npm:^1.0.3" + parseurl: "npm:^1.3.3" + send: "npm:^1.2.0" + checksum: 10c0/30e2ed1dbff1984836cfd0c65abf5d3f3f83bcd696c99d2d3c97edbd4e2a3ff4d3f87108a7d713640d290a7b6fe6c15ddcbc61165ab2eaad48ea8d3b52c7f913 + languageName: node + linkType: hard + +"setprototypeof@npm:1.2.0": + version: 1.2.0 + resolution: "setprototypeof@npm:1.2.0" + checksum: 10c0/68733173026766fa0d9ecaeb07f0483f4c2dc70ca376b3b7c40b7cda909f94b0918f6c5ad5ce27a9160bdfb475efaa9d5e705a11d8eaae18f9835d20976028bc + languageName: node + linkType: hard + "shallow-copy@npm:~0.0.1": version: 0.0.1 resolution: "shallow-copy@npm:0.0.1" @@ -11005,6 +11574,54 @@ __metadata: languageName: node linkType: hard +"side-channel-list@npm:^1.0.0": + version: 1.0.0 + resolution: "side-channel-list@npm:1.0.0" + dependencies: + es-errors: "npm:^1.3.0" + object-inspect: "npm:^1.13.3" + checksum: 10c0/644f4ac893456c9490ff388bf78aea9d333d5e5bfc64cfb84be8f04bf31ddc111a8d4b83b85d7e7e8a7b845bc185a9ad02c052d20e086983cf59f0be517d9b3d + languageName: node + linkType: hard + +"side-channel-map@npm:^1.0.1": + version: 1.0.1 + resolution: "side-channel-map@npm:1.0.1" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.5" + object-inspect: "npm:^1.13.3" + checksum: 10c0/010584e6444dd8a20b85bc926d934424bd809e1a3af941cace229f7fdcb751aada0fb7164f60c2e22292b7fa3c0ff0bce237081fd4cdbc80de1dc68e95430672 + languageName: node + linkType: hard + +"side-channel-weakmap@npm:^1.0.2": + version: 1.0.2 + resolution: "side-channel-weakmap@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.5" + object-inspect: "npm:^1.13.3" + side-channel-map: "npm:^1.0.1" + checksum: 10c0/71362709ac233e08807ccd980101c3e2d7efe849edc51455030327b059f6c4d292c237f94dc0685031dd11c07dd17a68afde235d6cf2102d949567f98ab58185 + languageName: node + linkType: hard + +"side-channel@npm:^1.1.0": + version: 1.1.0 + resolution: "side-channel@npm:1.1.0" + dependencies: + es-errors: "npm:^1.3.0" + object-inspect: "npm:^1.13.3" + side-channel-list: "npm:^1.0.0" + side-channel-map: "npm:^1.0.1" + side-channel-weakmap: "npm:^1.0.2" + checksum: 10c0/cb20dad41eb032e6c24c0982e1e5a24963a28aa6122b4f05b3f3d6bf8ae7fd5474ef382c8f54a6a3ab86e0cac4d41a23bd64ede3970e5bfb50326ba02a7996e6 + languageName: node + linkType: hard + "siginfo@npm:^2.0.0": version: 2.0.0 resolution: "siginfo@npm:2.0.0" @@ -11257,6 +11874,20 @@ __metadata: languageName: node linkType: hard +"statuses@npm:2.0.1": + version: 2.0.1 + resolution: "statuses@npm:2.0.1" + checksum: 10c0/34378b207a1620a24804ce8b5d230fea0c279f00b18a7209646d5d47e419d1cc23e7cbf33a25a1e51ac38973dc2ac2e1e9c647a8e481ef365f77668d72becfd0 + languageName: node + linkType: hard + +"statuses@npm:^2.0.1": + version: 2.0.2 + resolution: "statuses@npm:2.0.2" + checksum: 10c0/a9947d98ad60d01f6b26727570f3bcceb6c8fa789da64fe6889908fe2e294d57503b14bf2b5af7605c2d36647259e856635cd4c49eab41667658ec9d0080ec3f + languageName: node + linkType: hard + "std-env@npm:^3.8.1": version: 3.9.0 resolution: "std-env@npm:3.9.0" @@ -11676,6 +12307,13 @@ __metadata: languageName: node linkType: hard +"toidentifier@npm:1.0.1": + version: 1.0.1 + resolution: "toidentifier@npm:1.0.1" + checksum: 10c0/93937279934bd66cc3270016dd8d0afec14fb7c94a05c72dc57321f8bd1fa97e5bea6d1f7c89e728d077ca31ea125b78320a616a6c6cd0e6b9cb94cb864381c1 + languageName: node + linkType: hard + "tough-cookie@npm:^5.1.1": version: 5.1.2 resolution: "tough-cookie@npm:5.1.2" @@ -11848,6 +12486,17 @@ __metadata: languageName: node linkType: hard +"type-is@npm:^2.0.0, type-is@npm:^2.0.1": + version: 2.0.1 + resolution: "type-is@npm:2.0.1" + dependencies: + content-type: "npm:^1.0.5" + media-typer: "npm:^1.1.0" + mime-types: "npm:^3.0.0" + checksum: 10c0/7f7ec0a060b16880bdad36824ab37c26019454b67d73e8a465ed5a3587440fbe158bc765f0da68344498235c877e7dbbb1600beccc94628ed05599d667951b99 + languageName: node + linkType: hard + "typed-redux-saga@npm:^1.4.0": version: 1.4.0 resolution: "typed-redux-saga@npm:1.4.0" @@ -12157,6 +12806,13 @@ __metadata: languageName: node linkType: hard +"unpipe@npm:1.0.0": + version: 1.0.0 + resolution: "unpipe@npm:1.0.0" + checksum: 10c0/193400255bd48968e5c5383730344fbb4fa114cdedfab26e329e50dd2d81b134244bb8a72c6ac1b10ab0281a58b363d06405632c9d49ca9dfd5e90cbd7d0f32c + languageName: node + linkType: hard + "update-browserslist-db@npm:^1.0.11": version: 1.0.11 resolution: "update-browserslist-db@npm:1.0.11" @@ -12273,6 +12929,13 @@ __metadata: languageName: node linkType: hard +"vary@npm:^1.1.2": + version: 1.1.2 + resolution: "vary@npm:1.1.2" + checksum: 10c0/f15d588d79f3675135ba783c91a4083dcd290a2a5be9fcb6514220a1634e23df116847b1cc51f66bfb0644cf9353b2abb7815ae499bab06e46dd33c1a6bf1f4f + languageName: node + linkType: hard + "verror@npm:1.10.0": version: 1.10.0 resolution: "verror@npm:1.10.0" @@ -12580,6 +13243,7 @@ __metadata: "@types/color-hash": "npm:^1.0.2" "@types/cwise": "npm:^1.0.4" "@types/dagre": "npm:^0.7.48" + "@types/express": "npm:^5" "@types/file-saver": "npm:^2.0.5" "@types/jsdom": "npm:^21.1.7" "@types/lodash": "npm:^4.17.4" @@ -12626,6 +13290,7 @@ __metadata: esbuild-plugin-polyfill-node: "npm:^0.3.0" esbuild-plugin-wasm: "npm:^1.1.0" espree: "npm:^3.5.4" + express: "npm:^5.1.0" file-saver: "npm:^2.0.1" flexlayout-react: "npm:0.7.15" hammerjs: "npm:^2.0.8"