diff --git a/ts/karma.config.cjs b/ts/karma.config.cjs new file mode 100644 index 000000000..8d4b2c469 --- /dev/null +++ b/ts/karma.config.cjs @@ -0,0 +1,19 @@ +module.exports = function (config) { + config.set({ + frameworks: ['jasmine'], + files: [ + './dest/browser-tests/tests.bundle.js', + { pattern: 'dest/**/*.wasm', watched: false, included: false, served: true, nocache: false }, + ], + reporters: ['progress'], + port: 9876, + colors: true, + autoWatch: true, + browsers: ['ChromeHeadless'], + singleRun: false, + concurrency: Infinity, + mime: { + 'application/wasm': ['wasm'], + }, + }); +}; diff --git a/ts/package.json b/ts/package.json index b5a7f3cfe..6f29d82cc 100644 --- a/ts/package.json +++ b/ts/package.json @@ -23,27 +23,35 @@ "build:dev": "tsc -b --watch", "build:wasm": "cd ../cpp && cmake --preset wasm-threads && cmake --build --preset wasm-threads && cmake --preset wasm && cmake --build --preset wasm", "build:ts:browser": "tsc -b tsconfig.browser.json && BUILD_TARGET=browser webpack && chmod +x ./dest/browser/main.js && BUILD_TARGET=browser node replace_imports.cjs", + "build:ts:browser:tests": "tsc -b tsconfig.browser.json && BUILD_TARGET=browser webpack --config webpack.tests.config.cjs", "build:ts:node": "tsc -b tsconfig.node.json && chmod +x ./dest/node/main.js && BUILD_TARGET=node node replace_imports.cjs", "build:bindings": "cd .. && ./scripts/bindgen.sh", "serve": "webpack serve", "formatting": "prettier --check ./src && eslint --max-warnings 0 ./src", "formatting:fix": "prettier -w ./src", - "test": "yarn build:ts:browser && yarn build:ts:node && yarn test:jest && yarn test:bin", - "test:jest": "NODE_NO_WARNINGS=1 node --experimental-vm-modules $(yarn bin jest) --no-cache --passWithNoTests", + "test": "yarn clean && yarn build:wasm && yarn build:ts:browser:tests && yarn test:browser", + "test:node": "NODE_NO_WARNINGS=1 node --experimental-vm-modules $(yarn bin jest) --no-cache --passWithNoTests", + "test:browser": "karma start karma.config.cjs", "test:bin": "cd ./bin-test && ./bin-test.sh", "test-debug": "NODE_NO_WARNINGS=1 node --inspect-brk=0.0.0.0 --experimental-vm-modules $(yarn bin jest) --no-cache --passWithNoTests --runInBand", "prepack": "yarn build", "deploy": "npm publish --access public" }, "jest": { - "testRegex": "./dest/node/.*\\.test\\.js$", + "testRegex": "./dest/(node|browser)/.*\\.test\\.js$", "rootDir": "./dest" }, "dependencies": { "comlink": "^4.4.1", "commander": "^10.0.1", "debug": "^4.3.4", - "idb-keyval": "^6.2.1" + "glob": "^10.3.3", + "idb-keyval": "^6.2.1", + "jasmine-core": "^5.1.0", + "karma": "^6.4.2", + "karma-chrome-launcher": "^3.2.0", + "karma-jasmine": "^5.1.0", + "path-browserify": "^1.0.1" }, "devDependencies": { "@jest/globals": "^29.4.3", diff --git a/ts/src/barretenberg_api/blake2s.test.ts b/ts/src/barretenberg_api/blake2s.node.test.ts similarity index 100% rename from ts/src/barretenberg_api/blake2s.test.ts rename to ts/src/barretenberg_api/blake2s.node.test.ts diff --git a/ts/src/barretenberg_api/common.test.ts b/ts/src/barretenberg_api/common.node.test.ts similarity index 100% rename from ts/src/barretenberg_api/common.test.ts rename to ts/src/barretenberg_api/common.node.test.ts diff --git a/ts/src/barretenberg_api/pedersen.test.ts b/ts/src/barretenberg_api/pedersen.node.test.ts similarity index 100% rename from ts/src/barretenberg_api/pedersen.test.ts rename to ts/src/barretenberg_api/pedersen.node.test.ts diff --git a/ts/src/barretenberg_api/schnorr.test.ts b/ts/src/barretenberg_api/schnorr.node.test.ts similarity index 100% rename from ts/src/barretenberg_api/schnorr.test.ts rename to ts/src/barretenberg_api/schnorr.node.test.ts diff --git a/ts/src/examples/simple.test.ts b/ts/src/examples/simple.node.test.ts similarity index 100% rename from ts/src/examples/simple.test.ts rename to ts/src/examples/simple.node.test.ts diff --git a/ts/src/index.browser.test.ts b/ts/src/index.browser.test.ts new file mode 100644 index 000000000..79eb820f6 --- /dev/null +++ b/ts/src/index.browser.test.ts @@ -0,0 +1,28 @@ +import * as bbjs from './index.js'; + +const originalFetch = window.fetch; + +function transformURL(url) { + if (typeof url !== 'string' || !url.startsWith('http://localhost:9876/')) { + throw new Error('Invalid URL format'); + } + const fileName = url.split('/').pop(); + // karma serves the .wasm files on /base/dest/browser-tests + return `http://localhost:9876/base/dest/browser-tests/${fileName}`; +} + +function mockFetch(input: RequestInfo) { + const url = transformURL(input); + console.log('input path:', url, input); + return originalFetch(url); +} + +(window as any).fetch = mockFetch; + +describe('browser', () => { + it('should initialize Barretenberg API', async () => { + const api = await bbjs.newBarretenbergApiSync(); + console.log(api); + expect(api).toBeDefined(); + }, 5e3); +}); diff --git a/ts/tsconfig.browser.json b/ts/tsconfig.browser.json index c6ea28ecf..3eb586e73 100644 --- a/ts/tsconfig.browser.json +++ b/ts/tsconfig.browser.json @@ -2,11 +2,7 @@ "compilerOptions": { "baseUrl": ".", "target": "es2020", - "lib": [ - "dom", - "esnext", - "es2017.object" - ], + "lib": ["dom", "esnext", "es2017.object"], "module": "NodeNext", "strict": false, "declaration": true, @@ -22,19 +18,12 @@ "rootDir": "src", "tsBuildInfoFile": ".tsbuildinfo.browser", "paths": { - "dynamic/barretenberg_wasm": [ - "src/barretenberg_wasm/browser/index.ts" - ], - "dynamic/crs": [ - "src/crs/browser/index.ts" - ], - "dynamic/random": [ - "src/random/browser/index.ts" - ], - "dynamic/types": [ - "src/types/browser/index.ts" - ] + "dynamic/barretenberg_wasm": ["src/barretenberg_wasm/browser/index.ts"], + "dynamic/crs": ["src/crs/browser/index.ts"], + "dynamic/random": ["src/random/browser/index.ts"], + "dynamic/types": ["src/types/browser/index.ts"] } }, - "include": ["src/**/*"] -} \ No newline at end of file + "include": ["src/**/*"], + "exclude": ["src/**/*.node.test.ts", "**/*.node.test.ts"] +} diff --git a/ts/tsconfig.node.json b/ts/tsconfig.node.json index b211c7c12..640a23766 100644 --- a/ts/tsconfig.node.json +++ b/ts/tsconfig.node.json @@ -2,11 +2,7 @@ "compilerOptions": { "baseUrl": ".", "target": "es2020", - "lib": [ - "dom", - "esnext", - "es2017.object" - ], + "lib": ["dom", "esnext", "es2017.object"], "module": "NodeNext", "strict": false, "declaration": true, @@ -22,19 +18,12 @@ "rootDir": "src", "tsBuildInfoFile": ".tsbuildinfo.node", "paths": { - "dynamic/barretenberg_wasm": [ - "src/barretenberg_wasm/node/index.ts" - ], - "dynamic/crs": [ - "src/crs/node/index.ts" - ], - "dynamic/random": [ - "src/random/node/index.ts" - ], - "dynamic/types": [ - "src/types/node/index.ts" - ] + "dynamic/barretenberg_wasm": ["src/barretenberg_wasm/node/index.ts"], + "dynamic/crs": ["src/crs/node/index.ts"], + "dynamic/random": ["src/random/node/index.ts"], + "dynamic/types": ["src/types/node/index.ts"] } }, - "include": ["src/**/*"] -} \ No newline at end of file + "include": ["src/**/*"], + "exclude": ["src/**/*.browser.test.ts", "**/*.browser.test.ts"] +} diff --git a/ts/webpack.tests.config.cjs b/ts/webpack.tests.config.cjs new file mode 100644 index 000000000..ad85ddb47 --- /dev/null +++ b/ts/webpack.tests.config.cjs @@ -0,0 +1,78 @@ +const path = require('path'); +const ResolveTypeScriptPlugin = require('resolve-typescript-plugin'); +const CopyWebpackPlugin = require('copy-webpack-plugin'); +const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin'); +const webpack = require('webpack'); +const HtmlWebpackPlugin = require('html-webpack-plugin'); +const { resolve } = path; +const glob = require('glob'); + +// Dynamically get the list of test files +const testFiles = glob.sync('./src/**/*.browser.test.ts'); + +console.log(testFiles); + +const buildTarget = 'browser'; +const configFile = path.resolve(__dirname, `./tsconfig.${buildTarget}.json`); + +module.exports = { + mode: 'development', + entry: testFiles, + target: 'web', + output: { + path: resolve(__dirname, `./dest/${buildTarget}-tests`), + filename: 'tests.bundle.js', + publicPath: '/', + }, + module: { + rules: [ + { + test: /\.ts?$/, + use: [ + { + loader: 'ts-loader', + options: { + transpileOnly: true, + onlyCompileBundledFiles: true, + configFile, + }, + }, + ], + }, + ], + }, + resolve: { + plugins: [new ResolveTypeScriptPlugin(), new TsconfigPathsPlugin({ configFile })], + fallback: { + path: require.resolve('path-browserify'), + }, + }, + optimization: { + minimize: false, + }, + plugins: [ + new webpack.DefinePlugin({ 'process.env.NODE_DEBUG': false }), + new webpack.ProvidePlugin({ Buffer: ['buffer', 'Buffer'] }), + new CopyWebpackPlugin({ + patterns: [ + { + from: `../cpp/build-wasm/bin/barretenberg.wasm`, + to: '../barretenberg.wasm', + }, + { + from: `../cpp/build-wasm-threads/bin/barretenberg.wasm`, + to: '../barretenberg-threads.wasm', + }, + ], + }), + new HtmlWebpackPlugin({ + template: './src/index.html', + inject: 'body', + }), + ], + devServer: { + contentBase: path.join(__dirname, 'dest'), + compress: true, + port: 8080, + }, +}; diff --git a/ts/yarn.lock b/ts/yarn.lock index f9a4a3eb5..3f0cf6add 100644 --- a/ts/yarn.lock +++ b/ts/yarn.lock @@ -34,9 +34,15 @@ __metadata: debug: ^4.3.4 eslint: ^8.35.0 eslint-config-prettier: ^8.8.0 + glob: ^10.3.3 html-webpack-plugin: ^5.5.1 idb-keyval: ^6.2.1 + jasmine-core: ^5.1.0 jest: ^29.5.0 + karma: ^6.4.2 + karma-chrome-launcher: ^3.2.0 + karma-jasmine: ^5.1.0 + path-browserify: ^1.0.1 prettier: ^2.8.4 replace-in-file: ^7.0.1 resolve-typescript-plugin: ^2.0.1 @@ -48,7 +54,7 @@ __metadata: webpack-cli: ^5.1.1 webpack-dev-server: ^4.15.0 bin: - bb.js: ./dest/main.js + bb: dest/node/main.js languageName: unknown linkType: soft @@ -447,6 +453,13 @@ __metadata: languageName: node linkType: hard +"@colors/colors@npm:1.5.0": + version: 1.5.0 + resolution: "@colors/colors@npm:1.5.0" + checksum: d64d5260bed1d5012ae3fc617d38d1afc0329fec05342f4e6b838f46998855ba56e0a73833f4a80fa8378c84810da254f76a8a19c39d038260dc06dc4e007425 + languageName: node + linkType: hard + "@discoveryjs/json-ext@npm:^0.5.0": version: 0.5.7 resolution: "@discoveryjs/json-ext@npm:0.5.7" @@ -919,6 +932,13 @@ __metadata: languageName: node linkType: hard +"@socket.io/component-emitter@npm:~3.1.0": + version: 3.1.0 + resolution: "@socket.io/component-emitter@npm:3.1.0" + checksum: db069d95425b419de1514dffe945cc439795f6a8ef5b9465715acf5b8b50798e2c91b8719cbf5434b3fe7de179d6cdcd503c277b7871cb3dd03febb69bdd50fa + languageName: node + linkType: hard + "@tootallnate/once@npm:2": version: 2.0.0 resolution: "@tootallnate/once@npm:2.0.0" @@ -1005,6 +1025,22 @@ __metadata: languageName: node linkType: hard +"@types/cookie@npm:^0.4.1": + version: 0.4.1 + resolution: "@types/cookie@npm:0.4.1" + checksum: 3275534ed69a76c68eb1a77d547d75f99fedc80befb75a3d1d03662fb08d697e6f8b1274e12af1a74c6896071b11510631ba891f64d30c78528d0ec45a9c1a18 + languageName: node + linkType: hard + +"@types/cors@npm:^2.8.12": + version: 2.8.13 + resolution: "@types/cors@npm:2.8.13" + dependencies: + "@types/node": "*" + checksum: 7ef197ea19d2e5bf1313b8416baa6f3fd6dd887fd70191da1f804f557395357dafd8bc8bed0ac60686923406489262a7c8a525b55748f7b2b8afa686700de907 + languageName: node + linkType: hard + "@types/debug@npm:^4.1.7": version: 4.1.8 resolution: "@types/debug@npm:4.1.8" @@ -1167,6 +1203,13 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:>=10.0.0": + version: 20.5.1 + resolution: "@types/node@npm:20.5.1" + checksum: 3dbe611cd67afa987102c8558ee70f848949c5dcfee5f60abc073e55c0d7b048e391bf06bb1e0dc052cb7210ca97136ac496cbaf6e89123c989de6bd125fde82 + languageName: node + linkType: hard + "@types/node@npm:^18.7.23": version: 18.16.18 resolution: "@types/node@npm:18.16.18" @@ -1957,6 +2000,13 @@ __metadata: languageName: node linkType: hard +"base64id@npm:2.0.0, base64id@npm:~2.0.0": + version: 2.0.0 + resolution: "base64id@npm:2.0.0" + checksum: 581b1d37e6cf3738b7ccdd4d14fe2bfc5c238e696e2720ee6c44c183b838655842e22034e53ffd783f872a539915c51b0d4728a49c7cc678ac5a758e00d62168 + languageName: node + linkType: hard + "batch@npm:0.6.1": version: 0.6.1 resolution: "batch@npm:0.6.1" @@ -1991,6 +2041,26 @@ __metadata: languageName: node linkType: hard +"body-parser@npm:^1.19.0": + version: 1.20.2 + resolution: "body-parser@npm:1.20.2" + dependencies: + bytes: 3.1.2 + content-type: ~1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.2 + type-is: ~1.6.18 + unpipe: 1.0.0 + checksum: 14d37ec638ab5c93f6099ecaed7f28f890d222c650c69306872e00b9efa081ff6c596cd9afb9930656aae4d6c4e1c17537bea12bb73c87a217cb3cfea8896737 + languageName: node + linkType: hard + "bonjour-service@npm:^1.0.11": version: 1.1.1 resolution: "bonjour-service@npm:1.1.1" @@ -2197,7 +2267,7 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:^3.5.3": +"chokidar@npm:^3.5.1, chokidar@npm:^3.5.3": version: 3.5.3 resolution: "chokidar@npm:3.5.3" dependencies: @@ -2260,6 +2330,17 @@ __metadata: languageName: node linkType: hard +"cliui@npm:^7.0.2": + version: 7.0.4 + resolution: "cliui@npm:7.0.4" + dependencies: + string-width: ^4.2.0 + strip-ansi: ^6.0.0 + wrap-ansi: ^7.0.0 + checksum: ce2e8f578a4813806788ac399b9e866297740eecd4ad1823c27fd344d78b22c5f8597d548adbcc46f0573e43e21e751f39446c5a5e804a12aace402b7a315d7f + languageName: node + linkType: hard + "cliui@npm:^8.0.1": version: 8.0.1 resolution: "cliui@npm:8.0.1" @@ -2410,6 +2491,18 @@ __metadata: languageName: node linkType: hard +"connect@npm:^3.7.0": + version: 3.7.0 + resolution: "connect@npm:3.7.0" + dependencies: + debug: 2.6.9 + finalhandler: 1.1.2 + parseurl: ~1.3.3 + utils-merge: 1.0.1 + checksum: 96e1c4effcf219b065c7823e57351c94366d2e2a6952fa95e8212bffb35c86f1d5a3f9f6c5796d4cd3a5fdda628368b1c3cc44bf19c66cfd68fe9f9cab9177e2 + languageName: node + linkType: hard + "console-control-strings@npm:^1.1.0": version: 1.1.0 resolution: "console-control-strings@npm:1.1.0" @@ -2426,7 +2519,7 @@ __metadata: languageName: node linkType: hard -"content-type@npm:~1.0.4": +"content-type@npm:~1.0.4, content-type@npm:~1.0.5": version: 1.0.5 resolution: "content-type@npm:1.0.5" checksum: 566271e0a251642254cde0f845f9dd4f9856e52d988f4eb0d0dcffbb7a1f8ec98de7a5215fc628f3bce30fe2fb6fd2bc064b562d721658c59b544e2d34ea2766 @@ -2461,6 +2554,13 @@ __metadata: languageName: node linkType: hard +"cookie@npm:~0.4.1": + version: 0.4.2 + resolution: "cookie@npm:0.4.2" + checksum: a00833c998bedf8e787b4c342defe5fa419abd96b32f4464f718b91022586b8f1bafbddd499288e75c037642493c83083da426c6a9080d309e3bd90fd11baa9b + languageName: node + linkType: hard + "copy-webpack-plugin@npm:^11.0.0": version: 11.0.0 resolution: "copy-webpack-plugin@npm:11.0.0" @@ -2484,6 +2584,16 @@ __metadata: languageName: node linkType: hard +"cors@npm:~2.8.5": + version: 2.8.5 + resolution: "cors@npm:2.8.5" + dependencies: + object-assign: ^4 + vary: ^1 + checksum: ced838404ccd184f61ab4fdc5847035b681c90db7ac17e428f3d81d69e2989d2b680cc254da0e2554f5ed4f8a341820a1ce3d1c16b499f6e2f47a1b9b07b5006 + languageName: node + linkType: hard + "cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": version: 7.0.3 resolution: "cross-spawn@npm:7.0.3" @@ -2515,6 +2625,20 @@ __metadata: languageName: node linkType: hard +"custom-event@npm:~1.0.0": + version: 1.0.1 + resolution: "custom-event@npm:1.0.1" + checksum: 334f48a6d5fb98df95c5f72cab2729417ffdcc74aebb1d51aa9220391bdee028ec36d9e19976a5a64f536e1e4aceb5bb4f0232d4761acc3e8fd74c54573959bd + languageName: node + linkType: hard + +"date-format@npm:^4.0.14": + version: 4.0.14 + resolution: "date-format@npm:4.0.14" + checksum: dfe5139df6af5759b9dd3c007b899b3f60d45a9240ffeee6314ab74e6ab52e9b519a44ccf285888bdd6b626c66ee9b4c8a523075fa1140617b5beb1cbb9b18d1 + languageName: node + linkType: hard + "debug@npm:2.6.9": version: 2.6.9 resolution: "debug@npm:2.6.9" @@ -2524,7 +2648,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:~4.3.1, debug@npm:~4.3.2": version: 4.3.4 resolution: "debug@npm:4.3.4" dependencies: @@ -2615,6 +2739,13 @@ __metadata: languageName: node linkType: hard +"di@npm:^0.0.1": + version: 0.0.1 + resolution: "di@npm:0.0.1" + checksum: 3f09a99534d33e49264585db7f863ea8bc76c25c4d5a60df387c946018ecf1e1516b2c05a2092e5ca51fcdc08cefe609a6adc5253fa831626cb78cad4746505e + languageName: node + linkType: hard + "diff-sequences@npm:^29.4.3": version: 29.4.3 resolution: "diff-sequences@npm:29.4.3" @@ -2665,6 +2796,18 @@ __metadata: languageName: node linkType: hard +"dom-serialize@npm:^2.2.1": + version: 2.2.1 + resolution: "dom-serialize@npm:2.2.1" + dependencies: + custom-event: ~1.0.0 + ent: ~2.2.0 + extend: ^3.0.0 + void-elements: ^2.0.0 + checksum: 48262e299a694dbfa32905ecceb29b89f2ce59adfc00cb676284f85ee0c8db0225e07961cbf9b06bf309291deebf52c958f855a5b6709d556000acf46d5a46ef + languageName: node + linkType: hard + "dom-serializer@npm:^1.0.1": version: 1.4.1 resolution: "dom-serializer@npm:1.4.1" @@ -2771,6 +2914,31 @@ __metadata: languageName: node linkType: hard +"engine.io-parser@npm:~5.2.1": + version: 5.2.1 + resolution: "engine.io-parser@npm:5.2.1" + checksum: 55b0e8e18500f50c1573675c53597c5552554ead08d3f30ff19fde6409e48f882a8e01f84e9772cd155c18a1d653d06f6bf57b4e1f8b834c63c9eaf3b657b88e + languageName: node + linkType: hard + +"engine.io@npm:~6.5.2": + version: 6.5.2 + resolution: "engine.io@npm:6.5.2" + dependencies: + "@types/cookie": ^0.4.1 + "@types/cors": ^2.8.12 + "@types/node": ">=10.0.0" + accepts: ~1.3.4 + base64id: 2.0.0 + cookie: ~0.4.1 + cors: ~2.8.5 + debug: ~4.3.1 + engine.io-parser: ~5.2.1 + ws: ~8.11.0 + checksum: 2fb1da39932d526cd5033c399978c65d367cce51e6b511a572bcf4a520b863652e26123d7efceee6cef8c96221585eb953a0e541ae25f6009e9ff5149b067ecd + languageName: node + linkType: hard + "enhanced-resolve@npm:^5.0.0, enhanced-resolve@npm:^5.14.1, enhanced-resolve@npm:^5.7.0": version: 5.15.0 resolution: "enhanced-resolve@npm:5.15.0" @@ -2781,6 +2949,13 @@ __metadata: languageName: node linkType: hard +"ent@npm:~2.2.0": + version: 2.2.0 + resolution: "ent@npm:2.2.0" + checksum: f588b5707d6fef36011ea10d530645912a69530a1eb0831f8708c498ac028363a7009f45cfadd28ceb4dafd9ac17ec15213f88d09ce239cd033cfe1328dd7d7d + languageName: node + linkType: hard + "entities@npm:^2.0.0": version: 2.2.0 resolution: "entities@npm:2.2.0" @@ -3113,6 +3288,13 @@ __metadata: languageName: node linkType: hard +"extend@npm:^3.0.0": + version: 3.0.2 + resolution: "extend@npm:3.0.2" + checksum: a50a8309ca65ea5d426382ff09f33586527882cf532931cb08ca786ea3146c0553310bda688710ff61d7668eba9f96b923fe1420cdf56a2c3eaf30fcab87b515 + languageName: node + linkType: hard + "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": version: 3.1.3 resolution: "fast-deep-equal@npm:3.1.3" @@ -3199,6 +3381,21 @@ __metadata: languageName: node linkType: hard +"finalhandler@npm:1.1.2": + version: 1.1.2 + resolution: "finalhandler@npm:1.1.2" + dependencies: + debug: 2.6.9 + encodeurl: ~1.0.2 + escape-html: ~1.0.3 + on-finished: ~2.3.0 + parseurl: ~1.3.3 + statuses: ~1.5.0 + unpipe: ~1.0.0 + checksum: 617880460c5138dd7ccfd555cb5dde4d8f170f4b31b8bd51e4b646bb2946c30f7db716428a1f2882d730d2b72afb47d1f67cc487b874cb15426f95753a88965e + languageName: node + linkType: hard + "finalhandler@npm:1.2.0": version: 1.2.0 resolution: "finalhandler@npm:1.2.0" @@ -3244,7 +3441,7 @@ __metadata: languageName: node linkType: hard -"flatted@npm:^3.1.0": +"flatted@npm:^3.1.0, flatted@npm:^3.2.7": version: 3.2.7 resolution: "flatted@npm:3.2.7" checksum: 427633049d55bdb80201c68f7eb1cbd533e03eac541f97d3aecab8c5526f12a20ccecaeede08b57503e772c769e7f8680b37e8d482d1e5f8d7e2194687f9ea35 @@ -3285,6 +3482,17 @@ __metadata: languageName: node linkType: hard +"fs-extra@npm:^8.1.0": + version: 8.1.0 + resolution: "fs-extra@npm:8.1.0" + dependencies: + graceful-fs: ^4.2.0 + jsonfile: ^4.0.0 + universalify: ^0.1.0 + checksum: bf44f0e6cea59d5ce071bba4c43ca76d216f89e402dc6285c128abc0902e9b8525135aa808adad72c9d5d218e9f4bcc63962815529ff2f684ad532172a284880 + languageName: node + linkType: hard + "fs-minipass@npm:^2.0.0": version: 2.1.0 resolution: "fs-minipass@npm:2.1.0" @@ -3439,7 +3647,22 @@ __metadata: languageName: node linkType: hard -"glob@npm:^7.1.3, glob@npm:^7.1.4": +"glob@npm:^10.3.3": + version: 10.3.3 + resolution: "glob@npm:10.3.3" + dependencies: + foreground-child: ^3.1.0 + jackspeak: ^2.0.3 + minimatch: ^9.0.1 + minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 + path-scurry: ^1.10.1 + bin: + glob: dist/cjs/src/bin.js + checksum: 29190d3291f422da0cb40b77a72fc8d2c51a36524e99b8bf412548b7676a6627489528b57250429612b6eec2e6fe7826d328451d3e694a9d15e575389308ec53 + languageName: node + linkType: hard + +"glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.7": version: 7.2.3 resolution: "glob@npm:7.2.3" dependencies: @@ -3509,7 +3732,7 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": +"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc7 @@ -4023,6 +4246,13 @@ __metadata: languageName: node linkType: hard +"isbinaryfile@npm:^4.0.8": + version: 4.0.10 + resolution: "isbinaryfile@npm:4.0.10" + checksum: a6b28db7e23ac7a77d3707567cac81356ea18bd602a4f21f424f862a31d0e7ab4f250759c98a559ece35ffe4d99f0d339f1ab884ffa9795172f632ab8f88e686 + languageName: node + linkType: hard + "isexe@npm:^2.0.0": version: 2.0.0 resolution: "isexe@npm:2.0.0" @@ -4102,6 +4332,20 @@ __metadata: languageName: node linkType: hard +"jasmine-core@npm:^4.1.0": + version: 4.6.0 + resolution: "jasmine-core@npm:4.6.0" + checksum: c5c5ce16c512cf0bc8b6b4f2d4f0ac7b23cae90624e0cd9d22da3baab3266e9a4da5a9363fb7937b16e0a4cf550bb79183cd74483ce55cfff4b6678434d599b7 + languageName: node + linkType: hard + +"jasmine-core@npm:^5.1.0": + version: 5.1.0 + resolution: "jasmine-core@npm:5.1.0" + checksum: 4517cd0f316b0cead252031f847c49da31fef91c270af924b04cb24db97fac727084535d9794a862866886f26ae749df693cf1fdbdb0f84214dce1f2e0cb86dc + languageName: node + linkType: hard + "jest-changed-files@npm:^29.5.0": version: 29.5.0 resolution: "jest-changed-files@npm:29.5.0" @@ -4631,6 +4875,72 @@ __metadata: languageName: node linkType: hard +"jsonfile@npm:^4.0.0": + version: 4.0.0 + resolution: "jsonfile@npm:4.0.0" + dependencies: + graceful-fs: ^4.1.6 + dependenciesMeta: + graceful-fs: + optional: true + checksum: 6447d6224f0d31623eef9b51185af03ac328a7553efcee30fa423d98a9e276ca08db87d71e17f2310b0263fd3ffa6c2a90a6308367f661dc21580f9469897c9e + languageName: node + linkType: hard + +"karma-chrome-launcher@npm:^3.2.0": + version: 3.2.0 + resolution: "karma-chrome-launcher@npm:3.2.0" + dependencies: + which: ^1.2.1 + checksum: e1119e4f95dbcdaec937e5d15a9ffea1b7e5c1d7566f7074ff140161983d4a0821ad274d3dcc34aacfb792caf842a39c459ba9c263723faa6a060cca8692d9b7 + languageName: node + linkType: hard + +"karma-jasmine@npm:^5.1.0": + version: 5.1.0 + resolution: "karma-jasmine@npm:5.1.0" + dependencies: + jasmine-core: ^4.1.0 + peerDependencies: + karma: ^6.0.0 + checksum: ebefd1094e7c2b4c854027621d854908166c79cccaabb5a6ba0ace42cd785a9da0a9aad1aa41937956bd4848287eac04886eebfd7c851b927d2132d3563b7739 + languageName: node + linkType: hard + +"karma@npm:^6.4.2": + version: 6.4.2 + resolution: "karma@npm:6.4.2" + dependencies: + "@colors/colors": 1.5.0 + body-parser: ^1.19.0 + braces: ^3.0.2 + chokidar: ^3.5.1 + connect: ^3.7.0 + di: ^0.0.1 + dom-serialize: ^2.2.1 + glob: ^7.1.7 + graceful-fs: ^4.2.6 + http-proxy: ^1.18.1 + isbinaryfile: ^4.0.8 + lodash: ^4.17.21 + log4js: ^6.4.1 + mime: ^2.5.2 + minimatch: ^3.0.4 + mkdirp: ^0.5.5 + qjobs: ^1.2.0 + range-parser: ^1.2.1 + rimraf: ^3.0.2 + socket.io: ^4.4.1 + source-map: ^0.6.1 + tmp: ^0.2.1 + ua-parser-js: ^0.7.30 + yargs: ^16.1.1 + bin: + karma: bin/karma + checksum: e493874729d87955f7c0f1f6c20b2e27184c82a3b33a14607538df9b049077b0263ecb398f5f0ebbba92325cb16f4f43a1461fa486d5a06eabbfdfb5f289f001 + languageName: node + linkType: hard + "kind-of@npm:^6.0.2": version: 6.0.3 resolution: "kind-of@npm:6.0.3" @@ -4725,6 +5035,19 @@ __metadata: languageName: node linkType: hard +"log4js@npm:^6.4.1": + version: 6.9.1 + resolution: "log4js@npm:6.9.1" + dependencies: + date-format: ^4.0.14 + debug: ^4.3.4 + flatted: ^3.2.7 + rfdc: ^1.3.0 + streamroller: ^3.1.5 + checksum: 59d98c37d4163138dab5d9b06ae26965d1353106fece143973d57b1003b3a482791aa21374fd2cca81a953b8837b2f9756ac225404e60cbfa4dd3ab59f082e2e + languageName: node + linkType: hard + "lower-case@npm:^2.0.2": version: 2.0.2 resolution: "lower-case@npm:2.0.2" @@ -4766,6 +5089,13 @@ __metadata: languageName: node linkType: hard +"lru-cache@npm:^9.1.1 || ^10.0.0": + version: 10.0.1 + resolution: "lru-cache@npm:10.0.1" + checksum: 06f8d0e1ceabd76bb6f644a26dbb0b4c471b79c7b514c13c6856113879b3bf369eb7b497dad4ff2b7e2636db202412394865b33c332100876d838ad1372f0181 + languageName: node + linkType: hard + "make-dir@npm:^3.0.0": version: 3.1.0 resolution: "make-dir@npm:3.1.0" @@ -4893,6 +5223,15 @@ __metadata: languageName: node linkType: hard +"mime@npm:^2.5.2": + version: 2.6.0 + resolution: "mime@npm:2.6.0" + bin: + mime: cli.js + checksum: 1497ba7b9f6960694268a557eae24b743fd2923da46ec392b042469f4b901721ba0adcf8b0d3c2677839d0e243b209d76e5edcbd09cfdeffa2dfb6bb4df4b862 + languageName: node + linkType: hard + "mimic-fn@npm:^2.1.0": version: 2.1.0 resolution: "mimic-fn@npm:2.1.0" @@ -5015,6 +5354,13 @@ __metadata: languageName: node linkType: hard +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0": + version: 7.0.3 + resolution: "minipass@npm:7.0.3" + checksum: 6f1614f5b5b55568a46bca5fec0e7c46dac027691db27d0e1923a8192866903144cd962ac772c0e9f89b608ea818b702709c042bce98e190d258847d85461531 + languageName: node + linkType: hard + "minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": version: 2.1.2 resolution: "minizlib@npm:2.1.2" @@ -5025,6 +5371,17 @@ __metadata: languageName: node linkType: hard +"mkdirp@npm:^0.5.5": + version: 0.5.6 + resolution: "mkdirp@npm:0.5.6" + dependencies: + minimist: ^1.2.6 + bin: + mkdirp: bin/cmd.js + checksum: 0c91b721bb12c3f9af4b77ebf73604baf350e64d80df91754dc509491ae93bf238581e59c7188360cec7cb62fc4100959245a42cfe01834efedc5e9d068376c2 + languageName: node + linkType: hard + "mkdirp@npm:^1.0.3": version: 1.0.4 resolution: "mkdirp@npm:1.0.4" @@ -5195,6 +5552,13 @@ __metadata: languageName: node linkType: hard +"object-assign@npm:^4": + version: 4.1.1 + resolution: "object-assign@npm:4.1.1" + checksum: fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f + languageName: node + linkType: hard + "object-inspect@npm:^1.9.0": version: 1.12.3 resolution: "object-inspect@npm:1.12.3" @@ -5218,6 +5582,15 @@ __metadata: languageName: node linkType: hard +"on-finished@npm:~2.3.0": + version: 2.3.0 + resolution: "on-finished@npm:2.3.0" + dependencies: + ee-first: 1.1.1 + checksum: 1db595bd963b0124d6fa261d18320422407b8f01dc65863840f3ddaaf7bcad5b28ff6847286703ca53f4ec19595bd67a2f1253db79fc4094911ec6aa8df1671b + languageName: node + linkType: hard + "on-headers@npm:~1.0.2": version: 1.0.2 resolution: "on-headers@npm:1.0.2" @@ -5378,6 +5751,13 @@ __metadata: languageName: node linkType: hard +"path-browserify@npm:^1.0.1": + version: 1.0.1 + resolution: "path-browserify@npm:1.0.1" + checksum: c6d7fa376423fe35b95b2d67990060c3ee304fc815ff0a2dc1c6c3cfaff2bd0d572ee67e18f19d0ea3bbe32e8add2a05021132ac40509416459fffee35200699 + languageName: node + linkType: hard + "path-exists@npm:^4.0.0": version: 4.0.0 resolution: "path-exists@npm:4.0.0" @@ -5406,6 +5786,16 @@ __metadata: languageName: node linkType: hard +"path-scurry@npm:^1.10.1": + version: 1.10.1 + resolution: "path-scurry@npm:1.10.1" + dependencies: + lru-cache: ^9.1.1 || ^10.0.0 + minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 + checksum: e2557cff3a8fb8bc07afdd6ab163a92587884f9969b05bbbaf6fe7379348bfb09af9ed292af12ed32398b15fb443e81692047b786d1eeb6d898a51eb17ed7d90 + languageName: node + linkType: hard + "path-scurry@npm:^1.7.0": version: 1.9.2 resolution: "path-scurry@npm:1.9.2" @@ -5548,6 +5938,13 @@ __metadata: languageName: node linkType: hard +"qjobs@npm:^1.2.0": + version: 1.2.0 + resolution: "qjobs@npm:1.2.0" + checksum: eb64c00724d2fecaf9246383b4eebc3a4c34845b25d41921dd57f41b30a4310cef661543facac27ceb6911aab64a1acdf45b5d8f1d5e2838554d0c010ee56852 + languageName: node + linkType: hard + "qs@npm:6.11.0": version: 6.11.0 resolution: "qs@npm:6.11.0" @@ -5592,6 +5989,18 @@ __metadata: languageName: node linkType: hard +"raw-body@npm:2.5.2": + version: 2.5.2 + resolution: "raw-body@npm:2.5.2" + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + checksum: ba1583c8d8a48e8fbb7a873fdbb2df66ea4ff83775421bfe21ee120140949ab048200668c47d9ae3880012f6e217052690628cf679ddfbd82c9fc9358d574676 + languageName: node + linkType: hard + "react-is@npm:^18.0.0": version: 18.2.0 resolution: "react-is@npm:18.2.0" @@ -5785,7 +6194,14 @@ __metadata: languageName: node linkType: hard -"rimraf@npm:^3.0.2": +"rfdc@npm:^1.3.0": + version: 1.3.0 + resolution: "rfdc@npm:1.3.0" + checksum: fb2ba8512e43519983b4c61bd3fa77c0f410eff6bae68b08614437bc3f35f91362215f7b4a73cbda6f67330b5746ce07db5dd9850ad3edc91271ad6deea0df32 + languageName: node + linkType: hard + +"rimraf@npm:^3.0.0, rimraf@npm:^3.0.2": version: 3.0.2 resolution: "rimraf@npm:3.0.2" dependencies: @@ -6048,6 +6464,40 @@ __metadata: languageName: node linkType: hard +"socket.io-adapter@npm:~2.5.2": + version: 2.5.2 + resolution: "socket.io-adapter@npm:2.5.2" + dependencies: + ws: ~8.11.0 + checksum: 481251c3547221e57eb5cb247d0b1a3cde4d152a4c1c9051cc887345a7770e59f3b47f1011cac4499e833f01fcfc301ed13c4ec6e72f7dbb48a476375a6344cd + languageName: node + linkType: hard + +"socket.io-parser@npm:~4.2.4": + version: 4.2.4 + resolution: "socket.io-parser@npm:4.2.4" + dependencies: + "@socket.io/component-emitter": ~3.1.0 + debug: ~4.3.1 + checksum: 61540ef99af33e6a562b9effe0fad769bcb7ec6a301aba5a64b3a8bccb611a0abdbe25f469933ab80072582006a78ca136bf0ad8adff9c77c9953581285e2263 + languageName: node + linkType: hard + +"socket.io@npm:^4.4.1": + version: 4.7.2 + resolution: "socket.io@npm:4.7.2" + dependencies: + accepts: ~1.3.4 + base64id: ~2.0.0 + cors: ~2.8.5 + debug: ~4.3.2 + engine.io: ~6.5.2 + socket.io-adapter: ~2.5.2 + socket.io-parser: ~4.2.4 + checksum: 2dfac8983a75e100e889c3dafc83b21b75a9863d0d1ee79cdc60c4391d5d9dffcf3a86fc8deca7568032bc11c2572676335fd2e469c7982f40d19f1141d4b266 + languageName: node + linkType: hard + "sockjs@npm:^0.3.24": version: 0.3.24 resolution: "sockjs@npm:0.3.24" @@ -6166,13 +6616,24 @@ __metadata: languageName: node linkType: hard -"statuses@npm:>= 1.4.0 < 2": +"statuses@npm:>= 1.4.0 < 2, statuses@npm:~1.5.0": version: 1.5.0 resolution: "statuses@npm:1.5.0" checksum: c469b9519de16a4bb19600205cffb39ee471a5f17b82589757ca7bd40a8d92ebb6ed9f98b5a540c5d302ccbc78f15dc03cc0280dd6e00df1335568a5d5758a5c languageName: node linkType: hard +"streamroller@npm:^3.1.5": + version: 3.1.5 + resolution: "streamroller@npm:3.1.5" + dependencies: + date-format: ^4.0.14 + debug: ^4.3.4 + fs-extra: ^8.1.0 + checksum: c1df5612b785ffa4b6bbf16460590b62994c57265bc55a5166eebeeb0daf648e84bc52dc6d57e0cd4e5c7609bda93076753c63ff54589febd1e0b95590f0e443 + languageName: node + linkType: hard + "string-length@npm:^4.0.1": version: 4.0.2 resolution: "string-length@npm:4.0.2" @@ -6385,6 +6846,15 @@ __metadata: languageName: node linkType: hard +"tmp@npm:^0.2.1": + version: 0.2.1 + resolution: "tmp@npm:0.2.1" + dependencies: + rimraf: ^3.0.0 + checksum: 8b1214654182575124498c87ca986ac53dc76ff36e8f0e0b67139a8d221eaecfdec108c0e6ec54d76f49f1f72ab9325500b246f562b926f85bcdfca8bf35df9e + languageName: node + linkType: hard + "tmpl@npm:1.0.5": version: 1.0.5 resolution: "tmpl@npm:1.0.5" @@ -6577,6 +7047,13 @@ __metadata: languageName: node linkType: hard +"ua-parser-js@npm:^0.7.30": + version: 0.7.35 + resolution: "ua-parser-js@npm:0.7.35" + checksum: 0a332e8d72d277e62f29ecb3a33843b274de93eb9378350b746ea0f89ef05ee09c94f2c1fdab8001373ad5e95a48beb0a94f39dc1670c908db9fc9b8f0876204 + languageName: node + linkType: hard + "unique-filename@npm:^3.0.0": version: 3.0.0 resolution: "unique-filename@npm:3.0.0" @@ -6595,6 +7072,13 @@ __metadata: languageName: node linkType: hard +"universalify@npm:^0.1.0": + version: 0.1.2 + resolution: "universalify@npm:0.1.2" + checksum: 40cdc60f6e61070fe658ca36016a8f4ec216b29bf04a55dce14e3710cc84c7448538ef4dad3728d0bfe29975ccd7bfb5f414c45e7b78883567fb31b246f02dff + languageName: node + linkType: hard + "unpipe@npm:1.0.0, unpipe@npm:~1.0.0": version: 1.0.0 resolution: "unpipe@npm:1.0.0" @@ -6666,13 +7150,20 @@ __metadata: languageName: node linkType: hard -"vary@npm:~1.1.2": +"vary@npm:^1, vary@npm:~1.1.2": version: 1.1.2 resolution: "vary@npm:1.1.2" checksum: ae0123222c6df65b437669d63dfa8c36cee20a504101b2fcd97b8bf76f91259c17f9f2b4d70a1e3c6bbcee7f51b28392833adb6b2770b23b01abec84e369660b languageName: node linkType: hard +"void-elements@npm:^2.0.0": + version: 2.0.1 + resolution: "void-elements@npm:2.0.1" + checksum: 700c07ba9cfa2dff88bb23974b3173118f9ad8107143db9e5d753552be15cf93380954d4e7f7d7bc80e7306c35c3a7fb83ab0ce4d4dcc18abf90ca8b31452126 + languageName: node + linkType: hard + "walker@npm:^1.0.8": version: 1.0.8 resolution: "walker@npm:1.0.8" @@ -6867,6 +7358,17 @@ __metadata: languageName: node linkType: hard +"which@npm:^1.2.1": + version: 1.3.1 + resolution: "which@npm:1.3.1" + dependencies: + isexe: ^2.0.0 + bin: + which: ./bin/which + checksum: f2e185c6242244b8426c9df1510e86629192d93c1a986a7d2a591f2c24869e7ffd03d6dac07ca863b2e4c06f59a4cc9916c585b72ee9fa1aa609d0124df15e04 + languageName: node + linkType: hard + "which@npm:^2.0.1, which@npm:^2.0.2": version: 2.0.2 resolution: "which@npm:2.0.2" @@ -6955,6 +7457,21 @@ __metadata: languageName: node linkType: hard +"ws@npm:~8.11.0": + version: 8.11.0 + resolution: "ws@npm:8.11.0" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 316b33aba32f317cd217df66dbfc5b281a2f09ff36815de222bc859e3424d83766d9eb2bd4d667de658b6ab7be151f258318fb1da812416b30be13103e5b5c67 + languageName: node + linkType: hard + "y18n@npm:^5.0.5": version: 5.0.8 resolution: "y18n@npm:5.0.8" @@ -6976,6 +7493,13 @@ __metadata: languageName: node linkType: hard +"yargs-parser@npm:^20.2.2": + version: 20.2.9 + resolution: "yargs-parser@npm:20.2.9" + checksum: 8bb69015f2b0ff9e17b2c8e6bfe224ab463dd00ca211eece72a4cd8a906224d2703fb8a326d36fdd0e68701e201b2a60ed7cf81ce0fd9b3799f9fe7745977ae3 + languageName: node + linkType: hard + "yargs-parser@npm:^21.0.1, yargs-parser@npm:^21.1.1": version: 21.1.1 resolution: "yargs-parser@npm:21.1.1" @@ -6983,6 +7507,21 @@ __metadata: languageName: node linkType: hard +"yargs@npm:^16.1.1": + version: 16.2.0 + resolution: "yargs@npm:16.2.0" + dependencies: + cliui: ^7.0.2 + escalade: ^3.1.1 + get-caller-file: ^2.0.5 + require-directory: ^2.1.1 + string-width: ^4.2.0 + y18n: ^5.0.5 + yargs-parser: ^20.2.2 + checksum: b14afbb51e3251a204d81937c86a7e9d4bdbf9a2bcee38226c900d00f522969ab675703bee2a6f99f8e20103f608382936034e64d921b74df82b63c07c5e8f59 + languageName: node + linkType: hard + "yargs@npm:^17.3.1, yargs@npm:^17.7.2": version: 17.7.2 resolution: "yargs@npm:17.7.2"