diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 67cb0e3d..386c908d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -27,8 +27,10 @@ jobs: run: yarn check-types - name: Lint run: yarn lint - - name: Tests - run: yarn test + - name: Unit Tests + run: yarn test:unit + - name: Browsers Tests + run: yarn test:browsers # Download spec tests with cache - name: Restore spec tests cache @@ -44,23 +46,23 @@ jobs: # Otherwise just doing `yarn test:spec` you can't tell which specific suite failed # many of the suites have identical names for minimal and mainnet - name: Spec tests general - run: yarn mocha test/spec/generic/index.test.ts + run: yarn test:spec-generic working-directory: packages/ssz - name: Spec tests phase0-minimal - run: LODESTAR_PRESET=minimal LODESTAR_FORK=phase0 yarn mocha test/spec/ssz_static.test.ts + run: LODESTAR_FORK=phase0 yarn test:spec-static-minimal working-directory: packages/ssz - name: Spec tests phase0-mainnet - run: LODESTAR_PRESET=mainnet LODESTAR_FORK=phase0 yarn mocha test/spec/ssz_static.test.ts + run: LODESTAR_FORK=phase0 yarn test:spec-static-mainnet working-directory: packages/ssz - name: Spec tests altair-minimal - run: LODESTAR_PRESET=minimal LODESTAR_FORK=altair yarn mocha test/spec/ssz_static.test.ts + run: LODESTAR_FORK=altair yarn test:spec-static-minimal working-directory: packages/ssz - name: Spec tests altair-mainnet - run: LODESTAR_PRESET=mainnet LODESTAR_FORK=altair yarn mocha test/spec/ssz_static.test.ts + run: LODESTAR_FORK=altair yarn test:spec-static-mainnet working-directory: packages/ssz - name: Spec tests bellatrix-minimal - run: LODESTAR_PRESET=minimal LODESTAR_FORK=bellatrix yarn mocha test/spec/ssz_static.test.ts + run: LODESTAR_FORK=bellatrix yarn test:spec-static-minimal working-directory: packages/ssz - name: Spec tests bellatrix-mainnet - run: LODESTAR_PRESET=mainnet LODESTAR_FORK=bellatrix yarn mocha test/spec/ssz_static.test.ts + run: LODESTAR_FORK=bellatrix yarn test:spec-static-mainnet working-directory: packages/ssz diff --git a/package.json b/package.json index d66c047e..7866cf53 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,8 @@ "build": "yarn clean && lerna run build", "lint": "lerna run lint", "check-types": "lerna run check-types", - "coverage": "lerna run coverage", + "test:unit": "lerna run test:unit", + "test:browsers": "lerna run test:browsers", "test": "lerna run test", "benchmark:files": "NODE_OPTIONS='--max_old_space_size=4096 --loader=ts-node/esm' benchmark --config .benchrc.yaml", "benchmark": "yarn benchmark:files 'packages/*/test/perf/**/*.test.ts'", @@ -31,32 +32,29 @@ "@types/node": "^22.10.2", "@typescript-eslint/eslint-plugin": "^6", "@typescript-eslint/parser": "^6", + "@vitest/browser": "^2.1.4", + "@vitest/coverage-v8": "^2.1.4", "babel-loader": "^8.2.2", - "chai": "^4.3.4", "eslint": "^7.30.0", "eslint-plugin-import": "^2.23.4", "eslint-plugin-no-only-tests": "^2.4.0", "eslint-plugin-node": "^11.1.0", "eslint-plugin-prettier": "^3.3.1", - "karma": "^6.3.16", - "karma-babel-preprocessor": "^8.0.1", - "karma-chai": "^0.1.0", - "karma-chrome-launcher": "^3.1.0", - "karma-firefox-launcher": "^1.2.0", - "karma-mocha": "^1.3.0", - "karma-webpack": "^5.0.0", "lerna": "^8.1.3", - "mocha": "^8.3.2", - "nyc": "^15.0.0", + "mocha": "^9.0.1", "prettier": "^2.2.1", "ts-loader": "^9.5.1", "ts-node": "^10.9.2", "typescript": "~5.4.2", + "vite-plugin-node-polyfills": "^0.22.0", + "vitest": "^2.1.4", + "webdriverio": "^9.2.11", "webpack": "^5.75.0", "webpack-cli": "^5.0.1", "webpack-dev-server": "^3.11.2" }, "resolutions": { - "@types/react": "^17.0" + "@types/react": "^17.0", + "chai": "4.5.0" } } \ No newline at end of file diff --git a/packages/as-sha256/karma.config.cjs b/packages/as-sha256/karma.config.cjs deleted file mode 100644 index 3e6902da..00000000 --- a/packages/as-sha256/karma.config.cjs +++ /dev/null @@ -1,46 +0,0 @@ -module.exports = function (config) { - config.set({ - frameworks: ['mocha', 'chai'], - files: [ - 'test/unit/index.test.ts' - ], - preprocessors: { - 'test/unit/index.test.ts': ['webpack'] - }, - webpack: { - mode: "production", - module: { - rules: [ - { - test: /\.ts?$/, - exclude: /node_modules/, - loader: 'ts-loader', - }, - ] - }, - resolve: { - extensions: ['.ts', '.js'] - } - }, - reporters: ['progress'], - port: 9876, // karma web server port - colors: true, - logLevel: config.LOG_INFO, - browsers: ['ChromeHeadless', 'Firefox', 'FirefoxDeveloper', 'FirefoxNightly'], - autoWatch: false, - concurrency: Infinity, - customLaunchers: { - FirefoxHeadless: { - base: 'Firefox', - flags: ['-headless'], - }, - }, - plugins: [ - require("karma-webpack"), - require("karma-chrome-launcher"), - require("karma-firefox-launcher"), - require("karma-mocha"), - require("karma-chai"), - ] - }) -}; \ No newline at end of file diff --git a/packages/as-sha256/package.json b/packages/as-sha256/package.json index 9baf830f..8a6d1e85 100644 --- a/packages/as-sha256/package.json +++ b/packages/as-sha256/package.json @@ -33,10 +33,11 @@ "build:types": "tsc -p tsconfig.build.types.json", "build:web": "webpack --mode production --entry ./index.js --output ./dist/as-sha256.min.js", "test": "yarn run test:unit", - "test:unit": "yarn run test:unit:node", - "test:unit:node": "yarn mocha test/unit/*.test.ts", - "test:unit:browser": "karma start --single-run --browsers ChromeHeadless,FirefoxHeadless karma.config.cjs", - "benchmark": "node --loader ts-node/esm ./node_modules/.bin/benchmark 'test/perf/*.test.ts'", + "test:unit": "vitest run --dir test/unit/", + "test:browsers": "yarn test:browsers:chrome && yarn test:browsers:firefox", + "test:browsers:chrome": "vitest run --browser chrome --config ./vitest.browser.config.ts --dir test/unit", + "test:browsers:firefox": "vitest run --browser firefox --config ./vitest.browser.config.ts --dir test/unit", + "benchmark": "node -r ts-node/register ./node_modules/.bin/benchmark 'test/perf/*.test.ts'", "benchmark:local": "yarn benchmark --local", "test:ci": "yarn test:as-ci" }, diff --git a/packages/as-sha256/src/index.ts b/packages/as-sha256/src/index.ts index 1eca7da1..9de32b8d 100644 --- a/packages/as-sha256/src/index.ts +++ b/packages/as-sha256/src/index.ts @@ -1,6 +1,7 @@ import {allocUnsafe} from "./alloc.js"; import {newInstance} from "./wasm.js"; -import {HashObject, byteArrayIntoHashObject, byteArrayToHashObject, hashObjectToByteArray} from "./hashObject.js"; +import type {HashObject} from "./hashObject.js"; +import {byteArrayIntoHashObject, byteArrayToHashObject, hashObjectToByteArray} from "./hashObject.js"; import SHA256 from "./sha256.js"; export {HashObject, byteArrayToHashObject, hashObjectToByteArray, byteArrayIntoHashObject, SHA256}; diff --git a/packages/as-sha256/test/unit/index.test.ts b/packages/as-sha256/test/unit/index.test.ts index 87b666d5..b0e9d95b 100644 --- a/packages/as-sha256/test/unit/index.test.ts +++ b/packages/as-sha256/test/unit/index.test.ts @@ -1,26 +1,26 @@ +import {describe, it, expect} from "vitest"; import {Buffer} from "buffer"; import * as sha256 from "../../src/index.js"; -import {expect} from "chai"; describe("sha256", function () { describe("digest function", function () { it("abc", function () { const input = Buffer.from("abc", "utf8"); - expect(Buffer.from(sha256.digest(input)).toString("hex")).to.be.equal( + expect(Buffer.from(sha256.digest(input)).toString("hex")).toEqual( "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad" ); }); it("empty string", function () { const input = Buffer.from("", "utf8"); - expect(Buffer.from(sha256.digest(input)).toString("hex")).to.be.equal( + expect(Buffer.from(sha256.digest(input)).toString("hex")).toEqual( "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" ); }); it("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", function () { const input = Buffer.from("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", "utf8"); - expect(Buffer.from(sha256.digest(input)).toString("hex")).to.be.equal( + expect(Buffer.from(sha256.digest(input)).toString("hex")).toEqual( "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1" ); }); @@ -30,7 +30,7 @@ describe("sha256", function () { "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu", "utf8" ); - expect(Buffer.from(sha256.digest(input)).toString("hex")).to.be.equal( + expect(Buffer.from(sha256.digest(input)).toString("hex")).toEqual( "cf5b16a778af8380036ce59e7b0492370b249b11e8f07a51afac45037afee9d1" ); }); @@ -45,7 +45,7 @@ describe("sha256", function () { 131, 72, 178, 215, 235, 20, 207, 110, ]); expect(output).to.be.deep.equal(expectedOutput, "incorrect digest64 result"); - expect(Buffer.from(output).toString("hex")).to.be.equal( + expect(Buffer.from(output).toString("hex")).toEqual( "be39380ff1d0261e6f37dafe4278b662ef611f1cb2f7c0a18348b2d7eb14cf6e" ); // digestTwoHashObjects should be the same to digest64 @@ -57,7 +57,7 @@ describe("sha256", function () { const output2 = new Uint8Array(32); sha256.hashObjectToByteArray(obj, output2, 0); for (let i = 0; i < 32; i++) { - expect(output2[i]).to.be.equal(output[i], "failed at index" + i); + expect(output2[i]).toEqual(output[i], "failed at index" + i); } expect(output2).to.be.deep.equal(expectedOutput, "incorrect digestTwoHashObjects result"); @@ -69,16 +69,16 @@ describe("sha256", function () { const input = Buffer.from("harkamalharkamalharkamalharkamalharkamalharkamalharkamalharkamal", "utf8"); const output = Buffer.from(sha256.digest(input)).toString("hex"); const output64 = Buffer.from(sha256.digest64(input)).toString("hex"); - expect(output).to.be.equal(output64); + expect(output).toEqual(output64); }); it("1024 digest test", function () { const inputStr = "12345678".repeat(128); const input = Buffer.from(inputStr, "utf8"); - expect(input.length).to.be.equal(1024); + expect(input.length).toEqual(1024); const output = Buffer.from(sha256.digest(input)).toString("hex"); - expect(output).to.be.equal("54c7cb8a82d68145fd5f5da4103f5a66f422dbea23d9fc9f40f59b1dcf5403a9"); + expect(output).toEqual("54c7cb8a82d68145fd5f5da4103f5a66f422dbea23d9fc9f40f59b1dcf5403a9"); }); }); }); diff --git a/packages/as-sha256/test/unit/simd.test.ts b/packages/as-sha256/test/unit/simd.test.ts index c96501d9..fbd21e51 100644 --- a/packages/as-sha256/test/unit/simd.test.ts +++ b/packages/as-sha256/test/unit/simd.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import crypto from "crypto"; import {byteArrayToHashObject, hashObjectToByteArray} from "../../src/hashObject.js"; import * as sha256 from "../../src/index.js"; @@ -10,11 +10,11 @@ describe("Test SIMD implementation of as-sha256", () => { const input = Buffer.from(input1 + input2, "utf8"); const outputs = sha256.batchHash4UintArray64s([input, input, input, input]); const expectedOutput = new Uint8Array([ - 190, 57, 56, 15, 241, 208, 38, 30, 111, 55, 218, 254, 66, 120, 182, 98, 239, 97, 31, 28, 178, 247, 192, 161, - 131, 72, 178, 215, 235, 20, 207, 110, + 190, 57, 56, 15, 241, 208, 38, 30, 111, 55, 218, 254, 66, 120, 182, 98, 239, 97, 31, 28, 178, 247, 192, 161, 131, + 72, 178, 215, 235, 20, 207, 110, ]); for (let i = 0; i < 4; i++) { - expect(outputs[i]).to.be.deep.equal(expectedOutput, "incorrect batchHash4UintArray64s result " + i); + expect(outputs[i]).toEqualWithMessage(expectedOutput, "incorrect batchHash4UintArray64s result " + i); } }); @@ -23,10 +23,10 @@ describe("Test SIMD implementation of as-sha256", () => { const input = crypto.randomBytes(64); const outputs = sha256.batchHash4UintArray64s([input, input, input, input]); const expectedOutput = sha256.digest64(input); - expect(outputs[0]).to.be.deep.equal(expectedOutput); - expect(outputs[1]).to.be.deep.equal(expectedOutput); - expect(outputs[2]).to.be.deep.equal(expectedOutput); - expect(outputs[3]).to.be.deep.equal(expectedOutput); + expect(outputs[0]).toEqual(expectedOutput); + expect(outputs[1]).toEqual(expectedOutput); + expect(outputs[2]).toEqual(expectedOutput); + expect(outputs[3]).toEqual(expectedOutput); } }); @@ -35,13 +35,13 @@ describe("Test SIMD implementation of as-sha256", () => { const inputHashObject = byteArrayToHashObject(Buffer.from(input1, "utf8"), 0); const outputs = sha256.batchHash4HashObjectInputs(Array.from({length: 8}, () => inputHashObject)); const expectedOutput = new Uint8Array([ - 190, 57, 56, 15, 241, 208, 38, 30, 111, 55, 218, 254, 66, 120, 182, 98, 239, 97, 31, 28, 178, 247, 192, 161, - 131, 72, 178, 215, 235, 20, 207, 110, + 190, 57, 56, 15, 241, 208, 38, 30, 111, 55, 218, 254, 66, 120, 182, 98, 239, 97, 31, 28, 178, 247, 192, 161, 131, + 72, 178, 215, 235, 20, 207, 110, ]); for (let i = 0; i < 4; i++) { const output = new Uint8Array(32); hashObjectToByteArray(outputs[i], output, 0); - expect(output).to.be.deep.equal(expectedOutput, "incorrect batchHash4UintArray64s result " + i); + expect(output).toEqualWithMessage(expectedOutput, "incorrect batchHash4UintArray64s result " + i); } }); @@ -59,7 +59,7 @@ describe("Test SIMD implementation of as-sha256", () => { const expectedOutputs = Array.from({length: numHash}, (_, i) => sha256.digest64(inputs[i])); for (let i = 0; i < numHash; i++) { - expect(output.subarray(i * 32, (i + 1) * 32)).to.be.deep.equal(expectedOutputs[i]); + expect(output.subarray(i * 32, (i + 1) * 32)).toEqual(expectedOutputs[i]); } }); } diff --git a/packages/as-sha256/tsconfig.json b/packages/as-sha256/tsconfig.json index c26af7db..00e6d569 100644 --- a/packages/as-sha256/tsconfig.json +++ b/packages/as-sha256/tsconfig.json @@ -2,6 +2,6 @@ "extends": "../../tsconfig.json", "include": ["src", "test"], "compilerOptions": { - "typeRoots": ["../../node_modules/@types", "./node_modules/@types", "./types"], + "typeRoots": ["../../node_modules/@types", "./node_modules/@types", "../../types", "./types"], } } diff --git a/packages/as-sha256/vitest.browser.config.ts b/packages/as-sha256/vitest.browser.config.ts new file mode 100644 index 00000000..df569a6b --- /dev/null +++ b/packages/as-sha256/vitest.browser.config.ts @@ -0,0 +1,4 @@ +import {defineConfig, mergeConfig} from "vitest/config"; +import vitestConfig from "../../vitest.base.browser.config"; + +export default mergeConfig(vitestConfig, defineConfig({})); diff --git a/packages/as-sha256/vitest.config.ts b/packages/as-sha256/vitest.config.ts new file mode 100644 index 00000000..a7fceda7 --- /dev/null +++ b/packages/as-sha256/vitest.config.ts @@ -0,0 +1,4 @@ +import {defineConfig, mergeConfig} from "vitest/config"; +import baseConfig from "../../vitest.base.unit.config"; + +export default mergeConfig(baseConfig, defineConfig({})); diff --git a/packages/persistent-merkle-tree/package.json b/packages/persistent-merkle-tree/package.json index 73715325..b01b3957 100644 --- a/packages/persistent-merkle-tree/package.json +++ b/packages/persistent-merkle-tree/package.json @@ -21,7 +21,7 @@ "benchmark:files": "node --max-old-space-size=4096 --expose-gc --loader ts-node/esm ../../node_modules/.bin/benchmark", "benchmark": "yarn benchmark:files 'test/perf/*.test.ts'", "benchmark:local": "yarn benchmark --local", - "test": "mocha 'test/unit/**/*.test.ts'" + "test": "vitest run --dir test/unit" }, "pre-push": [ "lint" diff --git a/packages/persistent-merkle-tree/test/unit/backing.test.ts b/packages/persistent-merkle-tree/test/unit/backing.test.ts index 219d4690..0d28b3c5 100644 --- a/packages/persistent-merkle-tree/test/unit/backing.test.ts +++ b/packages/persistent-merkle-tree/test/unit/backing.test.ts @@ -1,12 +1,11 @@ -import {assert} from "chai"; -import {describe, it} from "mocha"; +import {describe, it, expect} from "vitest"; import {Tree, LeafNode, subtreeFillToDepth} from "../../src/index.js"; describe("get", () => { it("should return the right node", () => { const n = subtreeFillToDepth(LeafNode.fromRoot(Buffer.alloc(32, 1)), 3); const backing = new Tree(n); - assert.deepEqual(backing.getRoot(8n), Buffer.alloc(32, 1)); + expect(backing.getRoot(8n)).toEqual(Uint8Array.from(Buffer.alloc(32, 1))); }); }); @@ -16,6 +15,6 @@ describe("set", () => { const n2 = LeafNode.fromRoot(Buffer.alloc(32, 2)); const backing = new Tree(n); backing.setNode(15n, n2); - assert.deepEqual(backing.getRoot(15n), Buffer.alloc(32, 2)); + expect(backing.getRoot(15n)).toEqual(Uint8Array.from(Buffer.alloc(32, 2))); }); }); diff --git a/packages/persistent-merkle-tree/test/unit/gindex.test.ts b/packages/persistent-merkle-tree/test/unit/gindex.test.ts index 00f6d1cf..c8ce814e 100644 --- a/packages/persistent-merkle-tree/test/unit/gindex.test.ts +++ b/packages/persistent-merkle-tree/test/unit/gindex.test.ts @@ -1,5 +1,4 @@ -import {assert, expect} from "chai"; -import {describe, it} from "mocha"; +import {describe, it, expect} from "vitest"; import { countToDepth, bitIndexBigInt, @@ -28,7 +27,7 @@ describe("countToDepth", () => { for (const [count, depth] of testCases) { it(`should correctly get depth for ${count} elements`, () => { const actual = countToDepth(BigInt(count)); - assert.equal(actual, depth); + expect(actual).toEqual(depth); }); } }); @@ -49,7 +48,7 @@ describe("bigIndexBigInt", () => { for (const [gindex, depth] of testCases) { it(`should correctly get depth for gindex ${gindex}`, () => { const actual = bitIndexBigInt(BigInt(gindex)); - assert.equal(actual, depth); + expect(actual).toEqual(depth); }); } }); @@ -73,7 +72,7 @@ describe("iterateAtDepth", () => { const actual = Array.from(iterateAtDepth(input[0], input[1], input[2])); expect(actual).to.deep.equal(expected); const gindicesActual = getGindicesAtDepth(input[0], Number(input[1]), Number(input[2])); - expect(gindicesActual).to.deep.equal(expected); + expect(gindicesActual).toEqual(expected); }); } }); @@ -91,7 +90,7 @@ describe("concatGindices", () => { for (const {input, expected} of testCases) { it("should correctly concatenate gindices", () => { const actual = concatGindices(input); - expect(actual).to.equal(expected); + expect(actual).toEqual(expected); }); } }); @@ -111,7 +110,7 @@ describe("gindexIterator", () => { const actual = Array.from(gindexIterator(input)); expect(actual).to.deep.equal(expected); const arrActual = getGindexBits(input); - expect(arrActual).to.deep.equal(expected); + expect(arrActual).toEqual(expected); }); } }); diff --git a/packages/persistent-merkle-tree/test/unit/hashComputation.test.ts b/packages/persistent-merkle-tree/test/unit/hashComputation.test.ts index ec48ec94..6ce41340 100644 --- a/packages/persistent-merkle-tree/test/unit/hashComputation.test.ts +++ b/packages/persistent-merkle-tree/test/unit/hashComputation.test.ts @@ -1,5 +1,5 @@ -import { expect } from "chai"; -import { zeroNode, Node } from "../../src/index.js"; +import {describe, it, expect, beforeEach} from "vitest"; +import {zeroNode, Node} from "../../src/index.js"; import {HashComputationLevel} from "../../src/hashComputation.js"; describe("HashComputationLevel", () => { @@ -23,9 +23,9 @@ describe("HashComputationLevel", () => { expect(hashComputationLevel.totalLength).to.be.equal(2); const arr = toArray(hashComputationLevel); expect(arr.length).to.be.equal(2); - expect(arr).to.be.deep.equal([ + expect(arr).toEqual([ + {src0: zeroNode(0), src1: zeroNode(0), dest: zeroNode(1)}, {src0: zeroNode(0), src1: zeroNode(0), dest: zeroNode(1)}, - {src0: zeroNode(0), src1: zeroNode(0), dest: zeroNode(1)} ]); }); @@ -38,9 +38,9 @@ describe("HashComputationLevel", () => { expect(hashComputationLevel.length).to.be.equal(2); expect(hashComputationLevel.totalLength).to.be.equal(2); const arr = toArray(hashComputationLevel); - expect(arr).to.be.deep.equal([ + expect(arr).toEqual([ + {src0: zeroNode(0), src1: zeroNode(0), dest: zeroNode(1)}, {src0: zeroNode(0), src1: zeroNode(0), dest: zeroNode(1)}, - {src0: zeroNode(0), src1: zeroNode(0), dest: zeroNode(1)} ]); }); @@ -53,9 +53,7 @@ describe("HashComputationLevel", () => { expect(hashComputationLevel.length).to.be.equal(1); expect(hashComputationLevel.totalLength).to.be.equal(2); const arr = toArray(hashComputationLevel); - expect(arr).to.be.deep.equal([ - {src0: zeroNode(0), src1: zeroNode(0), dest: zeroNode(1)}, - ]); + expect(arr).toEqual([{src0: zeroNode(0), src1: zeroNode(0), dest: zeroNode(1)}]); }); it("clean", () => { @@ -66,16 +64,13 @@ describe("HashComputationLevel", () => { expect(hashComputationLevel.length).to.be.equal(1); expect(hashComputationLevel.totalLength).to.be.equal(2); const arr = toArray(hashComputationLevel); - expect(arr).to.be.deep.equal([ - {src0: zeroNode(0), src1: zeroNode(0), dest: zeroNode(1)}, - ]); + expect(arr).to.be.deep.equal([{src0: zeroNode(0), src1: zeroNode(0), dest: zeroNode(1)}]); const all = hashComputationLevel.dump(); const last = all[all.length - 1]; - expect(last.src0).to.be.null; - expect(last.src1).to.be.null; - expect(last.dest).to.be.null; + expect(last.src0).toBeNull(); + expect(last.src1).toBeNull(); + expect(last.dest).toBeNull(); }); - }); function toArray(hc: HashComputationLevel): {src0: Node; src1: Node; dest: Node}[] { diff --git a/packages/persistent-merkle-tree/test/unit/hasher.test.ts b/packages/persistent-merkle-tree/test/unit/hasher.test.ts index f68d338c..9fa03282 100644 --- a/packages/persistent-merkle-tree/test/unit/hasher.test.ts +++ b/packages/persistent-merkle-tree/test/unit/hasher.test.ts @@ -1,3 +1,5 @@ +import {describe, it, expect} from "vitest" + import {expectEqualHex} from "../utils/expectHex.js"; import {uint8ArrayToHashObject, hashObjectToUint8Array} from "../../src/hasher/util.js"; import {hasher as nobleHasher} from "../../src/hasher/noble.js"; @@ -5,7 +7,6 @@ import {hasher as asSha256Hasher} from "../../src/hasher/as-sha256.js"; import {hasher as hashtreeHasher} from "../../src/hasher/hashtree.js"; import {buildComparisonTrees} from "../utils/tree.js"; import {HashComputationLevel, HashObject, LeafNode, getHashComputations, subtreeFillToContents} from "../../src/index.js"; -import { expect } from "chai"; import { zeroHash } from "../../src/zeroHash.js"; const hashers = [hashtreeHasher, asSha256Hasher, nobleHasher]; @@ -44,10 +45,10 @@ describe("hashers", function () { const root2 = Buffer.alloc(32, 0xff); const hashObject2 = uint8ArrayToHashObject(root2); const ho1 = {} as HashObject; - nobleHasher.digest64HashObjects(hashObject1, hashObject2, ho1) + nobleHasher.digest64HashObjects(hashObject1, hashObject2, ho1); const hash1 = hashObjectToUint8Array(ho1); const ho2 = {} as HashObject; - asSha256Hasher.digest64HashObjects(hashObject1, hashObject2, ho2) + asSha256Hasher.digest64HashObjects(hashObject1, hashObject2, ho2); const hash2 = hashObjectToUint8Array(ho2); const ho3 = {} as HashObject; hashtreeHasher.digest64HashObjects(hashObject1, hashObject2, ho3); @@ -74,8 +75,10 @@ describe("hasher.digestNLevel", function () { for (const hasher of hashers) { const numValidators = [1, 2, 3, 4]; for (const numValidator of numValidators) { - it (`${hasher.name} digestNLevel ${numValidator} validators = ${8 * numValidator} chunk(s)`, () => { - const nodes = Array.from({length: 8 * numValidator}, (_, i) => LeafNode.fromRoot(Buffer.alloc(32, i + numValidator))); + it(`${hasher.name} digestNLevel ${numValidator} validators = ${8 * numValidator} chunk(s)`, () => { + const nodes = Array.from({length: 8 * numValidator}, (_, i) => + LeafNode.fromRoot(Buffer.alloc(32, i + numValidator)) + ); const hashInput = Buffer.concat(nodes.map((node) => node.root)); const hashOutput = hasher.digestNLevel(hashInput, 3).slice(); for (let i = 0; i < numValidator; i++) { @@ -87,11 +90,10 @@ describe("hasher.digestNLevel", function () { } }); - -describe("hasher.merkleizeBlocksBytes", function () { +describe("hasher.merkleizeInto", function () { const numNodes = [0, 1, 2, 3, 4, 5, 6, 7, 8]; for (const hasher of [nobleHasher, hashtreeHasher, asSha256Hasher]) { - it (`${hasher.name} should throw error if not multiple of 64 bytes`, () => { + it(`${hasher.name} should throw error if not multiple of 64 bytes`, () => { const data = Buffer.alloc(63, 0); const output = Buffer.alloc(32); expect(() => hasher.merkleizeBlocksBytes(data, 2, output, 0)).to.throw("Invalid input length"); @@ -99,7 +101,6 @@ describe("hasher.merkleizeBlocksBytes", function () { for (const numNode of numNodes) { it(`${hasher.name}.merkleizeBlocksBytes for ${numNode} nodes`, () => { - const nodes = Array.from({length: numNode}, (_, i) => LeafNode.fromRoot(Buffer.alloc(32, i))); const data = Buffer.concat(nodes.map((node) => node.root)); const output = Buffer.alloc(32); @@ -119,30 +120,35 @@ describe("hasher.merkleizeBlocksBytes", function () { */ describe("hasher.merkleizeBlockArray", function () { for (const hasher of [nobleHasher, hashtreeHasher, asSha256Hasher]) { - it (`${hasher.name} should throw error if invalid blockLimit`, () => { + it(`${hasher.name} should throw error if invalid blockLimit`, () => { const data = Buffer.alloc(64, 0); const output = Buffer.alloc(32); - expect(() => hasher.merkleizeBlockArray([data], 2, 2, output, 0)).to.throw("Invalid blockLimit, expect to be less than or equal blocks.length 1, got 2"); + expect(() => hasher.merkleizeBlockArray([data], 2, 2, output, 0)).to.throw( + "Invalid blockLimit, expect to be less than or equal blocks.length 1, got 2" + ); }); - it (`${hasher.name} should throw error if not multiple of 64 bytes`, () => { + it(`${hasher.name} should throw error if not multiple of 64 bytes`, () => { const data = Buffer.alloc(63, 0); const output = Buffer.alloc(32); - expect(() => hasher.merkleizeBlockArray([data], 1, 2, output, 0)).to.throw("Invalid block length, expect to be 64 bytes, got 63"); + expect(() => hasher.merkleizeBlockArray([data], 1, 2, output, 0)).to.throw( + "Invalid block length, expect to be 64 bytes, got 63" + ); }); - it (`${hasher.name} should throw error if chunkCount < 1`, () => { + it(`${hasher.name} should throw error if chunkCount < 1`, () => { const data = Buffer.alloc(64, 0); const output = Buffer.alloc(32); const chunkCount = 0; - expect(() => hasher.merkleizeBlockArray([data], 1, chunkCount, output, 0)).to.throw("Invalid padFor, expect to be at least 1, got 0"); + expect(() => hasher.merkleizeBlockArray([data], 1, chunkCount, output, 0)).to.throw( + "Invalid padFor, expect to be at least 1, got 0" + ); }); // hashtree has a buffer of 16 * 64 bytes = 32 nodes const numNodes = [64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79]; for (const numNode of numNodes) { it(`${hasher.name}.merkleizeBlockArray for ${numNode} nodes`, () => { - const nodes = Array.from({length: numNode}, (_, i) => LeafNode.fromRoot(Buffer.alloc(32, i))); const data = Buffer.concat(nodes.map((node) => node.root)); const output = Buffer.alloc(32); @@ -166,4 +172,3 @@ describe("hasher.merkleizeBlockArray", function () { } } }); - diff --git a/packages/persistent-merkle-tree/test/unit/node.test.ts b/packages/persistent-merkle-tree/test/unit/node.test.ts index 1d6a51e4..5ebd6b94 100644 --- a/packages/persistent-merkle-tree/test/unit/node.test.ts +++ b/packages/persistent-merkle-tree/test/unit/node.test.ts @@ -1,5 +1,5 @@ import {HashObject} from "@chainsafe/as-sha256"; -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {BranchNode, LeafNode, countToDepth, subtreeFillToContents} from "../../src/index.js"; import {HashComputation, HashComputationLevel, getHashComputations} from "../../src/hashComputation.js"; @@ -46,9 +46,17 @@ describe("LeafNode uint", () => { // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Unsigned_right_shift const res = leafNode.getUint(bytes, offset) >>> 0; if (asHex) { - expect(res.toString(16)).to.equal(value.toString(16), `Wrong getUint(${bytes}, ${offset})`); + try { + expect(res.toString(16)).toEqual(value.toString(16)); + } catch { + expect.fail(`Wrong getUint(${bytes}, ${offset})`); + } } else { - expect(res).to.equal(value, `Wrong getUint(${bytes}, ${offset})`); + try { + expect(res).toEqual(value); + } catch { + expect.fail(`Wrong getUint(${bytes}, ${offset})`); + } } }); } @@ -67,7 +75,10 @@ describe("LeafNode single bytes", () => { for (let i = 0; i < 32; i++) { leafNode.setUint(1, i, i + 1); } - expect(Buffer.from(leafNode.root).toString("hex")).to.equal(buf.toString("hex"), "Wrong leafNode.root value"); + expect(Buffer.from(leafNode.root).toString("hex")).toEqualWithMessage( + buf.toString("hex"), + "Wrong leafNode.root value" + ); }); it("Write full root with setUintBigint", () => { @@ -75,7 +86,10 @@ describe("LeafNode single bytes", () => { for (let i = 0; i < 32; i++) { leafNode.setUintBigint(1, i, BigInt(i + 1)); } - expect(Buffer.from(leafNode.root).toString("hex")).to.equal(buf.toString("hex"), "Wrong leafNode.root value"); + expect(Buffer.from(leafNode.root).toString("hex")).toEqualWithMessage( + buf.toString("hex"), + "Wrong leafNode.root value" + ); }); it("Get full root with getUint", () => { @@ -84,7 +98,7 @@ describe("LeafNode single bytes", () => { for (let i = 0; i < 32; i++) { out[i] = leafNode.getUint(1, i); } - expect(out.toString("hex")).to.equal(buf.toString("hex"), "Wrong out value"); + expect(out.toString("hex")).toEqualWithMessage(buf.toString("hex"), "Wrong out value"); }); it("Get full root with getUintBigint", () => { @@ -93,7 +107,7 @@ describe("LeafNode single bytes", () => { for (let i = 0; i < 32; i++) { out[i] = Number(leafNode.getUintBigint(1, i)); } - expect(out.toString("hex")).to.equal(buf.toString("hex"), "Wrong out value"); + expect(out.toString("hex")).toEqualWithMessage(buf.toString("hex"), "Wrong out value"); }); }); @@ -105,7 +119,7 @@ describe("setUint getUint - all small values", () => { it(`setUint getUint bytes ${bytes} offset ${offset}`, () => { const value = 0x0f + offset; leafNode.setUint(bytes, offset, value); - expect(leafNode.getUint(bytes, offset)).to.equal(value); + expect(leafNode.getUint(bytes, offset)).toEqual(value); }); } } @@ -119,7 +133,7 @@ describe("setUintBigint getUintBigint - all small values", () => { it(`setUint getUint bytes ${bytes} offset ${offset}`, () => { const value = BigInt(0x0f + offset); leafNode.setUintBigint(bytes, offset, value); - expect(leafNode.getUintBigint(bytes, offset)).to.equal(value); + expect(leafNode.getUintBigint(bytes, offset)).toEqual(value); }); } } @@ -134,7 +148,7 @@ describe("setUint getUint - some big values", () => { for (let offset = 0; offset < 1; offset += bytes) { it(`setUint getUint value ${value} offset ${offset}`, () => { leafNode.setUint(bytes, offset, value); - expect(leafNode.getUint(bytes, offset)).to.equal(value); + expect(leafNode.getUint(bytes, offset)).toEqual(value); }); } } @@ -160,7 +174,7 @@ describe("setUintBigint getUintBigint - some big values", () => { for (let offset = 0; offset < 1; offset += bytes) { it(`setUint getUint value ${value} bytes ${bytes} offset ${offset}`, () => { leafNode.setUintBigint(bytes, offset, value); - expect(leafNode.getUintBigint(bytes, offset)).to.equal(value); + expect(leafNode.getUintBigint(bytes, offset)).toEqual(value); }); } } @@ -191,8 +205,14 @@ describe("getUint with correct sign", () => { h7: 0, }); - expect(leafNodeUint.getUintBigint(8, 0)).to.equal(BigInt("288782042218268212"), "Wrong leafNodeUint.getUintBigint"); - expect(leafNodeInt.getUintBigint(8, 0)).to.equal(BigInt("288782042218268212"), "Wrong leafNodeInt.getUintBigint"); + expect(leafNodeUint.getUintBigint(8, 0)).toEqualWithMessage( + BigInt("288782042218268212"), + "Wrong leafNodeUint.getUintBigint" + ); + expect(leafNodeInt.getUintBigint(8, 0)).toEqualWithMessage( + BigInt("288782042218268212"), + "Wrong leafNodeInt.getUintBigint" + ); }); }); @@ -225,9 +245,9 @@ describe("getHashComputations", () => { const rootNode = subtreeFillToContents(nodes, depth); const hashComputations: HashComputationLevel[] = []; getHashComputations(rootNode, 0, hashComputations); - expect(hashComputations.length).to.equal(expectedLengths.length); + expect(hashComputations.length).toEqual(expectedLengths.length); for (let i = 0; i < hashComputations.length; i++) { - expect(hashComputations[i].length).to.equal(expectedLengths[i]); + expect(hashComputations[i].length).toEqual(expectedLengths[i]); } }); } @@ -255,9 +275,9 @@ describe("getHashComputations", () => { const rootNode = createList(numNode); const hashComputations: HashComputationLevel[] = []; getHashComputations(rootNode, 0, hashComputations); - expect(hashComputations.length).to.equal(expectedLengths.length); + expect(hashComputations.length).toEqual(expectedLengths.length); for (let i = 0; i < hashComputations.length; i++) { - expect(hashComputations[i].length).to.equal(expectedLengths[i]); + expect(hashComputations[i].length).toEqual(expectedLengths[i]); } }); } diff --git a/packages/persistent-merkle-tree/test/unit/packedNode.test.ts b/packages/persistent-merkle-tree/test/unit/packedNode.test.ts index 93af3cdc..51117a87 100644 --- a/packages/persistent-merkle-tree/test/unit/packedNode.test.ts +++ b/packages/persistent-merkle-tree/test/unit/packedNode.test.ts @@ -1,5 +1,5 @@ +import {describe, it, expect} from "vitest"; import {HashObject} from "@chainsafe/as-sha256"; -import {expect} from "chai"; import {LeafNode, Node} from "../../src/index.js"; import {packedNodeRootsToBytes, packedRootsBytesToLeafNodes, packedUintNum64sToLeafNodes} from "../../src/packedNode.js"; @@ -191,7 +191,7 @@ describe("subtree / packedNode single node", () => { const uint8Array = new Uint8Array(Buffer.from(outStr.replace("0x", ""), "hex")); const dataView = new DataView(uint8Array.buffer, uint8Array.byteOffset, uint8Array.byteLength); const nodesRes = packedRootsBytesToLeafNodes(dataView, 0, size); - expect(onlyHashObject(nodesRes[0].rootHashObject)).to.deep.equal(onlyHashObject(nodes[0].rootHashObject)); + expect(onlyHashObject(nodesRes[0].rootHashObject)).toEqual(onlyHashObject(nodes[0].rootHashObject)); }); // 1 UintNum64 = 8 bytes @@ -212,7 +212,7 @@ describe("subtree / packedNode single node", () => { } const nodesRes = packedUintNum64sToLeafNodes(values); - expect(onlyHashObject(nodesRes[0].rootHashObject)).to.deep.equal(onlyHashObject(nodes[0].rootHashObject)); + expect(onlyHashObject(nodesRes[0].rootHashObject)).toEqual(onlyHashObject(nodes[0].rootHashObject)); }); } } diff --git a/packages/persistent-merkle-tree/test/unit/proof/compactMulti.test.ts b/packages/persistent-merkle-tree/test/unit/proof/compactMulti.test.ts index 5526695b..ca44e920 100644 --- a/packages/persistent-merkle-tree/test/unit/proof/compactMulti.test.ts +++ b/packages/persistent-merkle-tree/test/unit/proof/compactMulti.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import { createNodeFromCompactMultiProof, createCompactMultiProof, @@ -29,7 +29,7 @@ describe("CompactMultiProof", () => { describe("descriptorToBitlist", () => { it("should convert valid descriptor to a bitlist", () => { for (const {input, output} of descriptorTestCases) { - expect(descriptorToBitlist(input)).to.deep.equal(output); + expect(descriptorToBitlist(input)).toEqual(output); } }); it("should throw on invalid descriptors", () => { @@ -48,7 +48,7 @@ describe("CompactMultiProof", () => { it("should convert gindices to a descriptor", () => { const index = 42n; const expected = Uint8Array.from([0x25, 0xe0]); - expect(computeDescriptor([index])).to.deep.equal(expected); + expect(computeDescriptor([index])).toEqual(expected); }); }); @@ -57,7 +57,7 @@ describe("CompactMultiProof", () => { for (const {input} of descriptorTestCases) { const proof = createCompactMultiProof(tree, input); const newNode = createNodeFromCompactMultiProof(proof, input); - expect(newNode.root).to.deep.equal(tree.root); + expect(newNode.root).toEqual(tree.root); } }); }); diff --git a/packages/persistent-merkle-tree/test/unit/proof/index.test.ts b/packages/persistent-merkle-tree/test/unit/proof/index.test.ts index bace4a7c..69e98a20 100644 --- a/packages/persistent-merkle-tree/test/unit/proof/index.test.ts +++ b/packages/persistent-merkle-tree/test/unit/proof/index.test.ts @@ -1,5 +1,4 @@ -import {expect} from "chai"; -import {describe, it} from "mocha"; +import {describe, it, expect, vi} from "vitest"; import { computeDescriptor, createNodeFromProof, @@ -22,14 +21,15 @@ describe("proof equivalence", () => { type: ProofType.compactMulti, descriptor: computeDescriptor([gindex]), }); - expect(node.root).to.deep.equal(createNodeFromProof(singleProof).root); - expect(node.root).to.deep.equal(createNodeFromProof(treeOffsetProof).root); - expect(node.root).to.deep.equal(createNodeFromProof(multiProof).root); - expect(node.root).to.deep.equal(createNodeFromProof(compactMultiProof).root); + expect(node.root).toEqual(createNodeFromProof(singleProof).root); + expect(node.root).toEqual(createNodeFromProof(treeOffsetProof).root); + expect(node.root).toEqual(createNodeFromProof(multiProof).root); + expect(node.root).toEqual(createNodeFromProof(compactMultiProof).root); } }); - it("should compute the same root from different proof types - multiple leaves", function () { - this.timeout(10_000); + it("should compute the same root from different proof types - multiple leaves", () => { + vi.setConfig({testTimeout: 10_000}); + const depth = 6; const maxIndex = 2 ** depth; const node = createTree(depth); @@ -52,9 +52,9 @@ describe("proof equivalence", () => { descriptor: computeDescriptor(gindices), }); - expect(node.root).to.deep.equal(createNodeFromProof(treeOffsetProof).root); - expect(node.root).to.deep.equal(createNodeFromProof(multiProof).root); - expect(node.root).to.deep.equal(createNodeFromProof(compactMultiProof).root); + expect(node.root).toEqual(createNodeFromProof(treeOffsetProof).root); + expect(node.root).toEqual(createNodeFromProof(multiProof).root); + expect(node.root).toEqual(createNodeFromProof(compactMultiProof).root); } } } @@ -68,6 +68,6 @@ describe("proof serialize/deserialize", () => { const node = createTree(6); const expected = createProof(node, {type: ProofType.treeOffset, gindices: [BigInt(7), BigInt(8), BigInt(15)]}); const actual = deserializeProof(serializeProof(expected)); - expect(actual).to.deep.equal(expected); + expect(actual).toEqual(expected); }); }); diff --git a/packages/persistent-merkle-tree/test/unit/proof/treeOffset.test.ts b/packages/persistent-merkle-tree/test/unit/proof/treeOffset.test.ts index 42bd229d..28df6577 100644 --- a/packages/persistent-merkle-tree/test/unit/proof/treeOffset.test.ts +++ b/packages/persistent-merkle-tree/test/unit/proof/treeOffset.test.ts @@ -1,5 +1,4 @@ -import {expect} from "chai"; -import {describe, it} from "mocha"; +import {describe, it, expect} from "vitest"; import {createNodeFromTreeOffsetProof, createTreeOffsetProof} from "../../../src/proof/treeOffset.js"; import {zeroNode} from "../../../src/zeroNode.js"; @@ -16,7 +15,7 @@ describe("computeTreeOffsetProof", () => { ]; for (const {input, output} of testCases) { const actual = createTreeOffsetProof(input.rootNode, input.gindices); - expect(actual).to.deep.equal(output); + expect(actual).toEqual(output); } }); }); @@ -41,7 +40,7 @@ describe("computeNodeFromTreeOffsetProof", () => { ]; for (const {input, output} of testCases) { const actual = createNodeFromTreeOffsetProof(input.offsets, input.leaves); - expect(actual.root).to.deep.equal(output.root); + expect(actual.root).toEqual(output.root); } }); }); diff --git a/packages/persistent-merkle-tree/test/unit/proof/util.test.ts b/packages/persistent-merkle-tree/test/unit/proof/util.test.ts index f9a463d8..1250a543 100644 --- a/packages/persistent-merkle-tree/test/unit/proof/util.test.ts +++ b/packages/persistent-merkle-tree/test/unit/proof/util.test.ts @@ -1,5 +1,4 @@ -import {expect} from "chai"; -import {describe, it} from "mocha"; +import {describe, it, expect} from "vitest"; import { computeProofGindices, computeProofBitstrings, @@ -15,8 +14,8 @@ describe("computeProofGindices", () => { for (const gindex of gindices) { const simple = computeProofGindices(gindex); const bitstring = computeProofBitstrings(gindex.toString(2)); - expect(new Set([...bitstring.branch].map((str) => BigInt("0b" + str)))).to.deep.equal(simple.branch); - expect(new Set([...bitstring.path].map((str) => BigInt("0b" + str)))).to.deep.equal(simple.path); + expect(new Set([...bitstring.branch].map((str) => BigInt("0b" + str)))).toEqual(simple.branch); + expect(new Set([...bitstring.path].map((str) => BigInt("0b" + str)))).toEqual(simple.path); } }); @@ -40,8 +39,8 @@ describe("computeProofGindices", () => { ]; for (const {input, output} of testCases) { const actual = computeProofGindices(input); - expect(actual.branch).to.deep.equal(output.branch); - expect(actual.path).to.deep.equal(output.path); + expect(actual.branch).toEqual(output.branch); + expect(actual.path).toEqual(output.path); } }); }); @@ -60,7 +59,7 @@ describe("sortInOrderBitstrings", () => { gindices.map((g) => g.toString(2)), bitLength ).map((str) => BigInt("0b" + str)); - expect(actual).to.deep.equal(output); + expect(actual).toEqual(output); } }); }); @@ -80,7 +79,7 @@ describe("filterParentBitstrings", () => { ]; for (const {input, output} of testCases) { const actual = filterParentBitstrings(input.map((g) => g.toString(2))).map((str) => BigInt("0b" + str)); - expect(new Set(actual)).to.deep.equal(new Set(output)); + expect(new Set(actual)).toEqual(new Set(output)); } }); }); @@ -101,7 +100,7 @@ describe("computeMultiProofBitstrings", () => { ]; for (const {input, output} of testCases) { const actual = computeMultiProofBitstrings(input.map((g) => g.toString(2))).map((str) => BigInt("0b" + str)); - expect(actual).to.deep.equal(output); + expect(actual).toEqual(output); } }); }); diff --git a/packages/persistent-merkle-tree/test/unit/snapshot.test.ts b/packages/persistent-merkle-tree/test/unit/snapshot.test.ts index a1bb4939..174bf09c 100644 --- a/packages/persistent-merkle-tree/test/unit/snapshot.test.ts +++ b/packages/persistent-merkle-tree/test/unit/snapshot.test.ts @@ -1,5 +1,4 @@ -import { expect } from "chai"; -import {describe, it} from "mocha"; +import {describe, it, expect} from "vitest"; import {fromSnapshot, indexToFinalizedGindices, toSnapshot} from "../../src/snapshot.js"; import {subtreeFillToContents} from "../../src/subtree.js"; import { LeafNode } from "../../src/node.js"; @@ -10,7 +9,7 @@ describe("toSnapshot and fromSnapshot", () => { const depth = 4; const maxItems = Math.pow(2, depth); - for (let count = 0; count <= maxItems; count ++) { + for (let count = 0; count <= maxItems; count++) { it(`toSnapshot and fromSnapshot with count ${count}`, () => { const nodes = Array.from({length: count}, (_, i) => LeafNode.fromRoot(Buffer.alloc(32, i))); const fullListRootNode = subtreeFillToContents(nodes, depth); @@ -18,7 +17,7 @@ describe("toSnapshot and fromSnapshot", () => { const partialListRootNode = fromSnapshot(snapshot, depth); // 1st step - check if the restored root node is the same - expect(partialListRootNode.root).to.deep.equal(fullListRootNode.root); + expect(partialListRootNode.root).toEqual(fullListRootNode.root); // 2nd step - make sure we can add more nodes to the restored tree const fullTree = new Tree(fullListRootNode); @@ -27,12 +26,12 @@ describe("toSnapshot and fromSnapshot", () => { const gindex = toGindex(depth, BigInt(i)); fullTree.setNode(gindex, LeafNode.fromRoot(Buffer.alloc(32, i))); partialTree.setNode(gindex, LeafNode.fromRoot(Buffer.alloc(32, i))); - expect(partialTree.root).to.deep.equal(fullTree.root); + expect(partialTree.root).toEqual(fullTree.root); // and snapshot created from 2 trees are the same const snapshot1 = toSnapshot(fullTree.rootNode, depth, i + 1); const snapshot2 = toSnapshot(partialTree.rootNode, depth, i + 1); - expect(snapshot2).to.deep.equal(snapshot1); + expect(snapshot2).toEqual(snapshot1); } }); @@ -44,7 +43,7 @@ describe("toSnapshot and fromSnapshot", () => { const partialListRootNode = fromSnapshot(snapshot, depth); // 1st step - check if the restored root node is the same - expect(partialListRootNode.root).to.deep.equal(fullListRootNode.root); + expect(partialListRootNode.root).toEqual(fullListRootNode.root); // 2nd step - grow the tree with setNodesAtDepth for (let i = count; i < maxItems; i++) { @@ -52,12 +51,12 @@ describe("toSnapshot and fromSnapshot", () => { const indices = Array.from({length: i - count + 1}, (_, j) => j + count); const root1 = setNodesAtDepth(fullListRootNode, depth, indices, addedNodes); const root2 = setNodesAtDepth(partialListRootNode, depth, indices, addedNodes); - expect(root2.root).to.deep.equal(root1.root); + expect(root2.root).toEqual(root1.root); for (let j = count; j <= i; j++) { const snapshot1 = toSnapshot(root1, depth, j); const snapshot2 = toSnapshot(root2, depth, j); - expect(snapshot2).to.deep.equal(snapshot1); + expect(snapshot2).toEqual(snapshot1); } } }); @@ -69,13 +68,13 @@ describe("toSnapshot and fromSnapshot", () => { const partialListRootNode = fromSnapshot(snapshot, depth); // 1st step - check if the restored root node is the same - expect(partialListRootNode.root).to.deep.equal(fullListRootNode.root); + expect(partialListRootNode.root).toEqual(fullListRootNode.root); const snapshot2 = toSnapshot(partialListRootNode, depth, count); const restoredRootNode2 = fromSnapshot(snapshot2, depth); // 2nd step - check if the restored root node is the same - expect(restoredRootNode2.root).to.deep.equal(partialListRootNode.root); + expect(restoredRootNode2.root).toEqual(partialListRootNode.root); }); } }); @@ -109,7 +108,7 @@ describe("indexToFinalizedGindices", () => { for (const [depth, index, finalizeGindices] of testCases) { it(`should correctly get finalized gindexes for index ${index} and depth ${depth}`, () => { const actual = indexToFinalizedGindices(depth, index); - expect(actual).to.deep.equal(finalizeGindices); + expect(actual).toEqual(finalizeGindices); }); } }); diff --git a/packages/persistent-merkle-tree/test/unit/subtree.test.ts b/packages/persistent-merkle-tree/test/unit/subtree.test.ts index f32167b8..edf12643 100644 --- a/packages/persistent-merkle-tree/test/unit/subtree.test.ts +++ b/packages/persistent-merkle-tree/test/unit/subtree.test.ts @@ -1,9 +1,9 @@ -import { expect } from "chai"; +import {describe, it, expect, vi} from "vitest"; import {subtreeFillToContents, LeafNode, getNodesAtDepth, executeHashComputations, BranchNode, Node, HashComputationLevel, zeroNode} from "../../src/index.js"; -describe("subtreeFillToContents", function () { +describe("subtreeFillToContents", () => { // the hash computation takes time - this.timeout(5000); + vi.setConfig({testTimeout: 5000}); it("Simple case", () => { function nodeNum(num: number): LeafNode { @@ -59,7 +59,6 @@ describe("subtreeFillToContents", function () { }); describe("subtreeFillToContents with hcByLevel", function () { - it("depth = 0", () => { // return zeroNode, no hash computations const nodes = [LeafNode.fromZero()]; @@ -79,7 +78,7 @@ describe("subtreeFillToContents with hcByLevel", function () { if (node.h0 === null) { throw Error("Root node h0 is null"); } - expect(node.root).to.deep.equal(zeroNode(1).root); + expect(node.root).toEqual(zeroNode(1).root); }); it("depth = 1, bottom nodes are branch nodes", () => { @@ -95,7 +94,7 @@ describe("subtreeFillToContents with hcByLevel", function () { if (node.h0 === null) { throw Error("Root node h0 is null"); } - expect(node.root).to.deep.equal(zeroNode(2).root); + expect(node.root).toEqual(zeroNode(2).root); }); /** @@ -137,6 +136,6 @@ describe("subtreeFillToContents with hcByLevel", function () { throw Error("Root node h0 is null"); } // node.root is computed in batch, root0.root is computed in a single call - expect(node.root).to.deep.equal(root0.root); + expect(node.root).toEqual(root0.root); }); }); diff --git a/packages/persistent-merkle-tree/test/unit/tree.test.ts b/packages/persistent-merkle-tree/test/unit/tree.test.ts index f1fe829b..f51d472e 100644 --- a/packages/persistent-merkle-tree/test/unit/tree.test.ts +++ b/packages/persistent-merkle-tree/test/unit/tree.test.ts @@ -1,5 +1,5 @@ +import {describe, it, expect, beforeEach} from "vitest"; import {byteArrayToHashObject} from "@chainsafe/as-sha256"; -import {expect} from "chai"; import { Tree, @@ -21,11 +21,11 @@ describe("fixed-depth tree iteration", () => { const zero = zeroNode(0).root; const tree = new Tree(zeroNode(4)); for (const n of tree.iterateNodesAtDepth(depth, 0, 4)) { - expect(n.root).to.be.deep.equal(zero); + expect(n.root).toEqual(zero); } const one = zeroNode(1).root; for (const n of tree.iterateNodesAtDepth(depth - 1, 0, 4)) { - expect(n.root).to.be.deep.equal(one); + expect(n.root).toEqual(one); } }); @@ -42,7 +42,7 @@ describe("fixed-depth tree iteration", () => { for (let j = length - i - 1; j > 1; j--) { let k = i; for (const n of tree.iterateNodesAtDepth(depth, i, j)) { - expect(n.root).to.be.deep.equal(expectedLeaves[k].root); + expect(n.root).toEqual(expectedLeaves[k].root); k++; } expect(k - i, `startIx=${i} count=${j} currIx=${k}`).to.be.eql(j); @@ -60,7 +60,7 @@ describe("batchHash() vs root getter", () => { const tree = new Tree(subtreeFillToContents([...leaves], depth)); const tree2 = new Tree(subtreeFillToContents([...leaves], depth)); batchHash(tree.rootNode); - expect(tree.root).to.be.deep.equal(tree2.root); + expect(tree.root).toEqual(tree2.root); }); } }); @@ -166,7 +166,10 @@ describe("Tree batch setNodes", () => { const treeOk = new Tree(zeroNode(depth)); // cache all roots treeOk.root; - const hashComputationsOk: Array = Array.from({length: depth}, () => new HashComputationLevel()); + const hashComputationsOk: Array = Array.from( + {length: depth}, + () => new HashComputationLevel() + ); const tree = new Tree(zeroNode(depth)); tree.root; const gindexesBigint = gindexes.map((gindex) => BigInt(gindex)); @@ -210,9 +213,9 @@ describe("Tree batch setNodes", () => { for (let j = 0; j < hcArr.length; j++) { const hcOk = hcOkArr[j]; const hc = hcArr[j]; - expect(hc.src0.root).to.be.deep.equal(hcOk.src0.root); - expect(hc.src1.root).to.be.deep.equal(hcOk.src1.root); - expect(hc.dest.root).to.be.deep.equal(hcOk.dest.root); + expect(hc.src0.root).toEqual(hcOk.src0.root); + expect(hc.src1.root).toEqual(hcOk.src1.root); + expect(hc.dest.root).toEqual(hcOk.dest.root); } } try { @@ -291,4 +294,3 @@ function getTreeRoots(tree: Tree, maxGindex: number): string[] { function toHex(bytes: Buffer | Uint8Array): string { return Buffer.from(bytes).toString("hex"); } - diff --git a/packages/persistent-merkle-tree/test/unit/tree/getNodes.test.ts b/packages/persistent-merkle-tree/test/unit/tree/getNodes.test.ts index 5b9298f9..7cb34ac9 100644 --- a/packages/persistent-merkle-tree/test/unit/tree/getNodes.test.ts +++ b/packages/persistent-merkle-tree/test/unit/tree/getNodes.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect, beforeAll} from "vitest"; import {getNodesAtDepth, LeafNode, Node, subtreeFillToContents, Tree} from "../../../src/index.js"; describe("tree / getNodes", () => { @@ -10,7 +10,7 @@ describe("tree / getNodes", () => { const expectedNodes = new Array(length); const initialNode = LeafNode.fromRoot(Buffer.alloc(32, 0xaa)); - before("Get base tree and data", () => { + beforeAll(() => { // Create a second array since subtreeFillToContents mutates the array const nodes = new Array(length); for (let i = 0; i < length; i++) { @@ -28,7 +28,7 @@ describe("tree / getNodes", () => { function assertValidNodes(nodes: Node[], expectedNodes: Node[]): void { for (let i = 0; i < expectedNodes.length; i++) { - expect(nodes[i]).to.equal(expectedNodes[i], `Wrong node index ${i}`); + expect(nodes[i]).toEqualWithMessage(expectedNodes[i], `Wrong node index ${i}`); } } }); diff --git a/packages/persistent-merkle-tree/test/unit/tree/zeroAfterIndex.test.ts b/packages/persistent-merkle-tree/test/unit/tree/zeroAfterIndex.test.ts index 88490658..59af19f1 100644 --- a/packages/persistent-merkle-tree/test/unit/tree/zeroAfterIndex.test.ts +++ b/packages/persistent-merkle-tree/test/unit/tree/zeroAfterIndex.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {LeafNode, Node, toGindex, Tree, zeroNode, treeZeroAfterIndex, getNodesAtDepth} from "../../../src/index.js"; describe("tree / zeroAfterIndex", () => { @@ -30,8 +30,8 @@ describe("tree / zeroAfterIndex", () => { printLeafTreeDiff(rootNodeNaive, rootNode, depth, 8); } - expect(rootHexNaive).to.equal(toHex(treeRootAtIndex[i]), `Wrong tree root at index ${i} - naive`); - expect(rootHex).to.equal(toHex(treeRootAtIndex[i]), `Wrong tree root at index ${i}`); + expect(rootHexNaive).toEqualWithMessage(toHex(treeRootAtIndex[i]), `Wrong tree root at index ${i} - naive`); + expect(rootHex).toEqualWithMessage(toHex(treeRootAtIndex[i]), `Wrong tree root at index ${i}`); } }); } diff --git a/packages/persistent-merkle-tree/test/unit/treeNav.test.ts b/packages/persistent-merkle-tree/test/unit/treeNav.test.ts index b39055c2..89fe3f03 100644 --- a/packages/persistent-merkle-tree/test/unit/treeNav.test.ts +++ b/packages/persistent-merkle-tree/test/unit/treeNav.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {expect, describe, it} from "vitest"; describe("commonDepth", () => { const testCases: {from: number; to: number; d: number}[] = [ diff --git a/packages/persistent-merkle-tree/tsconfig.json b/packages/persistent-merkle-tree/tsconfig.json index c26af7db..00e6d569 100644 --- a/packages/persistent-merkle-tree/tsconfig.json +++ b/packages/persistent-merkle-tree/tsconfig.json @@ -2,6 +2,6 @@ "extends": "../../tsconfig.json", "include": ["src", "test"], "compilerOptions": { - "typeRoots": ["../../node_modules/@types", "./node_modules/@types", "./types"], + "typeRoots": ["../../node_modules/@types", "./node_modules/@types", "../../types", "./types"], } } diff --git a/packages/persistent-merkle-tree/vitest.config.ts b/packages/persistent-merkle-tree/vitest.config.ts new file mode 100644 index 00000000..a7fceda7 --- /dev/null +++ b/packages/persistent-merkle-tree/vitest.config.ts @@ -0,0 +1,4 @@ +import {defineConfig, mergeConfig} from "vitest/config"; +import baseConfig from "../../vitest.base.unit.config"; + +export default mergeConfig(baseConfig, defineConfig({})); diff --git a/packages/persistent-ts/package.json b/packages/persistent-ts/package.json index 843fd173..400ffdee 100644 --- a/packages/persistent-ts/package.json +++ b/packages/persistent-ts/package.json @@ -19,7 +19,7 @@ "build:types": "tsc -p tsconfig.build.types.json", "lint": "eslint --color --ext .ts src/", "check-types": "tsc --noEmit", - "test:unit": "mocha 'test/unit/**/*.test.ts'", + "test:unit": "vitest run --dir test/unit", "test:perf": "mocha 'test/perf/**/*.test.ts'" }, "repository": { diff --git a/packages/persistent-ts/test/unit/List.test.ts b/packages/persistent-ts/test/unit/List.test.ts index 4a1f7716..98879da9 100644 --- a/packages/persistent-ts/test/unit/List.test.ts +++ b/packages/persistent-ts/test/unit/List.test.ts @@ -1,90 +1,92 @@ import fc from "fast-check"; -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {List} from "../../src/List.js"; -it("List.empty isEmpty", () => { - const empty = List.empty(); - expect(empty.isEmpty()).to.be.true; -}); +describe("List", () => { + it("List.empty isEmpty", () => { + const empty = List.empty(); + expect(empty.isEmpty()).toBe(true); + }); -it("List.singleton is not Empty", () => { - const singleton = List.of(1); - expect(singleton.isEmpty()).to.be.false; -}); + it("List.singleton is not Empty", () => { + const singleton = List.of(1); + expect(singleton.isEmpty()).toBe(false); + }); -it("List.equals works", () => { - const empty = List.empty(); - const single1 = List.of(1); - const single2 = List.of(2); - expect(single1.equals(empty)).to.be.false; - expect(single1.equals(single2)).to.be.false; - expect(empty.equals(empty)).to.be.true; - expect(single1.equals(single1)).to.be.true; -}); + it("List.equals works", () => { + const empty = List.empty(); + const single1 = List.of(1); + const single2 = List.of(2); + expect(single1.equals(empty)).toBe(false); + expect(single1.equals(single2)).toBe(false); + expect(empty.equals(empty)).toBe(true); + expect(single1.equals(single1)).toBe(true); + }); -it("List.prepend works", () => { - const single1 = List.of(1); - const prepend1 = List.empty().prepend(1); - expect(prepend1.equals(single1)).to.be.true; - expect(single1.prepend(1).equals(single1)).to.be.false; -}); + it("List.prepend works", () => { + const single1 = List.of(1); + const prepend1 = List.empty().prepend(1); + expect(prepend1.equals(single1)).toBe(true); + expect(single1.prepend(1).equals(single1)).toBe(false); + }); -it("List is iterable", () => { - const array = [1, 2, 3]; - const list = List.of(...array); - expect(Array.from(list)).to.be.deep.equal(array); - expect(Array.from(List.empty())).to.be.deep.equal([]); - expect(List.of(...list).equals(list)).to.be.true; -}); + it("List is iterable", () => { + const array = [1, 2, 3]; + const list = List.of(...array); + expect(Array.from(list)).to.be.deep.equal(array); + expect(Array.from(List.empty())).to.be.deep.equal([]); + expect(List.of(...list).equals(list)).toBe(true); + }); -it("List.head works", () => { - expect(List.empty().head()).to.be.null; - expect(List.of(1).head()).to.be.equal(1); -}); + it("List.head works", () => { + expect(List.empty().head()).to.be.null; + expect(List.of(1).head()).toEqual(1); + }); -it("List.tail works", () => { - const empty = List.empty(); - expect(empty.tail().equals(empty)).to.be.true; -}); + it("List.tail works", () => { + const empty = List.empty(); + expect(empty.tail().equals(empty)).toBe(true); + }); -it("List.take works", () => { - const empty = List.empty(); - const simple = List.of(1, 2, 3); - expect(simple.take(0).equals(empty)).to.be.true; - expect(simple.take(0).equals(simple)).to.be.false; - expect(simple.take(3).equals(simple)).to.be.true; - expect(simple.take(1).equals(List.of(1))).to.be.true; -}); + it("List.take works", () => { + const empty = List.empty(); + const simple = List.of(1, 2, 3); + expect(simple.take(0).equals(empty)).toBe(true); + expect(simple.take(0).equals(simple)).toBe(false); + expect(simple.take(3).equals(simple)).toBe(true); + expect(simple.take(1).equals(List.of(1))).toBe(true); + }); -it("List.drop works", () => { - const empty = List.empty(); - expect(empty.drop(0).equals(empty)).to.be.true; - expect(empty.drop(1).equals(empty)).to.be.true; - const simple = List.of(1, 2, 3); - expect(simple.drop(3).equals(empty)).to.be.true; - expect(simple.drop(1).equals(List.of(2, 3))).to.be.true; -}); + it("List.drop works", () => { + const empty = List.empty(); + expect(empty.drop(0).equals(empty)).toBe(true); + expect(empty.drop(1).equals(empty)).toBe(true); + const simple = List.of(1, 2, 3); + expect(simple.drop(3).equals(empty)).toBe(true); + expect(simple.drop(1).equals(List.of(2, 3))).toBe(true); + }); -it("List.prepend properties", () => { - fc.assert( - fc.property(fc.array(fc.integer()), (data) => { - const list = List.of(...data); - const value = 1; - const extra = list.prepend(value); - expect(extra.tail().equals(list)).to.be.true; - expect(extra.head()).to.be.equal(value); - }) - ); -}); + it("List.prepend properties", () => { + fc.assert( + fc.property(fc.array(fc.integer()), (data) => { + const list = List.of(...data); + const value = 1; + const extra = list.prepend(value); + expect(extra.tail().equals(list)).toBe(true); + expect(extra.head()).toEqual(value); + }) + ); + }); -it("List can be reassembled from take and drop", () => { - const gen = fc.tuple(fc.array(fc.integer()), fc.nat()); - fc.assert( - fc.property(gen, ([items, amount]) => { - const list = List.of(items); - const left = list.take(amount); - const right = list.drop(amount); - expect(left.concat(right).equals(list)).to.be.true; - }) - ); + it("List can be reassembled from take and drop", () => { + const gen = fc.tuple(fc.array(fc.integer()), fc.nat()); + fc.assert( + fc.property(gen, ([items, amount]) => { + const list = List.of(items); + const left = list.take(amount); + const right = list.drop(amount); + expect(left.concat(right).equals(list)).toBe(true); + }) + ); + }); }); diff --git a/packages/persistent-ts/test/unit/Vector.test.ts b/packages/persistent-ts/test/unit/Vector.test.ts index d80792cd..294242d3 100644 --- a/packages/persistent-ts/test/unit/Vector.test.ts +++ b/packages/persistent-ts/test/unit/Vector.test.ts @@ -1,214 +1,216 @@ import fc from "fast-check"; -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {PersistentVector, TransientVector} from "../../src/Vector.js"; -it("PersistentVector.empty has a length of 0", () => { - const empty = PersistentVector.empty; - expect(empty.length).to.be.equal(0); - expect(empty.get(0)).to.be.undefined; -}); - -it("PersistentVector push increments the length", () => { - let v = PersistentVector.empty; - for (let i = 1; i < 1025; i++) { - v = v.push(i); - expect(v.length).to.be.equal(i); - } -}); - -it("PersistentVector push works with many elements", () => { - let acc = PersistentVector.empty; - const times = 1025; - for (let i = 0; i < times; ++i) { - acc = acc.push(i); - } - expect(acc.length).to.be.equal(times); - for (let i = 0; i < times; ++i) { - expect(acc.get(i)).to.be.equal(i); - } - let i = 0; - for (const item of acc) { - expect(item).to.be.equal(i); - i++; - } - expect(i).to.be.equal(times); -}); - -it("PersistentVector iterator should work", () => { - const times = 1025; - const originalArr = Array.from({length: times}, (_, i) => 2 * i); - const acc = PersistentVector.from(originalArr); - expect(acc.length).to.be.equal(times); - let i = 0; - for (const item of acc) { - expect(item).to.be.equal(2 * i); - i++; - } - expect(i).to.be.equal(times); - const newArr = [...acc]; - expect(newArr).to.be.deep.equal(originalArr); -}); - -it("PersistentVector forEach should work", () => { - let acc = PersistentVector.empty; - const times = 1025; - for (let i = 0; i < times; ++i) { - acc = acc.push(2 * i); - } - expect(acc.length).to.be.equal(times); - let count = 0; - acc.forEach((v, i) => { - expect(v).to.be.equal(2 * i); - count++; +describe("Vector", () => { + it("PersistentVector.empty has a length of 0", () => { + const empty = PersistentVector.empty; + expect(empty.length).toEqual(0); + expect(empty.get(0)).toBeUndefined(); }); - expect(count).to.be.equal(times); -}); - -it("PersistentVector map should work", () => { - const times = 1025; - const originalArr = Array.from({length: times}, (_, i) => i); - const newArr = originalArr.map((v) => v * 2); - const acc = PersistentVector.from(originalArr); - expect(acc.length).to.be.equal(times); - const newArr2 = acc.map((v) => v * 2); - expect(newArr2).to.be.deep.equal(newArr); -}); -it("PersistentVector toArray should convert to regular javascript array", () => { - const times = 1025; - const originalArr = Array.from({length: times}, (_, i) => i); - const acc = PersistentVector.from(originalArr); - expect(acc.toArray()).to.be.deep.equal(originalArr); -}); + it("PersistentVector push increments the length", () => { + let v = PersistentVector.empty; + for (let i = 1; i < 1025; i++) { + v = v.push(i); + expect(v.length).toEqual(i); + } + }); -it("PersistentVector.get works", () => { - const element = 1; - const empty = PersistentVector.empty; - const single = empty.push(element); - expect(single.get(-1)).to.be.undefined; - expect(single.get(1)).to.be.undefined; - expect(empty.get(0)).to.be.undefined; - expect(single.get(0)).to.be.equal(element); -}); + it("PersistentVector push works with many elements", () => { + let acc = PersistentVector.empty; + const times = 1025; + for (let i = 0; i < times; ++i) { + acc = acc.push(i); + } + expect(acc.length).toEqual(times); + for (let i = 0; i < times; ++i) { + expect(acc.get(i)).toEqual(i); + } + let i = 0; + for (const item of acc) { + expect(item).toEqual(i); + i++; + } + expect(i).toEqual(times); + }); -it("PersistentVector.set works", () => { - const a = 0; - const b = 1; - const empty = PersistentVector.empty; - const single = empty.push(a); - expect(single.set(0, b).get(0)).to.be.equal(b); -}); + it("PersistentVector iterator should work", () => { + const times = 1025; + const originalArr = Array.from({length: times}, (_, i) => 2 * i); + const acc = PersistentVector.from(originalArr); + expect(acc.length).toEqual(times); + let i = 0; + for (const item of acc) { + expect(item).toEqual(2 * i); + i++; + } + expect(i).toEqual(times); + const newArr = [...acc]; + expect(newArr).toEqual(originalArr); + }); -it("PersistentVector.set should not effect original vector", () => { - const times = 1025; - const originalArr = Array.from({length: times}, (_, i) => 2 * i); - const originalVector = PersistentVector.from(originalArr); - let newVector: PersistentVector = originalVector; - for (let i = 0; i < times; i++) { - newVector = newVector.set(i, i * 4); - } - for (let i = 0; i < times; i++) { - expect(newVector!.get(i)).to.be.equal(originalVector.get(i)! * 2); - } - expect([...newVector]).to.be.deep.equal(originalArr.map((item) => item * 2)); - expect([...newVector].length).to.be.equal(1025); - expect(newVector.length).to.be.equal(1025); -}); + it("PersistentVector forEach should work", () => { + let acc = PersistentVector.empty; + const times = 1025; + for (let i = 0; i < times; ++i) { + acc = acc.push(2 * i); + } + expect(acc.length).toEqual(times); + let count = 0; + acc.forEach((v, i) => { + expect(v).toEqual(2 * i); + count++; + }); + expect(count).toEqual(times); + }); -it("PersistentVector.pop works with many elements", () => { - let acc = PersistentVector.empty; - expect(acc.pop()).to.be.equal(acc); - const times = 1025; - for (let i = 0; i < 2 * times; ++i) { - acc = acc.push(i); - } - for (let i = 0; i < times; ++i) { - acc = acc.pop(); - } - expect(acc.length).to.be.equal(times); - for (let i = 0; i < times; ++i) { - const g = acc.get(i); - expect(g).to.be.equal(i); - } -}); + it("PersistentVector map should work", () => { + const times = 1025; + const originalArr = Array.from({length: times}, (_, i) => i); + const newArr = originalArr.map((v) => v * 2); + const acc = PersistentVector.from(originalArr); + expect(acc.length).toEqual(times); + const newArr2 = acc.map((v) => v * 2); + expect(newArr2).toEqual(newArr); + }); -it("PersistentVector returns undefined beyond its bounds", () => { - let vector = PersistentVector.from(Array.from({length: 1025}, (_, i) => i)); + it("PersistentVector toArray should convert to regular javascript array", () => { + const times = 1025; + const originalArr = Array.from({length: times}, (_, i) => i); + const acc = PersistentVector.from(originalArr); + expect(acc.toArray()).toEqual(originalArr); + }); - expect(vector.get(-1)).to.be.undefined; - expect(vector.get(1025)).to.be.undefined; -}); + it("PersistentVector.get works", () => { + const element = 1; + const empty = PersistentVector.empty; + const single = empty.push(element); + expect(single.get(-1)).to.be.undefined; + expect(single.get(1)).to.be.undefined; + expect(empty.get(0)).to.be.undefined; + expect(single.get(0)).toEqual(element); + }); -it("PersistentVector created from an array will spread to the same array", () => { - fc.assert( - fc.property(fc.array(fc.integer()), (data) => { - let acc = PersistentVector.empty; - for (const d of data) acc = acc.push(d); - const arr = [...acc]; - expect(arr).to.be.deep.equal(data); - }) - ); -}); + it("PersistentVector.set works", () => { + const a = 0; + const b = 1; + const empty = PersistentVector.empty; + const single = empty.push(a); + expect(single.set(0, b).get(0)).toEqual(b); + }); -describe("TransientVector", () => { - it("should push/pop elements successfully", () => { - let v: TransientVector = TransientVector.empty(); - let a: number[] = []; - for (let i = 0; i < 1025; i++) { - v = v.push(i); - a.push(i); - expect(v.length).to.equal(a.length); - expect(v.toArray()).to.deep.equal(a); + it("PersistentVector.set should not effect original vector", () => { + const times = 1025; + const originalArr = Array.from({length: times}, (_, i) => 2 * i); + const originalVector = PersistentVector.from(originalArr); + let newVector: PersistentVector = originalVector; + for (let i = 0; i < times; i++) { + newVector = newVector.set(i, i * 4); } - for (let i = 0; i < 1025; i++) { - v = v.pop(); - a.pop(); - expect(v.length).to.equal(a.length); - expect(v.toArray()).to.deep.equal(a); + for (let i = 0; i < times; i++) { + expect(newVector!.get(i)).toEqual(originalVector.get(i)! * 2); } + expect([...newVector]).toEqual(originalArr.map((item) => item * 2)); + expect([...newVector].length).toEqual(1025); + expect(newVector.length).toEqual(1025); }); - it("should get/set elements successfully", () => { - let v: TransientVector = TransientVector.empty(); - let a: number[] = []; - for (let i = 0; i < 1025; i++) { - v = v.push(i); - a.push(i); + it("PersistentVector.pop works with many elements", () => { + let acc = PersistentVector.empty; + expect(acc.pop()).toEqual(acc); + const times = 1025; + for (let i = 0; i < 2 * times; ++i) { + acc = acc.push(i); } - for (let i = 0; i < 1025; i++) { - expect(v.get(i)).to.equal(a[i]); + for (let i = 0; i < times; ++i) { + acc = acc.pop(); } - for (let i = 0; i < 1025; i++) { - v = v.set(i, 2 * i); - a[i] = 2 * i; - expect(v.get(i)).to.equal(a[i]); + expect(acc.length).toEqual(times); + for (let i = 0; i < times; ++i) { + const g = acc.get(i); + expect(g).toEqual(i); } }); -}); -describe("PersistentVector<->TransientVector", () => { - it("should convert vectors without mutating PersistentVectors", () => { - let pv: PersistentVector = PersistentVector.empty; - for (let i = 0; i < 1025; i++) { - pv = pv.push(i); - } - let tv = pv.asTransient(); - const arr = pv.toArray(); - expect([...tv]).to.deep.equal(arr); - expect([...pv]).to.deep.equal(arr); + it("PersistentVector returns undefined beyond its bounds", () => { + const vector = PersistentVector.from(Array.from({length: 1025}, (_, i) => i)); - tv.pop(); - expect(pv.length).to.equal(arr.length); + expect(vector.get(-1)).to.be.undefined; + expect(vector.get(1025)).to.be.undefined; + }); - for (let i = 0; i < 1025; i++) { - tv = tv.set(i, i * 2); - } - expect([...pv]).to.deep.equal(arr); + it("PersistentVector created from an array will spread to the same array", () => { + fc.assert( + fc.property(fc.array(fc.integer()), (data) => { + let acc = PersistentVector.empty; + for (const d of data) acc = acc.push(d); + const arr = [...acc]; + expect(arr).toEqual(data); + }) + ); + }); + + describe("TransientVector", () => { + it("should push/pop elements successfully", () => { + let v: TransientVector = TransientVector.empty(); + const a: number[] = []; + for (let i = 0; i < 1025; i++) { + v = v.push(i); + a.push(i); + expect(v.length).to.equal(a.length); + expect(v.toArray()).to.deep.equal(a); + } + for (let i = 0; i < 1025; i++) { + v = v.pop(); + a.pop(); + expect(v.length).to.equal(a.length); + expect(v.toArray()).to.deep.equal(a); + } + }); + + it("should get/set elements successfully", () => { + let v: TransientVector = TransientVector.empty(); + const a: number[] = []; + for (let i = 0; i < 1025; i++) { + v = v.push(i); + a.push(i); + } + for (let i = 0; i < 1025; i++) { + expect(v.get(i)).to.equal(a[i]); + } + for (let i = 0; i < 1025; i++) { + v = v.set(i, 2 * i); + a[i] = 2 * i; + expect(v.get(i)).to.equal(a[i]); + } + }); + }); - tv.persistent(); - expect(() => tv.set(0, 0)).to.throw(); - expect(() => tv.persistent()).to.throw(); - expect(() => tv.push(0)).to.throw(); - expect(() => tv.pop()).to.throw(); + describe("PersistentVector<->TransientVector", () => { + it("should convert vectors without mutating PersistentVectors", () => { + let pv: PersistentVector = PersistentVector.empty; + for (let i = 0; i < 1025; i++) { + pv = pv.push(i); + } + let tv = pv.asTransient(); + const arr = pv.toArray(); + expect([...tv]).to.deep.equal(arr); + expect([...pv]).to.deep.equal(arr); + + tv.pop(); + expect(pv.length).to.equal(arr.length); + + for (let i = 0; i < 1025; i++) { + tv = tv.set(i, i * 2); + } + expect([...pv]).to.deep.equal(arr); + + tv.persistent(); + expect(() => tv.set(0, 0)).toThrow(); + expect(() => tv.persistent()).toThrow(); + expect(() => tv.push(0)).toThrow(); + expect(() => tv.pop()).toThrow(); + }); }); }); diff --git a/packages/persistent-ts/tsconfig.json b/packages/persistent-ts/tsconfig.json index c26af7db..00e6d569 100644 --- a/packages/persistent-ts/tsconfig.json +++ b/packages/persistent-ts/tsconfig.json @@ -2,6 +2,6 @@ "extends": "../../tsconfig.json", "include": ["src", "test"], "compilerOptions": { - "typeRoots": ["../../node_modules/@types", "./node_modules/@types", "./types"], + "typeRoots": ["../../node_modules/@types", "./node_modules/@types", "../../types", "./types"], } } diff --git a/packages/persistent-ts/vitest.config.ts b/packages/persistent-ts/vitest.config.ts new file mode 100644 index 00000000..a7fceda7 --- /dev/null +++ b/packages/persistent-ts/vitest.config.ts @@ -0,0 +1,4 @@ +import {defineConfig, mergeConfig} from "vitest/config"; +import baseConfig from "../../vitest.base.unit.config"; + +export default mergeConfig(baseConfig, defineConfig({})); diff --git a/packages/ssz/.nycrc.json b/packages/ssz/.nycrc.json deleted file mode 100644 index cf9345d4..00000000 --- a/packages/ssz/.nycrc.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "cache": false, - "extension": [ - ".ts" - ], - "exclude": [ - "*.d.ts", - "*.js", - "lib/**", - "coverage/**", - "test/**", - "types/**", - "node_modules/**" - ], - "all": false, - "reporter": [ - "text", - "lcov" - ] -} diff --git a/packages/ssz/package.json b/packages/ssz/package.json index 7ef78c46..d5c3e599 100644 --- a/packages/ssz/package.json +++ b/packages/ssz/package.json @@ -31,13 +31,13 @@ "benchmark": "node --max-old-space-size=4096 --expose-gc ../../node_modules/.bin/benchmark 'test/perf/*.test.ts'", "benchmark:local": "yarn benchmark --local", "test:perf": "mocha \"test/perf/**/*.test.ts\"", - "test:unit": "nyc mocha \"test/unit/**/*.test.ts\"", + "test:unit": "vitest run --dir test/unit --coverage --coverage.reporter text --coverage.reporter clover", "test:spec": "yarn test:spec-generic && yarn test:spec-static test:spec-eip-4881", - "test:spec-generic": "mocha \"test/spec/generic/**/*.test.ts\"", + "test:spec-generic": "vitest run --dir test/spec/generic", "test:spec-static": "yarn test:spec-static-minimal && yarn test:spec-static-mainnet", - "test:spec-static-minimal": "LODESTAR_PRESET=minimal mocha test/spec/ssz_static.test.ts", - "test:spec-static-mainnet": "LODESTAR_PRESET=mainnet mocha test/spec/ssz_static.test.ts", - "test:spec-eip-4881": "mocha \"test/spec/eip-4881/**/*.test.ts\"", + "test:spec-static-minimal": "LODESTAR_PRESET=minimal vitest run --dir test/spec/ test/spec/ssz_static.test.ts", + "test:spec-static-mainnet": "LODESTAR_PRESET=mainnet vitest run --dir test/spec/ test/spec/ssz_static.test.ts", + "test:spec-eip-4881": "vitest run --dir test/spec/ test/spec/eip-4881/**/*.test.ts", "download-spec-tests": "node --loader ts-node/esm test/spec/downloadTests.ts" }, "dependencies": { diff --git a/packages/ssz/test/spec/eip-4881/eip4881.test.ts b/packages/ssz/test/spec/eip-4881/eip4881.test.ts index 68a8b0f0..e002b149 100644 --- a/packages/ssz/test/spec/eip-4881/eip4881.test.ts +++ b/packages/ssz/test/spec/eip-4881/eip4881.test.ts @@ -2,7 +2,7 @@ import fs from "node:fs"; import url from "node:url"; import path from "node:path"; import jsyaml from "js-yaml"; -import {expect} from "chai"; +import {describe, it, expect, vi} from "vitest"; import {ContainerType, ListCompositeType} from "../../../src/index.js"; import {ssz} from "../../lodestarTypes/index.js"; import {DepositDataRootFullList, DepositDataRootPartialList} from "../../lodestarTypes/phase0/sszTypes.js"; @@ -22,8 +22,8 @@ const EIP4881TestDataArrayItem = new ContainerType( // test data contains 512 items const EIP4881TestDataArray = new ListCompositeType(EIP4881TestDataArrayItem, 1024); -describe("EIP-4881", function () { - this.timeout(60 * 1000); +describe("EIP-4881", () => { + vi.setConfig({testTimeout: 60 * 1000}); const ymlStr = fs.readFileSync(path.join(path.dirname(url.fileURLToPath(import.meta.url)), "test_data.yaml"), "utf8"); const json = jsyaml.load(ymlStr) as unknown[]; @@ -48,25 +48,25 @@ describe("EIP-4881", function () { const {depositData, eth1Data, blockHeight, snapshot, depositDataRoot} = testData[i]; // validate depositDataRoot - expect(ssz.phase0.DepositData.hashTreeRoot(depositData)).to.be.deep.equal(depositDataRoot); + expect(ssz.phase0.DepositData.hashTreeRoot(depositData)).toEqual(depositDataRoot); depositRootTree.push(depositDataRoot); // validate eth1Data - expect(eth1Data.depositRoot).to.be.deep.equal(depositRootTree.hashTreeRoot()); + expect(eth1Data.depositRoot).toEqual(depositRootTree.hashTreeRoot()); expect(eth1Data.depositCount).to.be.equal(depositRootTree.length); const blockHash = eth1Data.blockHash; const {finalized, depositRoot, depositCount, executionBlockHash, executionBlockHeight} = snapshot; // validate snapshot data - expect(executionBlockHash).to.be.deep.equal(blockHash); + expect(executionBlockHash).toEqual(blockHash); expect(executionBlockHeight).to.be.equal(blockHeight); - expect(depositRoot).to.be.deep.equal(depositRootTree.hashTreeRoot()); + expect(depositRoot).toEqual(depositRootTree.hashTreeRoot()); // validate actual snapshot const actualSnapshot = depositRootTree.toSnapshot(i + 1); - expect(actualSnapshot.finalized).to.be.deep.equal(finalized); - expect(actualSnapshot.root).to.be.deep.equal(depositRoot); + expect(actualSnapshot.finalized).toEqual(finalized); + expect(actualSnapshot.root).toEqual(depositRoot); expect(actualSnapshot.count).to.be.equal(depositCount); } }); @@ -84,7 +84,7 @@ describe("EIP-4881", function () { }); fullTree.push(depositDataRoot); - expect(partialTree.hashTreeRoot()).to.be.deep.equal(fullTree.hashTreeRoot()); + expect(partialTree.hashTreeRoot()).toEqual(fullTree.hashTreeRoot()); // grow the tree since then const newFullTree = fullTree.clone(); @@ -93,13 +93,13 @@ describe("EIP-4881", function () { partialTree.push(testData[j].depositDataRoot); // validate root - expect(partialTree.hashTreeRoot()).to.be.deep.equal(newFullTree.hashTreeRoot()); + expect(partialTree.hashTreeRoot()).toEqual(newFullTree.hashTreeRoot()); // validate snapshot const actualSnapshot = partialTree.toSnapshot(j + 1); - expect(actualSnapshot).to.be.deep.equal(newFullTree.toSnapshot(j + 1)); + expect(actualSnapshot).toEqual(newFullTree.toSnapshot(j + 1)); const expectedSnapshot = testData[j].snapshot; - expect(actualSnapshot).to.be.deep.equal({ + expect(actualSnapshot).toEqual({ finalized: expectedSnapshot.finalized, root: expectedSnapshot.depositRoot, count: expectedSnapshot.depositCount, diff --git a/packages/ssz/test/spec/generic/index.test.ts b/packages/ssz/test/spec/generic/index.test.ts index 39cb2998..86ba908f 100644 --- a/packages/ssz/test/spec/generic/index.test.ts +++ b/packages/ssz/test/spec/generic/index.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import path from "path"; import fs from "fs"; import {ethereumConsensusSpecsTests} from "../../specTestVersioning.js"; @@ -28,7 +28,7 @@ for (const testType of fs.readdirSync(rootGenericSszPath)) { it(invalidCase, () => { // TODO: Strong type errors and assert that the entire it() throws known errors if (invalidCase.endsWith("_0")) { - expect(() => getTestType(testType, invalidCase), "Must throw constructing type").to.throw(); + expect(() => getTestType(testType, invalidCase), "Must throw constructing type").toThrow(); return; } @@ -44,7 +44,7 @@ for (const testType of fs.readdirSync(rootGenericSszPath)) { // should simply not be decoded without raising an error. // Note that for some type declarations in the invalid suite, the type itself may technically be invalid. // This is a valid way of detecting invalid data too. E.g. a 0-length basic vector. - expect(() => type.deserialize(testData.serialized), "Must throw on deserialize").to.throw(); + expect(() => type.deserialize(testData.serialized), "Must throw on deserialize").toThrow(); }); } }); diff --git a/packages/ssz/test/spec/runValidTest.ts b/packages/ssz/test/spec/runValidTest.ts index f5a0d7d3..9f8839a0 100644 --- a/packages/ssz/test/spec/runValidTest.ts +++ b/packages/ssz/test/spec/runValidTest.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {expect} from "vitest"; import {LeafNode, Node} from "@chainsafe/persistent-merkle-tree"; import {Type} from "../../src/type/abstract.js"; import {fromHexString, toHexString} from "../../src/util/byteArray.js"; diff --git a/packages/ssz/test/spec/ssz_static.ts b/packages/ssz/test/spec/ssz_static.ts index 613a55d3..718d7d40 100644 --- a/packages/ssz/test/spec/ssz_static.ts +++ b/packages/ssz/test/spec/ssz_static.ts @@ -1,5 +1,6 @@ import fs from "fs"; import path from "path"; +import {describe, it, vi} from "vitest"; import {isCompositeType, Type} from "../../src/index.js"; import {ssz} from "../lodestarTypes/index.js"; import {ethereumConsensusSpecsTests} from "../specTestVersioning.js"; @@ -61,7 +62,7 @@ function testStatic(typeName: string, sszType: Type, forkName: ForkName it(testId, function () { // Mainnet must deal with big full states and hash each one multiple times if (preset === "mainnet") { - this.timeout(30 * 1000); + vi.setConfig({testTimeout: 30 * 1000}); } const testData = parseSszStaticTestcase(path.join(caseDir, testId)); diff --git a/packages/ssz/test/unit/byType/bitArray/tree.test.ts b/packages/ssz/test/unit/byType/bitArray/tree.test.ts index ace3c9dd..5dad8e69 100644 --- a/packages/ssz/test/unit/byType/bitArray/tree.test.ts +++ b/packages/ssz/test/unit/byType/bitArray/tree.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {BitVectorType, BitListType, BitArray} from "../../../../src/index.js"; import {runViewTestMutation} from "../runViewTestMutation.js"; @@ -57,13 +57,13 @@ describe("BitArray batchHashTreeRoot", () => { const expectedRoot = sszType.toView(value).hashTreeRoot(); it("fresh ViewDU", () => { - expect(sszType.toViewDU(value).batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(sszType.toViewDU(value).batchHashTreeRoot()).toEqual(expectedRoot); }); it("set then hashTreeRoot", () => { const viewDU = sszType.toViewDU(fromNum(4, 0b0011)); viewDU.set(0, false); - expect(sszType.toViewDU(value).batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(sszType.toViewDU(value).batchHashTreeRoot()).toEqual(expectedRoot); }); }); diff --git a/packages/ssz/test/unit/byType/bitList/invalid.test.ts b/packages/ssz/test/unit/byType/bitList/invalid.test.ts index be07a716..e8d3f62d 100644 --- a/packages/ssz/test/unit/byType/bitList/invalid.test.ts +++ b/packages/ssz/test/unit/byType/bitList/invalid.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {BitListType} from "../../../../src/index.js"; import {runTypeTestInvalid} from "../runTypeTestInvalid.js"; @@ -21,7 +21,7 @@ runTypeTestInvalid({ describe("BitListType constructor errors", () => { it("limit must be > 0", () => { - expect(() => new BitListType(0)).to.throw(); + expect(() => new BitListType(0)).toThrow(); }); }); @@ -30,6 +30,6 @@ describe("Extra error cases", () => { const bitListType = new BitListType(8 * 8); const uint8Array = new Uint8Array(0); const dataView = new DataView(uint8Array.buffer, uint8Array.byteOffset, uint8Array.byteLength); - expect(() => bitListType.value_deserializeFromBytes({uint8Array, dataView}, 0, uint8Array.length + 1)).to.throw(); + expect(() => bitListType.value_deserializeFromBytes({uint8Array, dataView}, 0, uint8Array.length + 1)).toThrow(); }); }); diff --git a/packages/ssz/test/unit/byType/bitList/valid.test.ts b/packages/ssz/test/unit/byType/bitList/valid.test.ts index 630b5e1e..ca17b1f7 100644 --- a/packages/ssz/test/unit/byType/bitList/valid.test.ts +++ b/packages/ssz/test/unit/byType/bitList/valid.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {BitListType, BitArray, toHexString} from "../../../../src/index.js"; import {runTypeTestValid} from "../runTypeTestValid.js"; diff --git a/packages/ssz/test/unit/byType/bitVector/invalid.test.ts b/packages/ssz/test/unit/byType/bitVector/invalid.test.ts index d140b85c..0b8aa1e5 100644 --- a/packages/ssz/test/unit/byType/bitVector/invalid.test.ts +++ b/packages/ssz/test/unit/byType/bitVector/invalid.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {BitVectorType} from "../../../../src/index.js"; import {runTypeTestInvalid} from "../runTypeTestInvalid.js"; @@ -22,6 +22,6 @@ runTypeTestInvalid({ describe("BitVectorType constructor errors", () => { it("length must be > 0", () => { - expect(() => new BitVectorType(0)).to.throw(); + expect(() => new BitVectorType(0)).toThrow(); }); }); diff --git a/packages/ssz/test/unit/byType/bitVector/tree.test.ts b/packages/ssz/test/unit/byType/bitVector/tree.test.ts index 6adeef9c..ae060a07 100644 --- a/packages/ssz/test/unit/byType/bitVector/tree.test.ts +++ b/packages/ssz/test/unit/byType/bitVector/tree.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {BitVectorType, BitArray} from "../../../../src/index.js"; import {runViewTestMutation} from "../runViewTestMutation.js"; @@ -55,13 +55,13 @@ describe("BitVector batchHashTreeRoot", () => { const expectedRoot = sszType.toView(value).hashTreeRoot(); it("fresh ViewDU", () => { - expect(sszType.toViewDU(value).batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(sszType.toViewDU(value).batchHashTreeRoot()).toEqual(expectedRoot); }); it("set then batchHashTreeRoot", () => { const viewDU = sszType.toViewDU(fromNum(4, 0b0011)); viewDU.set(0, false); - expect(sszType.toViewDU(value).batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(sszType.toViewDU(value).batchHashTreeRoot()).toEqual(expectedRoot); }); }); diff --git a/packages/ssz/test/unit/byType/boolean/tree.test.ts b/packages/ssz/test/unit/byType/boolean/tree.test.ts index 6e329a2d..f36f0704 100644 --- a/packages/ssz/test/unit/byType/boolean/tree.test.ts +++ b/packages/ssz/test/unit/byType/boolean/tree.test.ts @@ -1,5 +1,5 @@ import {LeafNode} from "@chainsafe/persistent-merkle-tree"; -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {toHexString} from "../../../../src/util/byteArray.js"; import {BooleanType} from "../../../../src/index.js"; diff --git a/packages/ssz/test/unit/byType/byteList/invalid.test.ts b/packages/ssz/test/unit/byType/byteList/invalid.test.ts index 33699d2c..1ca08e5c 100644 --- a/packages/ssz/test/unit/byType/byteList/invalid.test.ts +++ b/packages/ssz/test/unit/byType/byteList/invalid.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {ByteListType} from "../../../../src/index.js"; import {runTypeTestInvalid} from "../runTypeTestInvalid.js"; @@ -16,6 +16,6 @@ runTypeTestInvalid({ describe("ByteListType constructor errors", () => { it("limit must be > 0", () => { - expect(() => new ByteListType(0)).to.throw(); + expect(() => new ByteListType(0)).toThrow(); }); }); diff --git a/packages/ssz/test/unit/byType/byteVector/invalid.test.ts b/packages/ssz/test/unit/byType/byteVector/invalid.test.ts index faee359e..26b6cfc7 100644 --- a/packages/ssz/test/unit/byType/byteVector/invalid.test.ts +++ b/packages/ssz/test/unit/byType/byteVector/invalid.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {ByteVectorType} from "../../../../src/index.js"; import {runTypeTestInvalid} from "../runTypeTestInvalid.js"; @@ -22,6 +22,6 @@ runTypeTestInvalid({ describe("ByteVectorType constructor errors", () => { it("length must be > 0", () => { - expect(() => new ByteVectorType(0)).to.throw(); + expect(() => new ByteVectorType(0)).toThrow(); }); }); diff --git a/packages/ssz/test/unit/byType/byteVector/tree.test.ts b/packages/ssz/test/unit/byType/byteVector/tree.test.ts index fa931dac..3b15025e 100644 --- a/packages/ssz/test/unit/byType/byteVector/tree.test.ts +++ b/packages/ssz/test/unit/byType/byteVector/tree.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {ByteVectorType, ContainerType} from "../../../../src/index.js"; describe("ByteVectorType proofs", () => { @@ -6,8 +6,8 @@ describe("ByteVectorType proofs", () => { const containerRootType = new ContainerType({root: rootType}); it("Not allow navigating beyond this type", () => { - expect(() => rootType.getPropertyType()).to.throw(); - expect(() => rootType.getIndexProperty()).to.throw(); + expect(() => rootType.getPropertyType()).toThrow(); + expect(() => rootType.getIndexProperty()).toThrow(); const containerRoot = containerRootType.defaultViewDU(); const proof = containerRoot.createProof([["root", 0]]); diff --git a/packages/ssz/test/unit/byType/container/invalid.test.ts b/packages/ssz/test/unit/byType/container/invalid.test.ts index 0742ec2f..07b2fc3b 100644 --- a/packages/ssz/test/unit/byType/container/invalid.test.ts +++ b/packages/ssz/test/unit/byType/container/invalid.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {ContainerNodeStructType, ContainerType, ListBasicType, UintNumberType} from "../../../../src/index.js"; import {byteType, uint16NumType} from "../../../utils/primitiveTypes.js"; import {runTypeTestInvalid} from "../runTypeTestInvalid.js"; @@ -75,7 +75,7 @@ runTypeTestInvalid({ describe("Invalid ContainerType at constructor", () => { it("Must have > 0 fields", () => { - expect(() => new ContainerType({})).to.throw(); + expect(() => new ContainerType({})).toThrow(); }); it("Incomplete casing map", () => { @@ -86,10 +86,10 @@ describe("Invalid ContainerType at constructor", () => { // Set casing map to a value that does not include all fields {casingMap: {b: "b"} as unknown as {a: string}} ) - ).to.throw(); + ).toThrow(); }); it("ContainerNodeStructType of not immutable types", () => { - expect(() => new ContainerNodeStructType({list: new ListBasicType(byteType, 2)})).to.throw(); + expect(() => new ContainerNodeStructType({list: new ListBasicType(byteType, 2)})).toThrow(); }); }); diff --git a/packages/ssz/test/unit/byType/container/tree.test.ts b/packages/ssz/test/unit/byType/container/tree.test.ts index b72975a4..973b78d4 100644 --- a/packages/ssz/test/unit/byType/container/tree.test.ts +++ b/packages/ssz/test/unit/byType/container/tree.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {Tree} from "@chainsafe/persistent-merkle-tree"; import { BitArray, @@ -276,43 +276,43 @@ describe("ContainerViewDU batchHashTreeRoot", function () { const expectedRoot = parentContainerType.toView(value).hashTreeRoot(); it("fresh ViewDU", () => { - expect(parentContainerType.toViewDU(value).batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(parentContainerType.toViewDU(value).batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify Number type", () => { const viewDU = parentContainerType.toViewDU({...value, a: 9}); viewDU.batchHashTreeRoot(); viewDU.a += 1; - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.a = 10; viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify BooleanType", () => { const viewDU = parentContainerType.toViewDU({...value, b: false}); viewDU.batchHashTreeRoot(); viewDU.b = true; - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.b = true; viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify UnionType", () => { const viewDU = parentContainerType.toViewDU({...value, c: {selector: 1, value: 101}}); viewDU.batchHashTreeRoot(); viewDU.c = unionType.toViewDU({selector: 1, value: 100}); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.c = unionType.toViewDU({selector: 1, value: 100}); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify ByteVectorType", () => { @@ -320,12 +320,12 @@ describe("ContainerViewDU batchHashTreeRoot", function () { viewDU.batchHashTreeRoot(); // this takes more than 1 chunk so the resulting node is a branch node viewDU.e = viewDU.e.slice(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.e = viewDU.e.slice(); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify ByteListType", () => { @@ -333,24 +333,24 @@ describe("ContainerViewDU batchHashTreeRoot", function () { viewDU.batchHashTreeRoot(); // this takes more than 1 chunk so the resulting node is a branch node viewDU.d = viewDU.d.slice(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.d = viewDU.d.slice(); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify full child container", () => { const viewDU = parentContainerType.toViewDU({...value, f: {f0: 99, f1: 999}}); viewDU.batchHashTreeRoot(); viewDU.f = childContainerType.toViewDU({f0: 100, f1: 101}); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.f = childContainerType.toViewDU({f0: 100, f1: 101}); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify partial child container", () => { @@ -358,25 +358,25 @@ describe("ContainerViewDU batchHashTreeRoot", function () { viewDU.batchHashTreeRoot(); viewDU.f.f0 = 100; viewDU.f.f1 = 101; - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.f.f0 = 100; viewDU.f.f1 = 101; viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify ContainerNodeStructType", () => { const viewDU = parentContainerType.toViewDU({...value, g: {g0: 99, g1: 999}}); viewDU.batchHashTreeRoot(); viewDU.g = childContainerStruct.toViewDU({g0: 100, g1: 101}); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.g = childContainerStruct.toViewDU({g0: 100, g1: 101}); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify partial ContainerNodeStructType", () => { @@ -384,169 +384,169 @@ describe("ContainerViewDU batchHashTreeRoot", function () { viewDU.batchHashTreeRoot(); viewDU.g.g0 = 100; viewDU.g.g1 = 101; - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.g.g0 = 100; viewDU.g.g1 = 101; viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify ListBasicType", () => { const viewDU = parentContainerType.toViewDU({...value, h: []}); viewDU.batchHashTreeRoot(); viewDU.h = listBasicType.toViewDU([1, 2]); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.h = listBasicType.toViewDU([1, 2]); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then push 1 item to ListBasicType", () => { const viewDU = parentContainerType.toViewDU({...value, h: [1]}); viewDU.batchHashTreeRoot(); viewDU.h.push(2); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.h = listBasicType.toViewDU([1, 2]); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify 1 item of ListBasicType", () => { const viewDU = parentContainerType.toViewDU({...value, h: [1, 3]}); viewDU.batchHashTreeRoot(); viewDU.h.set(1, 2); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.h.set(1, 2); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify VectorBasicType", () => { const viewDU = parentContainerType.toViewDU({...value, i: []}); viewDU.batchHashTreeRoot(); viewDU.i = vectorBasicType.toViewDU([1, 2]); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.i = vectorBasicType.toViewDU([1, 2]); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify 1 item of VectorBasicType", () => { const viewDU = parentContainerType.toViewDU({...value, i: [1, 3]}); viewDU.batchHashTreeRoot(); viewDU.i.set(1, 2); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.i.set(1, 2); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify ListCompositeType", () => { const viewDU = parentContainerType.toViewDU({...value, j: []}); viewDU.batchHashTreeRoot(); viewDU.j = listCompositeType.toViewDU([{f0: 1, f1: 2}]); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.j = listCompositeType.toViewDU([{f0: 1, f1: 2}]); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then push 1 item to ListCompositeType", () => { const viewDU = parentContainerType.toViewDU({...value, j: []}); viewDU.batchHashTreeRoot(); viewDU.j.push(childContainerType.toViewDU({f0: 1, f1: 2})); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.j = listCompositeType.toViewDU([{f0: 1, f1: 2}]); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify 1 item of ListCompositeType", () => { const viewDU = parentContainerType.toViewDU({...value, j: [{f0: 1, f1: 3}]}); viewDU.batchHashTreeRoot(); viewDU.j.set(0, childContainerType.toViewDU({f0: 1, f1: 2})); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.j.set(0, childContainerType.toViewDU({f0: 1, f1: 2})); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify 1 field of 1 item of ListCompositeType", () => { const viewDU = parentContainerType.toViewDU({...value, j: [{f0: 1, f1: 3}]}); viewDU.batchHashTreeRoot(); viewDU.j.get(0).f1 = 2; - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.j.get(0).f1 = 2; viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify VectorCompositeType", () => { const viewDU = parentContainerType.toViewDU({...value, k: [{f0: 9, f1: 9}]}); viewDU.batchHashTreeRoot(); viewDU.k = vectorCompositeType.toViewDU([{f0: 1, f1: 2}]); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.k = vectorCompositeType.toViewDU([{f0: 1, f1: 2}]); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify 1 item of VectorCompositeType", () => { const viewDU = parentContainerType.toViewDU({...value, k: [{f0: 1, f1: 3}]}); viewDU.batchHashTreeRoot(); viewDU.k.set(0, childContainerType.toViewDU({f0: 1, f1: 2})); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.k.set(0, childContainerType.toViewDU({f0: 1, f1: 2})); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify 1 field 1 item of VectorCompositeType", () => { const viewDU = parentContainerType.toViewDU({...value, k: [{f0: 1, f1: 3}]}); viewDU.batchHashTreeRoot(); viewDU.k.get(0).f1 = 2; - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.k.get(0).f1 = 2; viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify BitVectorType", () => { const viewDU = parentContainerType.toViewDU({...value, l: BitArray.fromSingleBit(64, 4)}); viewDU.batchHashTreeRoot(); viewDU.l = bitVectorType.toViewDU(BitArray.fromSingleBit(64, 5)); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.l = bitVectorType.toViewDU(BitArray.fromSingleBit(64, 5)); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify BitVectorType bit", () => { @@ -554,25 +554,25 @@ describe("ContainerViewDU batchHashTreeRoot", function () { viewDU.batchHashTreeRoot(); viewDU.l.set(4, false); viewDU.l.set(5, true); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.l.set(4, false); viewDU.l.set(5, true); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify BitListType", () => { const viewDU = parentContainerType.toViewDU({...value, m: BitArray.fromSingleBit(4, 0)}); viewDU.batchHashTreeRoot(); viewDU.m = bitListType.toViewDU(BitArray.fromSingleBit(4, 1)); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.m = bitListType.toViewDU(BitArray.fromSingleBit(4, 1)); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify BitListType bit", () => { @@ -580,13 +580,13 @@ describe("ContainerViewDU batchHashTreeRoot", function () { viewDU.batchHashTreeRoot(); viewDU.m.set(0, false); viewDU.m.set(1, true); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.m.set(0, false); viewDU.m.set(1, true); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); }); @@ -617,14 +617,14 @@ describe("ContainerNodeStruct batchHashTreeRoot", function () { const expectedRoot = containerType.toView(value).hashTreeRoot(); it("fresh ViewDU", () => { - expect(containerType.toViewDU(value).batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(containerType.toViewDU(value).batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify basic type", () => { const viewDU = containerType.toViewDU({...value, exitEpoch: 3}); viewDU.batchHashTreeRoot(); viewDU.exitEpoch *= 1_000_000; - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("modify basic type", () => { @@ -635,7 +635,7 @@ describe("ContainerNodeStruct batchHashTreeRoot", function () { }); viewDU.exitEpoch -= 1; viewDU.withdrawableEpoch -= 1; - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); }); @@ -678,12 +678,12 @@ describe("upgradeToNewType utility", () => { } const expectedViewDU = newType.toViewDU(expectedValue); - expect(newView.toValue()).to.be.deep.equal(expectedValue); - expect(newView.hashTreeRoot()).to.be.deep.equal(expectedViewDU.hashTreeRoot()); - expect(newView.serialize()).to.be.deep.equal(expectedViewDU.serialize()); - expect(newViewDU.toValue()).to.be.deep.equal(expectedValue); - expect(newViewDU.hashTreeRoot()).to.be.deep.equal(expectedViewDU.hashTreeRoot()); - expect(newViewDU.serialize()).to.be.deep.equal(expectedViewDU.serialize()); + expect(newView.toValue()).toEqual(expectedValue); + expect(newView.hashTreeRoot()).toEqual(expectedViewDU.hashTreeRoot()); + expect(newView.serialize()).toEqual(expectedViewDU.serialize()); + expect(newViewDU.toValue()).toEqual(expectedValue); + expect(newViewDU.hashTreeRoot()).toEqual(expectedViewDU.hashTreeRoot()); + expect(newViewDU.serialize()).toEqual(expectedViewDU.serialize()); } }); } diff --git a/packages/ssz/test/unit/byType/listBasic/invalid.test.ts b/packages/ssz/test/unit/byType/listBasic/invalid.test.ts index 97ffa67a..7d76eaf5 100644 --- a/packages/ssz/test/unit/byType/listBasic/invalid.test.ts +++ b/packages/ssz/test/unit/byType/listBasic/invalid.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {ListBasicType} from "../../../../src/index.js"; import {byteType} from "../../../utils/primitiveTypes.js"; import {runTypeTestInvalid} from "../runTypeTestInvalid.js"; @@ -18,11 +18,11 @@ runTypeTestInvalid({ describe("Invalid ListBasicType at constructor", () => { it("limit must be > 0", () => { - expect(() => new ListBasicType(byteType, 0)).to.throw(); + expect(() => new ListBasicType(byteType, 0)).toThrow(); }); it("ElementType must be basic", () => { const compositeType = new ListBasicType(byteType, 2); - expect(() => new ListBasicType(compositeType as unknown as typeof byteType, 2)).to.throw(); + expect(() => new ListBasicType(compositeType as unknown as typeof byteType, 2)).toThrow(); }); }); diff --git a/packages/ssz/test/unit/byType/listBasic/misc.test.ts b/packages/ssz/test/unit/byType/listBasic/misc.test.ts index 2520f418..cb81a8bd 100644 --- a/packages/ssz/test/unit/byType/listBasic/misc.test.ts +++ b/packages/ssz/test/unit/byType/listBasic/misc.test.ts @@ -1,14 +1,14 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {ListBasicType, UintNumberType} from "../../../../src/index.js"; describe("To hit 100% coverage", () => { const listBasic = new ListBasicType(new UintNumberType(1), 4); it("listBasic.getPropertyGindex('bad-string')", () => { - expect(() => listBasic.getPropertyGindex("bad-string")).to.throw(); + expect(() => listBasic.getPropertyGindex("bad-string")).toThrow(); }); it("listBasic.tree_getLeafGindices() with no node", () => { - expect(() => listBasic.tree_getLeafGindices(0n)).to.throw(); + expect(() => listBasic.tree_getLeafGindices(0n)).toThrow(); }); }); diff --git a/packages/ssz/test/unit/byType/listBasic/mutation.test.ts b/packages/ssz/test/unit/byType/listBasic/mutation.test.ts index 269ceaae..b590efdf 100644 --- a/packages/ssz/test/unit/byType/listBasic/mutation.test.ts +++ b/packages/ssz/test/unit/byType/listBasic/mutation.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {ListBasicType, UintNumberType} from "../../../../src/index.js"; describe("BasicList", () => { diff --git a/packages/ssz/test/unit/byType/listBasic/tree.test.ts b/packages/ssz/test/unit/byType/listBasic/tree.test.ts index 08f8b54d..b5d6c0db 100644 --- a/packages/ssz/test/unit/byType/listBasic/tree.test.ts +++ b/packages/ssz/test/unit/byType/listBasic/tree.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {ListBasicType, toHexString, UintNumberType} from "../../../../src/index.js"; import {runViewTestMutation, TreeMutation} from "../runViewTestMutation.js"; import {ListUintNum64Type} from "../../../../src/type/listUintNum64.js"; @@ -190,8 +190,8 @@ describe("ListBasicType tree reads", () => { values.push(i); } - expect(() => view.push(0)).to.throw("Error pushing over limit"); - expect(() => view.set(view.type.limit, 0)).to.throw("Error setting index over length"); + expect(() => view.push(0)).toThrow("Error pushing over limit"); + expect(() => view.set(view.type.limit, 0)).toThrow("Error setting index over length"); for (let i = 0; i < view.type.limit; i++) { expect(view.get(i)).equals(values[i], `Wrong get(${i})`); @@ -246,7 +246,7 @@ describe("ListBasicType batchHashTreeRoot", function () { const expectedRoot = ListN64Uint64NumberType.toView(value).hashTreeRoot(); it("fresh ViewDU", () => { - expect(ListN64Uint64NumberType.toViewDU(value).batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(ListN64Uint64NumberType.toViewDU(value).batchHashTreeRoot()).toEqual(expectedRoot); }); it("push then batchHashTreeRoot()", () => { @@ -255,7 +255,7 @@ describe("ListBasicType batchHashTreeRoot", function () { viewDU.push(2); viewDU.push(3); viewDU.push(4); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign the same value again, commit() then batchHashTreeRoot() viewDU.set(0, 1); @@ -263,7 +263,7 @@ describe("ListBasicType batchHashTreeRoot", function () { viewDU.set(2, 3); viewDU.set(3, 4); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("push then modify then batchHashTreeRoot()", () => { @@ -273,13 +273,13 @@ describe("ListBasicType batchHashTreeRoot", function () { viewDU.push(3); viewDU.push(44); viewDU.set(3, 4); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign the same value again, commit() then batchHashTreeRoot() viewDU.set(3, 44); viewDU.set(3, 4); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify", () => { @@ -291,7 +291,7 @@ describe("ListBasicType batchHashTreeRoot", function () { viewDU.batchHashTreeRoot(); viewDU.set(2, 3); viewDU.set(3, 4); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign the same value again, commit() then batchHashTreeRoot() viewDU.set(2, 33); @@ -300,7 +300,7 @@ describe("ListBasicType batchHashTreeRoot", function () { viewDU.set(2, 3); viewDU.set(3, 4); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); // similar to a fresh ViewDU but it's good to test @@ -312,6 +312,6 @@ describe("ListBasicType batchHashTreeRoot", function () { viewDU.push(4); viewDU.push(5); viewDU.batchHashTreeRoot(); - expect(viewDU.sliceTo(3).batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.sliceTo(3).batchHashTreeRoot()).toEqual(expectedRoot); }); }); diff --git a/packages/ssz/test/unit/byType/listComposite/invalid.test.ts b/packages/ssz/test/unit/byType/listComposite/invalid.test.ts index 37acceb9..0bf82044 100644 --- a/packages/ssz/test/unit/byType/listComposite/invalid.test.ts +++ b/packages/ssz/test/unit/byType/listComposite/invalid.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {ListCompositeType, UintNumberType, ContainerType, ListBasicType} from "../../../../src/index.js"; import {runTypeTestInvalid} from "../runTypeTestInvalid.js"; @@ -70,10 +70,10 @@ describe("Invalid ListBasicType at constructor", () => { const compositeType = new ListBasicType(uint16, 2); it("limit must be > 0", () => { - expect(() => new ListCompositeType(compositeType, 0)).to.throw(); + expect(() => new ListCompositeType(compositeType, 0)).toThrow(); }); it("ElementType must be basic", () => { - expect(() => new ListCompositeType(uint16 as unknown as typeof compositeType, 2)).to.throw(); + expect(() => new ListCompositeType(uint16 as unknown as typeof compositeType, 2)).toThrow(); }); }); diff --git a/packages/ssz/test/unit/byType/listComposite/tree.test.ts b/packages/ssz/test/unit/byType/listComposite/tree.test.ts index 90ad6504..2a15c2a8 100644 --- a/packages/ssz/test/unit/byType/listComposite/tree.test.ts +++ b/packages/ssz/test/unit/byType/listComposite/tree.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect, beforeEach} from "vitest"; import { CompositeView, ContainerNodeStructType, @@ -108,8 +108,8 @@ describe("ListCompositeType tree reads", () => { view.push(elementToView(values[i]) as any); } - expect(() => view.push(elementToView(values[0]) as any)).to.throw("Error pushing over limit"); - expect(() => view.set(view.type.limit, elementToView(values[0]) as any)).to.throw( + expect(() => view.push(elementToView(values[0]) as any)).toThrow("Error pushing over limit"); + expect(() => view.set(view.type.limit, elementToView(values[0]) as any)).toThrow( "Error setting index over length" ); @@ -120,7 +120,7 @@ describe("ListCompositeType tree reads", () => { // Only for viewDU if (view instanceof ArrayCompositeTreeViewDU) { - expect(() => view.getAllReadonly()).to.throw("Must commit changes before reading all nodes"); + expect(() => view.getAllReadonly()).toThrow("Must commit changes before reading all nodes"); view.commit(); } @@ -244,20 +244,20 @@ describe("ListCompositeType batchHashTreeRoot", () => { const expectedRoot = list.toView(value).hashTreeRoot(); it(`${typeName} - fresh ViewDU`, () => { - expect(listOfContainersType.toViewDU(value).batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(listOfContainersType.toViewDU(value).batchHashTreeRoot()).toEqual(expectedRoot); }); it(`${typeName} - push then batchHashTreeRoot()`, () => { const viewDU = listOfContainersType.defaultViewDU(); viewDU.push(containerUintsType.toViewDU({a: 1, b: 2})); viewDU.push(containerUintsType.toViewDU({a: 3, b: 4})); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again, commit() then batchHashTreeRoot() viewDU.set(0, containerUintsType.toViewDU({a: 1, b: 2})); viewDU.set(1, containerUintsType.toViewDU({a: 3, b: 4})); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it(`${typeName} - full hash then modify full non-hashed child element`, () => { @@ -266,12 +266,12 @@ describe("ListCompositeType batchHashTreeRoot", () => { viewDU.push(containerUintsType.toViewDU({a: 33, b: 44})); viewDU.batchHashTreeRoot(); viewDU.set(1, containerUintsType.toViewDU({a: 3, b: 4})); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign the same value again, commit() then batchHashTreeRoot() viewDU.set(1, containerUintsType.toViewDU({a: 3, b: 4})); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it(`${typeName} - full hash then modify partially hashed child element`, () => { @@ -283,14 +283,14 @@ describe("ListCompositeType batchHashTreeRoot", () => { item1.batchHashTreeRoot(); item1.b = 4; viewDU.set(1, item1); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign the same value again, commit() then batchHashTreeRoot() const item2 = viewDU.get(1); item2.a = 3; item2.b = 4; viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it(`${typeName} - full hash then modify full hashed child element`, () => { @@ -301,13 +301,13 @@ describe("ListCompositeType batchHashTreeRoot", () => { const item1 = containerUintsType.toViewDU({a: 3, b: 4}); item1.batchHashTreeRoot(); viewDU.set(1, item1); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign the same value again, commit() then batchHashTreeRoot() const newItem = containerUintsType.toViewDU({a: 3, b: 4}); viewDU.set(1, newItem); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it(`${typeName} - full hash then modify partial child element`, () => { @@ -317,13 +317,13 @@ describe("ListCompositeType batchHashTreeRoot", () => { viewDU.batchHashTreeRoot(); viewDU.get(1).a = 3; viewDU.get(1).b = 4; - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign the same value again, commit() then batchHashTreeRoot() viewDU.get(1).a = 3; viewDU.get(1).b = 4; viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); // similar to a fresh ViewDU but it's good to test @@ -333,7 +333,7 @@ describe("ListCompositeType batchHashTreeRoot", () => { viewDU.push(containerUintsType.toViewDU({a: 3, b: 4})); viewDU.push(containerUintsType.toViewDU({a: 5, b: 6})); viewDU.batchHashTreeRoot(); - expect(viewDU.sliceTo(1).batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.sliceTo(1).batchHashTreeRoot()).toEqual(expectedRoot); }); } }); diff --git a/packages/ssz/test/unit/byType/none/misc.test.ts b/packages/ssz/test/unit/byType/none/misc.test.ts index b98e7bb1..c440c46e 100644 --- a/packages/ssz/test/unit/byType/none/misc.test.ts +++ b/packages/ssz/test/unit/byType/none/misc.test.ts @@ -1,5 +1,5 @@ import {LeafNode} from "@chainsafe/persistent-merkle-tree"; -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {NoneType, toHexString} from "../../../../src/index.js"; describe("None type", () => { diff --git a/packages/ssz/test/unit/byType/optional/tree.test.ts b/packages/ssz/test/unit/byType/optional/tree.test.ts index 85be0f3f..673716a4 100644 --- a/packages/ssz/test/unit/byType/optional/tree.test.ts +++ b/packages/ssz/test/unit/byType/optional/tree.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {OptionalType, ContainerType, UintNumberType, ValueOf, toHexString} from "../../../../src/index.js"; const byteType = new UintNumberType(1); diff --git a/packages/ssz/test/unit/byType/partialListComposite/tree.test.ts b/packages/ssz/test/unit/byType/partialListComposite/tree.test.ts index 303ee170..75a57430 100644 --- a/packages/ssz/test/unit/byType/partialListComposite/tree.test.ts +++ b/packages/ssz/test/unit/byType/partialListComposite/tree.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {ContainerType, ListCompositeType, UintNumberType} from "../../../../src/index.js"; import {PartialListCompositeType} from "../../../../src/type/partialListComposite.js"; diff --git a/packages/ssz/test/unit/byType/profile/tree.test.ts b/packages/ssz/test/unit/byType/profile/tree.test.ts index 9f7770de..00c8f85b 100644 --- a/packages/ssz/test/unit/byType/profile/tree.test.ts +++ b/packages/ssz/test/unit/byType/profile/tree.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {Tree} from "@chainsafe/persistent-merkle-tree"; import { BitArray, @@ -307,43 +307,43 @@ describe("ProfileViewDU batchHashTreeRoot", function () { const expectedRoot = parentContainerType.hashTreeRoot(value); it("fresh ViewDU", () => { - expect(parentContainerType.toViewDU(value).batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(parentContainerType.toViewDU(value).batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify Number type", () => { const viewDU = parentContainerType.toViewDU({...value, a: 9}); viewDU.batchHashTreeRoot(); viewDU.a += 1; - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.a = 10; viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify BooleanType", () => { const viewDU = parentContainerType.toViewDU({...value, b: false}); viewDU.batchHashTreeRoot(); viewDU.b = true; - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.b = true; viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify UnionType", () => { const viewDU = parentContainerType.toViewDU({...value, c: {selector: 1, value: 101}}); viewDU.batchHashTreeRoot(); viewDU.c = unionType.toViewDU({selector: 1, value: 100}); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.c = unionType.toViewDU({selector: 1, value: 100}); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify ByteVectorType", () => { @@ -351,12 +351,12 @@ describe("ProfileViewDU batchHashTreeRoot", function () { viewDU.batchHashTreeRoot(); // this takes more than 1 chunk so the resulting node is a branch node viewDU.e = viewDU.e.slice(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.e = viewDU.e.slice(); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify ByteListType", () => { @@ -364,24 +364,24 @@ describe("ProfileViewDU batchHashTreeRoot", function () { viewDU.batchHashTreeRoot(); // this takes more than 1 chunk so the resulting node is a branch node viewDU.d = viewDU.d.slice(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.d = viewDU.d.slice(); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify full child container", () => { const viewDU = parentContainerType.toViewDU({...value, f: {f0: 99, f1: 999}}); viewDU.batchHashTreeRoot(); viewDU.f = childContainerType.toViewDU({f0: 100, f1: 101}); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.f = childContainerType.toViewDU({f0: 100, f1: 101}); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify partial child container", () => { @@ -389,25 +389,25 @@ describe("ProfileViewDU batchHashTreeRoot", function () { viewDU.batchHashTreeRoot(); viewDU.f.f0 = 100; viewDU.f.f1 = 101; - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.f.f0 = 100; viewDU.f.f1 = 101; viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify ContainerNodeStructType", () => { const viewDU = parentContainerType.toViewDU({...value, g: {g0: 99, g1: 999}}); viewDU.batchHashTreeRoot(); viewDU.g = childContainerStruct.toViewDU({g0: 100, g1: 101}); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.g = childContainerStruct.toViewDU({g0: 100, g1: 101}); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify partial ContainerNodeStructType", () => { @@ -415,169 +415,169 @@ describe("ProfileViewDU batchHashTreeRoot", function () { viewDU.batchHashTreeRoot(); viewDU.g.g0 = 100; viewDU.g.g1 = 101; - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.g.g0 = 100; viewDU.g.g1 = 101; viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify ListBasicType", () => { const viewDU = parentContainerType.toViewDU({...value, h: []}); viewDU.batchHashTreeRoot(); viewDU.h = listBasicType.toViewDU([1, 2]); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.h = listBasicType.toViewDU([1, 2]); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then push 1 item to ListBasicType", () => { const viewDU = parentContainerType.toViewDU({...value, h: [1]}); viewDU.batchHashTreeRoot(); viewDU.h.push(2); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.h = listBasicType.toViewDU([1, 2]); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify 1 item of ListBasicType", () => { const viewDU = parentContainerType.toViewDU({...value, h: [1, 3]}); viewDU.batchHashTreeRoot(); viewDU.h.set(1, 2); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.h.set(1, 2); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify VectorBasicType", () => { const viewDU = parentContainerType.toViewDU({...value, i: []}); viewDU.batchHashTreeRoot(); viewDU.i = vectorBasicType.toViewDU([1, 2]); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.i = vectorBasicType.toViewDU([1, 2]); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify 1 item of VectorBasicType", () => { const viewDU = parentContainerType.toViewDU({...value, i: [1, 3]}); viewDU.batchHashTreeRoot(); viewDU.i.set(1, 2); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.i.set(1, 2); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify ListCompositeType", () => { const viewDU = parentContainerType.toViewDU({...value, j: []}); viewDU.batchHashTreeRoot(); viewDU.j = listCompositeType.toViewDU([{f0: 1, f1: 2}]); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.j = listCompositeType.toViewDU([{f0: 1, f1: 2}]); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then push 1 item to ListCompositeType", () => { const viewDU = parentContainerType.toViewDU({...value, j: []}); viewDU.batchHashTreeRoot(); viewDU.j.push(childContainerType.toViewDU({f0: 1, f1: 2})); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.j = listCompositeType.toViewDU([{f0: 1, f1: 2}]); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify 1 item of ListCompositeType", () => { const viewDU = parentContainerType.toViewDU({...value, j: [{f0: 1, f1: 3}]}); viewDU.batchHashTreeRoot(); viewDU.j.set(0, childContainerType.toViewDU({f0: 1, f1: 2})); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.j.set(0, childContainerType.toViewDU({f0: 1, f1: 2})); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify 1 field of 1 item of ListCompositeType", () => { const viewDU = parentContainerType.toViewDU({...value, j: [{f0: 1, f1: 3}]}); viewDU.batchHashTreeRoot(); viewDU.j.get(0).f1 = 2; - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.j.get(0).f1 = 2; viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify VectorCompositeType", () => { const viewDU = parentContainerType.toViewDU({...value, k: [{f0: 9, f1: 9}]}); viewDU.batchHashTreeRoot(); viewDU.k = vectorCompositeType.toViewDU([{f0: 1, f1: 2}]); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.k = vectorCompositeType.toViewDU([{f0: 1, f1: 2}]); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify 1 item of VectorCompositeType", () => { const viewDU = parentContainerType.toViewDU({...value, k: [{f0: 1, f1: 3}]}); viewDU.batchHashTreeRoot(); viewDU.k.set(0, childContainerType.toViewDU({f0: 1, f1: 2})); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.k.set(0, childContainerType.toViewDU({f0: 1, f1: 2})); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify 1 field 1 item of VectorCompositeType", () => { const viewDU = parentContainerType.toViewDU({...value, k: [{f0: 1, f1: 3}]}); viewDU.batchHashTreeRoot(); viewDU.k.get(0).f1 = 2; - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.k.get(0).f1 = 2; viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify BitVectorType", () => { const viewDU = parentContainerType.toViewDU({...value, l: BitArray.fromSingleBit(64, 4)}); viewDU.batchHashTreeRoot(); viewDU.l = bitVectorType.toViewDU(BitArray.fromSingleBit(64, 5)); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.l = bitVectorType.toViewDU(BitArray.fromSingleBit(64, 5)); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify BitVectorType bit", () => { @@ -585,25 +585,25 @@ describe("ProfileViewDU batchHashTreeRoot", function () { viewDU.batchHashTreeRoot(); viewDU.l.set(4, false); viewDU.l.set(5, true); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.l.set(4, false); viewDU.l.set(5, true); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify BitListType", () => { const viewDU = parentContainerType.toViewDU({...value, m: BitArray.fromSingleBit(4, 0)}); viewDU.batchHashTreeRoot(); viewDU.m = bitListType.toViewDU(BitArray.fromSingleBit(4, 1)); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.m = bitListType.toViewDU(BitArray.fromSingleBit(4, 1)); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify BitListType bit", () => { @@ -611,25 +611,25 @@ describe("ProfileViewDU batchHashTreeRoot", function () { viewDU.batchHashTreeRoot(); viewDU.m.set(0, false); viewDU.m.set(1, true); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.m.set(0, false); viewDU.m.set(1, true); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify OptionalType", () => { const viewDU = parentContainerType.toViewDU({...value, n: null}); viewDU.batchHashTreeRoot(); viewDU.n = listBasicType.toViewDU([1, 2]); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.n = listBasicType.toViewDU([1, 2]); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); }); @@ -669,7 +669,7 @@ describe("Optional types", () => { expect(view.hashTreeRoot()).to.deep.equal(expectedRoot); const value2 = parentContainer.deserialize(expectedBytes); - expect(value2).to.be.deep.equal(value); + expect(value2).toEqual(value); expect(parentContainer.serialize(value2)).to.deep.equal(expectedBytes); expect(parentContainer.hashTreeRoot(value2)).to.deep.equal(expectedRoot); }); @@ -687,9 +687,9 @@ describe("Optional types", () => { // value const value2 = parentContainer.deserialize(parentContainer.serialize(value)); - expect(value2).to.be.deep.equal(value); + expect(value2).toEqual(value); const valueNull2 = parentContainer.deserialize(parentContainer.serialize(valueNull)); - expect(valueNull2).to.be.deep.equal(valueNull); + expect(valueNull2).toEqual(valueNull); // ViewDU const viewDU = parentContainer.toViewDU(value); @@ -732,12 +732,12 @@ describe("Profile type merkleization vs StableContainer", () => { it("batchHashTreeRoot()", () => { const stableViewDU = stableType.toViewDU({...value, a: null, d: null}); const profileViewDU = profileType.toViewDU(value); - expect(stableViewDU.batchHashTreeRoot()).to.be.deep.equal(profileViewDU.batchHashTreeRoot()); + expect(stableViewDU.batchHashTreeRoot()).toEqual(profileViewDU.batchHashTreeRoot()); }); it("hashTreeRoot()", () => { const stableViewDU = stableType.toViewDU({...value, a: null, d: null}); const profileViewDU = profileType.toViewDU(value); - expect(stableViewDU.hashTreeRoot()).to.be.deep.equal(profileViewDU.hashTreeRoot()); + expect(stableViewDU.hashTreeRoot()).toEqual(profileViewDU.hashTreeRoot()); }); }); diff --git a/packages/ssz/test/unit/byType/runTypeProofTest.ts b/packages/ssz/test/unit/byType/runTypeProofTest.ts index dd2040c9..6c1ce6ea 100644 --- a/packages/ssz/test/unit/byType/runTypeProofTest.ts +++ b/packages/ssz/test/unit/byType/runTypeProofTest.ts @@ -1,5 +1,5 @@ import {Node} from "@chainsafe/persistent-merkle-tree"; -import {expect} from "chai"; +import {expect} from "vitest"; import { BitArray, ContainerType, diff --git a/packages/ssz/test/unit/byType/runTypeTestInvalid.ts b/packages/ssz/test/unit/byType/runTypeTestInvalid.ts index 2dcc6325..f9fe9205 100644 --- a/packages/ssz/test/unit/byType/runTypeTestInvalid.ts +++ b/packages/ssz/test/unit/byType/runTypeTestInvalid.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {CompositeType, fromHexString, Type} from "../../../src/index.js"; /* eslint-disable @typescript-eslint/no-unsafe-assignment */ @@ -52,7 +52,7 @@ export function runTypeTestInvalid({type, values}: {type: Type; values: In if (json !== undefined) { if (!id) id = String(json); it(`${id} - fromJson`, () => { - expect(() => type.fromJson(json)).to.throw(error); + expect(() => type.fromJson(json)).toThrow(error); }); } @@ -62,21 +62,21 @@ export function runTypeTestInvalid({type, values}: {type: Type; values: In const dataView = new DataView(uint8Array.buffer, uint8Array.byteOffset, uint8Array.byteLength); it(`${id} - struct deserialize`, () => { - expect(() => type.deserialize(uint8Array)).to.throw(error); + expect(() => type.deserialize(uint8Array)).toThrow(error); }); it(`${id} - tree deserialize`, () => { - expect(() => type.tree_deserializeFromBytes({uint8Array, dataView}, 0, uint8Array.length)).to.throw(error); + expect(() => type.tree_deserializeFromBytes({uint8Array, dataView}, 0, uint8Array.length)).toThrow(error); }); const typeComposite = type as CompositeType; if (!typeComposite.isBasic) { it(`${id} - tree deserialize toView`, () => { - expect(() => typeComposite.deserializeToView(fromHexString(serialized))).to.throw(error); + expect(() => typeComposite.deserializeToView(fromHexString(serialized))).toThrow(error); }); it(`${id} - tree deserialize toViewDU`, () => { - expect(() => typeComposite.deserializeToViewDU(fromHexString(serialized))).to.throw(error); + expect(() => typeComposite.deserializeToViewDU(fromHexString(serialized))).toThrow(error); }); } } diff --git a/packages/ssz/test/unit/byType/runTypeTestValid.ts b/packages/ssz/test/unit/byType/runTypeTestValid.ts index 333469e4..7654d2d3 100644 --- a/packages/ssz/test/unit/byType/runTypeTestValid.ts +++ b/packages/ssz/test/unit/byType/runTypeTestValid.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {toHexString, TreeViewDU, UnionType} from "../../../src/index.js"; import {Type} from "../../../src/type/abstract.js"; import {isCompositeType} from "../../../src/type/composite.js"; diff --git a/packages/ssz/test/unit/byType/runViewTestMutation.ts b/packages/ssz/test/unit/byType/runViewTestMutation.ts index be6a5441..f55fb806 100644 --- a/packages/ssz/test/unit/byType/runViewTestMutation.ts +++ b/packages/ssz/test/unit/byType/runViewTestMutation.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {toHexString} from "../../../src/util/byteArray.js"; import {CompositeType, ValueOf, TreeViewDU, CompositeViewDU} from "../../../src/index.js"; @@ -51,7 +51,7 @@ const runViewTestMutationFn = function runViewTestMutation { for (const testCase of ops) { diff --git a/packages/ssz/test/unit/byType/stableContainer/tree.test.ts b/packages/ssz/test/unit/byType/stableContainer/tree.test.ts index f0bcfd63..6beb2392 100644 --- a/packages/ssz/test/unit/byType/stableContainer/tree.test.ts +++ b/packages/ssz/test/unit/byType/stableContainer/tree.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import { BitArray, BitListType, @@ -283,43 +283,43 @@ describe("StableContainerViewDU batchHashTreeRoot", function () { const expectedRoot = parentContainerType.hashTreeRoot(value); it("fresh ViewDU", () => { - expect(parentContainerType.toViewDU(value).batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(parentContainerType.toViewDU(value).batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify Number type", () => { const viewDU = parentContainerType.toViewDU({...value, a: 9}); viewDU.batchHashTreeRoot(); viewDU.a += 1; - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.a = 10; viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify BooleanType", () => { const viewDU = parentContainerType.toViewDU({...value, b: false}); viewDU.batchHashTreeRoot(); viewDU.b = true; - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.b = true; viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify UnionType", () => { const viewDU = parentContainerType.toViewDU({...value, c: {selector: 1, value: 101}}); viewDU.batchHashTreeRoot(); viewDU.c = unionType.toViewDU({selector: 1, value: 100}); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.c = unionType.toViewDU({selector: 1, value: 100}); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify ByteVectorType", () => { @@ -327,12 +327,12 @@ describe("StableContainerViewDU batchHashTreeRoot", function () { viewDU.batchHashTreeRoot(); // this takes more than 1 chunk so the resulting node is a branch node viewDU.e = viewDU.e.slice(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.e = viewDU.e.slice(); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify ByteListType", () => { @@ -340,24 +340,24 @@ describe("StableContainerViewDU batchHashTreeRoot", function () { viewDU.batchHashTreeRoot(); // this takes more than 1 chunk so the resulting node is a branch node viewDU.d = viewDU.d.slice(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.d = viewDU.d.slice(); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify full child container", () => { const viewDU = parentContainerType.toViewDU({...value, f: {f0: 99, f1: 999}}); viewDU.batchHashTreeRoot(); viewDU.f = childContainerType.toViewDU({f0: 100, f1: 101}); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.f = childContainerType.toViewDU({f0: 100, f1: 101}); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify partial child container", () => { @@ -365,25 +365,25 @@ describe("StableContainerViewDU batchHashTreeRoot", function () { viewDU.batchHashTreeRoot(); viewDU.f.f0 = 100; viewDU.f.f1 = 101; - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.f.f0 = 100; viewDU.f.f1 = 101; viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify ContainerNodeStructType", () => { const viewDU = parentContainerType.toViewDU({...value, g: {g0: 99, g1: 999}}); viewDU.batchHashTreeRoot(); viewDU.g = childContainerStruct.toViewDU({g0: 100, g1: 101}); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.g = childContainerStruct.toViewDU({g0: 100, g1: 101}); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify partial ContainerNodeStructType", () => { @@ -391,169 +391,169 @@ describe("StableContainerViewDU batchHashTreeRoot", function () { viewDU.batchHashTreeRoot(); viewDU.g.g0 = 100; viewDU.g.g1 = 101; - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.g.g0 = 100; viewDU.g.g1 = 101; viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify ListBasicType", () => { const viewDU = parentContainerType.toViewDU({...value, h: []}); viewDU.batchHashTreeRoot(); viewDU.h = listBasicType.toViewDU([1, 2]); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.h = listBasicType.toViewDU([1, 2]); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then push 1 item to ListBasicType", () => { const viewDU = parentContainerType.toViewDU({...value, h: [1]}); viewDU.batchHashTreeRoot(); viewDU.h.push(2); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.h = listBasicType.toViewDU([1, 2]); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify 1 item of ListBasicType", () => { const viewDU = parentContainerType.toViewDU({...value, h: [1, 3]}); viewDU.batchHashTreeRoot(); viewDU.h.set(1, 2); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.h.set(1, 2); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify VectorBasicType", () => { const viewDU = parentContainerType.toViewDU({...value, i: []}); viewDU.batchHashTreeRoot(); viewDU.i = vectorBasicType.toViewDU([1, 2]); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.i = vectorBasicType.toViewDU([1, 2]); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify 1 item of VectorBasicType", () => { const viewDU = parentContainerType.toViewDU({...value, i: [1, 3]}); viewDU.batchHashTreeRoot(); viewDU.i.set(1, 2); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.i.set(1, 2); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify ListCompositeType", () => { const viewDU = parentContainerType.toViewDU({...value, j: []}); viewDU.batchHashTreeRoot(); viewDU.j = listCompositeType.toViewDU([{f0: 1, f1: 2}]); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.j = listCompositeType.toViewDU([{f0: 1, f1: 2}]); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then push 1 item to ListCompositeType", () => { const viewDU = parentContainerType.toViewDU({...value, j: []}); viewDU.batchHashTreeRoot(); viewDU.j.push(childContainerType.toViewDU({f0: 1, f1: 2})); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.j = listCompositeType.toViewDU([{f0: 1, f1: 2}]); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify 1 item of ListCompositeType", () => { const viewDU = parentContainerType.toViewDU({...value, j: [{f0: 1, f1: 3}]}); viewDU.batchHashTreeRoot(); viewDU.j.set(0, childContainerType.toViewDU({f0: 1, f1: 2})); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.j.set(0, childContainerType.toViewDU({f0: 1, f1: 2})); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify 1 field of 1 item of ListCompositeType", () => { const viewDU = parentContainerType.toViewDU({...value, j: [{f0: 1, f1: 3}]}); viewDU.batchHashTreeRoot(); viewDU.j.get(0).f1 = 2; - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.j.get(0).f1 = 2; viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify VectorCompositeType", () => { const viewDU = parentContainerType.toViewDU({...value, k: [{f0: 9, f1: 9}]}); viewDU.batchHashTreeRoot(); viewDU.k = vectorCompositeType.toViewDU([{f0: 1, f1: 2}]); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.k = vectorCompositeType.toViewDU([{f0: 1, f1: 2}]); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify 1 item of VectorCompositeType", () => { const viewDU = parentContainerType.toViewDU({...value, k: [{f0: 1, f1: 3}]}); viewDU.batchHashTreeRoot(); viewDU.k.set(0, childContainerType.toViewDU({f0: 1, f1: 2})); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.k.set(0, childContainerType.toViewDU({f0: 1, f1: 2})); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify 1 field 1 item of VectorCompositeType", () => { const viewDU = parentContainerType.toViewDU({...value, k: [{f0: 1, f1: 3}]}); viewDU.batchHashTreeRoot(); viewDU.k.get(0).f1 = 2; - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.k.get(0).f1 = 2; viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify BitVectorType", () => { const viewDU = parentContainerType.toViewDU({...value, l: BitArray.fromSingleBit(64, 4)}); viewDU.batchHashTreeRoot(); viewDU.l = bitVectorType.toViewDU(BitArray.fromSingleBit(64, 5)); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.l = bitVectorType.toViewDU(BitArray.fromSingleBit(64, 5)); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify BitVectorType bit", () => { @@ -561,25 +561,25 @@ describe("StableContainerViewDU batchHashTreeRoot", function () { viewDU.batchHashTreeRoot(); viewDU.l.set(4, false); viewDU.l.set(5, true); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.l.set(4, false); viewDU.l.set(5, true); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify BitListType", () => { const viewDU = parentContainerType.toViewDU({...value, m: BitArray.fromSingleBit(4, 0)}); viewDU.batchHashTreeRoot(); viewDU.m = bitListType.toViewDU(BitArray.fromSingleBit(4, 1)); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.m = bitListType.toViewDU(BitArray.fromSingleBit(4, 1)); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify BitListType bit", () => { @@ -587,25 +587,25 @@ describe("StableContainerViewDU batchHashTreeRoot", function () { viewDU.batchHashTreeRoot(); viewDU.m.set(0, false); viewDU.m.set(1, true); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.m.set(0, false); viewDU.m.set(1, true); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify OptionalType", () => { const viewDU = parentContainerType.toViewDU({...value, n: null}); viewDU.batchHashTreeRoot(); viewDU.n = listBasicType.toViewDU([1, 2]); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign again but commit before batchHashTreeRoot() viewDU.n = listBasicType.toViewDU([1, 2]); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); }); @@ -645,7 +645,7 @@ describe("StableContainer BitVector[N]", () => { isFirst = false; } - expect(view.node.root).to.be.deep.equal(stableType.hashTreeRoot({a: 1})); + expect(view.node.root).toEqual(stableType.hashTreeRoot({a: 1})); } } }); @@ -658,11 +658,11 @@ describe("StableContainer BitVector[N]", () => { const expectedBytes = new Uint8Array([1, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]); const data = {uint8Array: expectedBytes, dataView: new DataView(expectedBytes.buffer, 0, expectedBytes.length)}; const expectedRoot = stableType.hashTreeRoot(value); - expect(stableType.serialize(value)).to.be.deep.equal(expectedBytes); + expect(stableType.serialize(value)).toEqual(expectedBytes); let viewDU = stableType.toViewDU(value); - expect(viewDU.serialize()).to.be.deep.equal(expectedBytes); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.serialize()).toEqual(expectedBytes); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); viewDU = stableType.getViewDU(stableType.tree_deserializeFromBytes(data, 0, data.uint8Array.length)); expect(viewDU.serialize()).to.deep.equal(expectedBytes); @@ -677,7 +677,7 @@ describe("StableContainer BitVector[N]", () => { expect(view.hashTreeRoot()).to.deep.equal(expectedRoot); const value2 = stableType.deserialize(expectedBytes); - expect(value2).to.be.deep.equal(value); + expect(value2).toEqual(value); expect(stableType.serialize(value2)).to.deep.equal(expectedBytes); expect(stableType.hashTreeRoot(value2)).to.deep.equal(expectedRoot); }); diff --git a/packages/ssz/test/unit/byType/uint/invalid.test.ts b/packages/ssz/test/unit/byType/uint/invalid.test.ts index efc38323..f2aba989 100644 --- a/packages/ssz/test/unit/byType/uint/invalid.test.ts +++ b/packages/ssz/test/unit/byType/uint/invalid.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {UintNumberType, UintBigintType} from "../../../../src/index.js"; import {UintNumberByteLen, uintNumberByteLens, uintBigintByteLens} from "../../../../src/type/uint.js"; import {runTypeTestInvalid, InvalidValue} from "../runTypeTestInvalid.js"; @@ -50,15 +50,15 @@ runTypeTestInvalid({ describe("Invalid UintType at constructor", () => { it("UintNumberType odd byteLen", () => { - expect(() => new UintNumberType(3 as UintNumberByteLen)).to.throw(); + expect(() => new UintNumberType(3 as UintNumberByteLen)).toThrow(); }); it("UintNumberType byteLen > 8", () => { - expect(() => new UintNumberType(16 as UintNumberByteLen)).to.throw(); + expect(() => new UintNumberType(16 as UintNumberByteLen)).toThrow(); }); it("UintBigintType odd byteLen", () => { - expect(() => new UintBigintType(3 as UintNumberByteLen)).to.throw(); + expect(() => new UintBigintType(3 as UintNumberByteLen)).toThrow(); }); it("UintBigintType byteLen > 8", () => { - expect(() => new UintBigintType(64 as UintNumberByteLen)).to.throw(); + expect(() => new UintBigintType(64 as UintNumberByteLen)).toThrow(); }); }); diff --git a/packages/ssz/test/unit/byType/uint/tree.test.ts b/packages/ssz/test/unit/byType/uint/tree.test.ts index 8db0904a..fa129156 100644 --- a/packages/ssz/test/unit/byType/uint/tree.test.ts +++ b/packages/ssz/test/unit/byType/uint/tree.test.ts @@ -1,5 +1,5 @@ import {LeafNode} from "@chainsafe/persistent-merkle-tree"; -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {toHexString, fromHexString} from "../../../../src/util/byteArray.js"; import {byteType, uint64NumInfType} from "../../../utils/primitiveTypes.js"; diff --git a/packages/ssz/test/unit/byType/union/invalid.test.ts b/packages/ssz/test/unit/byType/union/invalid.test.ts index d2df3e30..5a715ed2 100644 --- a/packages/ssz/test/unit/byType/union/invalid.test.ts +++ b/packages/ssz/test/unit/byType/union/invalid.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {UintNumberType, UnionType, NoneType} from "../../../../src/index.js"; import {runTypeTestInvalid} from "../runTypeTestInvalid.js"; @@ -23,15 +23,15 @@ runTypeTestInvalid({ describe("Invalid UnionType at constructor", () => { it("UnionType over 128 types", () => { - expect(() => new UnionType(new Array(128).fill(byteType))).to.throw(); + expect(() => new UnionType(new Array(128).fill(byteType))).toThrow(); }); it("UnionType 0 types", () => { - expect(() => new UnionType([])).to.throw(); + expect(() => new UnionType([])).toThrow(); }); it("UnionType only None", () => { - expect(() => new UnionType([noneType])).to.throw(); + expect(() => new UnionType([noneType])).toThrow(); }); it("UnionType None second", () => { - expect(() => new UnionType([byteType, noneType])).to.throw(); + expect(() => new UnionType([byteType, noneType])).toThrow(); }); }); diff --git a/packages/ssz/test/unit/byType/union/tree.test.ts b/packages/ssz/test/unit/byType/union/tree.test.ts index 62fee07f..06f92df3 100644 --- a/packages/ssz/test/unit/byType/union/tree.test.ts +++ b/packages/ssz/test/unit/byType/union/tree.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {UnionType, UintNumberType, NoneType, ValueOf, toHexString} from "../../../../src/index.js"; const byteType = new UintNumberType(1); diff --git a/packages/ssz/test/unit/byType/vector/invalid.test.ts b/packages/ssz/test/unit/byType/vector/invalid.test.ts index c641979f..17c52b04 100644 --- a/packages/ssz/test/unit/byType/vector/invalid.test.ts +++ b/packages/ssz/test/unit/byType/vector/invalid.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {VectorBasicType, VectorCompositeType} from "../../../../src/index.js"; import {byteType, uint16NumType} from "../../../utils/primitiveTypes.js"; import {runTypeTestInvalid} from "../runTypeTestInvalid.js"; @@ -20,15 +20,15 @@ describe("VectorType constructor errors", () => { const compositeType = new VectorBasicType(uint16NumType, 2); it("length must be > 0", () => { - expect(() => new VectorBasicType(uint16NumType, 0)).to.throw(); - expect(() => new VectorCompositeType(compositeType, 0)).to.throw(); + expect(() => new VectorBasicType(uint16NumType, 0)).toThrow(); + expect(() => new VectorCompositeType(compositeType, 0)).toThrow(); }); it("ElementType must be basic", () => { - expect(() => new VectorBasicType(compositeType as unknown as typeof byteType, 2)).to.throw(); + expect(() => new VectorBasicType(compositeType as unknown as typeof byteType, 2)).toThrow(); }); it("ElementType must be composite", () => { - expect(() => new VectorCompositeType(byteType as unknown as typeof compositeType, 2)).to.throw(); + expect(() => new VectorCompositeType(byteType as unknown as typeof compositeType, 2)).toThrow(); }); }); diff --git a/packages/ssz/test/unit/byType/vectorBasic/tree.test.ts b/packages/ssz/test/unit/byType/vectorBasic/tree.test.ts index a0941aed..4fad5a31 100644 --- a/packages/ssz/test/unit/byType/vectorBasic/tree.test.ts +++ b/packages/ssz/test/unit/byType/vectorBasic/tree.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {UintNumberType, VectorBasicType} from "../../../../src/index.js"; import {runViewTestMutation} from "../runViewTestMutation.js"; @@ -42,7 +42,7 @@ describe("VectorBasicType batchHashTreeRoot", () => { const expectedRoot = vectorType.hashTreeRoot(value); it("fresh ViewDU", () => { - expect(vectorType.toViewDU(value).batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(vectorType.toViewDU(value).batchHashTreeRoot()).toEqual(expectedRoot); }); it("full hash then modify", () => { @@ -56,12 +56,12 @@ describe("VectorBasicType batchHashTreeRoot", () => { viewDU.set(5, 5); viewDU.set(6, 6); viewDU.set(7, 7); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign the same value again, commit() then batchHashTreeRoot() viewDU.set(0, 0); viewDU.set(7, 7); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); }); diff --git a/packages/ssz/test/unit/byType/vectorComposite/tree.test.ts b/packages/ssz/test/unit/byType/vectorComposite/tree.test.ts index ea461541..04d39b14 100644 --- a/packages/ssz/test/unit/byType/vectorComposite/tree.test.ts +++ b/packages/ssz/test/unit/byType/vectorComposite/tree.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import { ContainerNodeStructType, ContainerType, @@ -93,7 +93,7 @@ describe("VectorCompositeType batchHashTreeRoot", () => { const expectedRoot = vectorOfContainersType.toView(value).hashTreeRoot(); it(`${typeName} - fresh ViewDU`, () => { - expect(vectorOfContainersType.toViewDU(value).batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(vectorOfContainersType.toViewDU(value).batchHashTreeRoot()).toEqual(expectedRoot); }); it(`${typeName} - modify 1 full element`, () => { @@ -102,12 +102,12 @@ describe("VectorCompositeType batchHashTreeRoot", () => { {a: 0, b: 0}, ]); viewDU.set(1, containerUintsType.toViewDU({a: 3, b: 4})); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign the same value again, commit() then batchHashTreeRoot(); viewDU.set(1, containerUintsType.toViewDU({a: 3, b: 4})); viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); it(`${typeName} - modify 1 property of 1 element`, () => { @@ -116,12 +116,12 @@ describe("VectorCompositeType batchHashTreeRoot", () => { {a: 3, b: 0}, ]); viewDU.get(1).b = 4; - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); // assign the same value again, commit() then batchHashTreeRoot(); viewDU.get(1).b = 4; viewDU.commit(); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(expectedRoot); + expect(viewDU.batchHashTreeRoot()).toEqual(expectedRoot); }); } }); diff --git a/packages/ssz/test/unit/byValue/bitArray.test.ts b/packages/ssz/test/unit/byValue/bitArray.test.ts index 65e3fc3e..34894eb4 100644 --- a/packages/ssz/test/unit/byValue/bitArray.test.ts +++ b/packages/ssz/test/unit/byValue/bitArray.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {getUint8ByteToBitBooleanArray, BitArray} from "../../../src/value/bitArray.js"; import {BitVectorType} from "../../../src/index.js"; import {linspace} from "../../utils/misc.js"; @@ -7,8 +7,8 @@ const BITS_PER_BYTE = 8; describe("aggregationBits", function () { it("getUint8ByteToBitBooleanArray", () => { - expect(getUint8ByteToBitBooleanArray(1)).to.be.deep.equal([true, false, false, false, false, false, false, false]); - expect(getUint8ByteToBitBooleanArray(5)).to.be.deep.equal([true, false, true, false, false, false, false, false]); + expect(getUint8ByteToBitBooleanArray(1)).toEqual([true, false, false, false, false, false, false, false]); + expect(getUint8ByteToBitBooleanArray(5)).toEqual([true, false, true, false, false, false, false, false]); }); }); @@ -94,26 +94,26 @@ describe("BitArray.set() and BitArray.get()", () => { describe("BitArray errors", () => { it("Invalid uint8Array.length", () => { - expect(() => new BitArray(new Uint8Array(1), 2 * 8)).to.throw("BitArray uint8Array length does not match bitLen"); + expect(() => new BitArray(new Uint8Array(1), 2 * 8)).toThrow("BitArray uint8Array length does not match bitLen"); }); it(".set() over bitLen", () => { const bitArray = BitArray.fromBitLen(8); // Max OK index is bitLen - 1 - expect(() => bitArray.set(bitArray.bitLen, true)).to.throw(); - expect(() => bitArray.set(bitArray.bitLen + 1, true)).to.throw(); + expect(() => bitArray.set(bitArray.bitLen, true)).toThrow(); + expect(() => bitArray.set(bitArray.bitLen + 1, true)).toThrow(); }); it(".mergeOrWith() wrong lengths", () => { const bitArray1 = BitArray.fromBitLen(8); const bitArray2 = BitArray.fromBitLen(bitArray1.bitLen + 1); - expect(() => bitArray1.mergeOrWith(bitArray2)).to.throw(); + expect(() => bitArray1.mergeOrWith(bitArray2)).toThrow(); }); it(".intersectValues() wrong lengths", () => { const bitArray1 = BitArray.fromBitLen(8); const values = Array(bitArray1.bitLen + 1) as unknown[]; - expect(() => bitArray1.intersectValues(values)).to.throw(); + expect(() => bitArray1.intersectValues(values)).toThrow(); }); }); diff --git a/packages/ssz/test/unit/cachePermanentRootStruct.test.ts b/packages/ssz/test/unit/cachePermanentRootStruct.test.ts index 259b5888..ee7f9dfb 100644 --- a/packages/ssz/test/unit/cachePermanentRootStruct.test.ts +++ b/packages/ssz/test/unit/cachePermanentRootStruct.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {ContainerType, UintNumberType} from "../../src/index.js"; describe("cachePermanentRootStruct", () => { diff --git a/packages/ssz/test/unit/dataView.test.ts b/packages/ssz/test/unit/dataView.test.ts index d4a9f8ee..15e769d7 100644 --- a/packages/ssz/test/unit/dataView.test.ts +++ b/packages/ssz/test/unit/dataView.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; describe("DataView", () => { it("Test results of multiple sets", () => { diff --git a/packages/ssz/test/unit/eth2/allForks.test.ts b/packages/ssz/test/unit/eth2/allForks.test.ts index 4c50384d..9fe0e749 100644 --- a/packages/ssz/test/unit/eth2/allForks.test.ts +++ b/packages/ssz/test/unit/eth2/allForks.test.ts @@ -1,3 +1,4 @@ +import {describe, it} from "vitest"; import {Node, Tree} from "@chainsafe/persistent-merkle-tree"; import {CompositeView, CompositeViewDU, ContainerType, ValueOf} from "../../../src/index.js"; import {allForks, altair, bellatrix, phase0, ssz} from "../../lodestarTypes/index.js"; diff --git a/packages/ssz/test/unit/eth2/beaconState.test.ts b/packages/ssz/test/unit/eth2/beaconState.test.ts index efdb7631..f5d71bef 100644 --- a/packages/ssz/test/unit/eth2/beaconState.test.ts +++ b/packages/ssz/test/unit/eth2/beaconState.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {BeaconState} from "../../lodestarTypes/deneb/sszTypes.js"; import {ListUintNum64Type} from "../../../src/type/listUintNum64.js"; import {altair, phase0, ssz} from "../../lodestarTypes/index.js"; @@ -14,11 +14,11 @@ describe("BeaconState ViewDU batchHashTreeRoot", function () { it("BeaconState ViewDU should have same hashTreeRoot() to View", () => { // genesisTime viewDU.genesisTime = view.genesisTime = 1e9; - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(view.hashTreeRoot()); + expect(viewDU.batchHashTreeRoot()).toEqual(view.hashTreeRoot()); // genesisValidatorsRoot viewDU.genesisValidatorsRoot = view.genesisValidatorsRoot = Buffer.alloc(32, 1); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(view.hashTreeRoot()); + expect(viewDU.batchHashTreeRoot()).toEqual(view.hashTreeRoot()); // fork const fork: phase0.Fork = { @@ -28,7 +28,7 @@ describe("BeaconState ViewDU batchHashTreeRoot", function () { }; view.fork = BeaconState.fields.fork.toView(fork); viewDU.fork = BeaconState.fields.fork.toViewDU(fork); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(view.hashTreeRoot()); + expect(viewDU.batchHashTreeRoot()).toEqual(view.hashTreeRoot()); // latestBlockHeader const latestBlockHeader: phase0.BeaconBlockHeader = { @@ -40,21 +40,21 @@ describe("BeaconState ViewDU batchHashTreeRoot", function () { }; view.latestBlockHeader = BeaconState.fields.latestBlockHeader.toView(latestBlockHeader); viewDU.latestBlockHeader = BeaconState.fields.latestBlockHeader.toViewDU(latestBlockHeader); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(view.hashTreeRoot()); + expect(viewDU.batchHashTreeRoot()).toEqual(view.hashTreeRoot()); // blockRoots const blockRoots = ssz.phase0.HistoricalBlockRoots.defaultValue(); blockRoots[0] = fromHexString("0x1234"); view.blockRoots = ssz.phase0.HistoricalBlockRoots.toView(blockRoots); viewDU.blockRoots = ssz.phase0.HistoricalBlockRoots.toViewDU(blockRoots); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(view.hashTreeRoot()); + expect(viewDU.batchHashTreeRoot()).toEqual(view.hashTreeRoot()); // stateRoots const stateRoots = ssz.phase0.HistoricalStateRoots.defaultValue(); stateRoots[0] = fromHexString("0x5678"); view.stateRoots = ssz.phase0.HistoricalStateRoots.toView(stateRoots); viewDU.stateRoots = ssz.phase0.HistoricalStateRoots.toViewDU(stateRoots); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(view.hashTreeRoot()); + expect(viewDU.batchHashTreeRoot()).toEqual(view.hashTreeRoot()); // historical_roots Frozen in Capella, replaced by historical_summaries // Eth1 @@ -65,19 +65,19 @@ describe("BeaconState ViewDU batchHashTreeRoot", function () { }; view.eth1Data = BeaconState.fields.eth1Data.toView(eth1Data); viewDU.eth1Data = BeaconState.fields.eth1Data.toViewDU(eth1Data); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(view.hashTreeRoot()); + expect(viewDU.batchHashTreeRoot()).toEqual(view.hashTreeRoot()); // Eth1DataVotes const eth1DataVotes = ssz.phase0.Eth1DataVotes.defaultValue(); eth1DataVotes[0] = eth1Data; view.eth1DataVotes = ssz.phase0.Eth1DataVotes.toView(eth1DataVotes); viewDU.eth1DataVotes = ssz.phase0.Eth1DataVotes.toViewDU(eth1DataVotes); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(view.hashTreeRoot()); + expect(viewDU.batchHashTreeRoot()).toEqual(view.hashTreeRoot()); // Eth1DepositIndex view.eth1DepositIndex = 1000; viewDU.eth1DepositIndex = 1000; - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(view.hashTreeRoot()); + expect(viewDU.batchHashTreeRoot()).toEqual(view.hashTreeRoot()); // validators const validator = { @@ -92,34 +92,34 @@ describe("BeaconState ViewDU batchHashTreeRoot", function () { }; view.validators = BeaconState.fields.validators.toView([validator]); viewDU.validators = BeaconState.fields.validators.toViewDU([validator]); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(view.hashTreeRoot()); + expect(viewDU.batchHashTreeRoot()).toEqual(view.hashTreeRoot()); // balances view.balances = BeaconState.fields.balances.toView([1000, 2000, 3000]); viewDU.balances = Balances.toViewDU([1000, 2000, 3000]); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(view.hashTreeRoot()); + expect(viewDU.batchHashTreeRoot()).toEqual(view.hashTreeRoot()); // randaoMixes const randaoMixes = ssz.phase0.RandaoMixes.defaultValue(); randaoMixes[0] = fromHexString("0x1234"); view.randaoMixes = ssz.phase0.RandaoMixes.toView(randaoMixes); viewDU.randaoMixes = ssz.phase0.RandaoMixes.toViewDU(randaoMixes); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(view.hashTreeRoot()); + expect(viewDU.batchHashTreeRoot()).toEqual(view.hashTreeRoot()); // slashings view.slashings = BeaconState.fields.slashings.toView(Array.from({length: 64}, () => BigInt(1000))); viewDU.slashings = BeaconState.fields.slashings.toViewDU(Array.from({length: 64}, () => BigInt(1000))); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(view.hashTreeRoot()); + expect(viewDU.batchHashTreeRoot()).toEqual(view.hashTreeRoot()); // previousEpochAttestations view.previousEpochParticipation = BeaconState.fields.previousEpochParticipation.toView([1, 2, 3]); viewDU.previousEpochParticipation = BeaconState.fields.previousEpochParticipation.toViewDU([1, 2, 3]); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(view.hashTreeRoot()); + expect(viewDU.batchHashTreeRoot()).toEqual(view.hashTreeRoot()); // currentEpochAttestations view.currentEpochParticipation = BeaconState.fields.currentEpochParticipation.toView([1, 2, 3]); viewDU.currentEpochParticipation = BeaconState.fields.currentEpochParticipation.toViewDU([1, 2, 3]); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(view.hashTreeRoot()); + expect(viewDU.batchHashTreeRoot()).toEqual(view.hashTreeRoot()); // justificationBits view.justificationBits = BeaconState.fields.justificationBits.toView( @@ -128,7 +128,7 @@ describe("BeaconState ViewDU batchHashTreeRoot", function () { viewDU.justificationBits = BeaconState.fields.justificationBits.toViewDU( BitArray.fromBoolArray([true, false, true, true]) ); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(view.hashTreeRoot()); + expect(viewDU.batchHashTreeRoot()).toEqual(view.hashTreeRoot()); // previousJustifiedCheckpoint const checkpoint: phase0.Checkpoint = { @@ -137,22 +137,22 @@ describe("BeaconState ViewDU batchHashTreeRoot", function () { }; view.previousJustifiedCheckpoint = BeaconState.fields.previousJustifiedCheckpoint.toView(checkpoint); viewDU.previousJustifiedCheckpoint = BeaconState.fields.previousJustifiedCheckpoint.toViewDU(checkpoint); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(view.hashTreeRoot()); + expect(viewDU.batchHashTreeRoot()).toEqual(view.hashTreeRoot()); // currentJustifiedCheckpoint view.currentJustifiedCheckpoint = BeaconState.fields.currentJustifiedCheckpoint.toView(checkpoint); viewDU.currentJustifiedCheckpoint = BeaconState.fields.currentJustifiedCheckpoint.toViewDU(checkpoint); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(view.hashTreeRoot()); + expect(viewDU.batchHashTreeRoot()).toEqual(view.hashTreeRoot()); // finalizedCheckpoint view.finalizedCheckpoint = BeaconState.fields.finalizedCheckpoint.toView(checkpoint); viewDU.finalizedCheckpoint = BeaconState.fields.finalizedCheckpoint.toViewDU(checkpoint); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(view.hashTreeRoot()); + expect(viewDU.batchHashTreeRoot()).toEqual(view.hashTreeRoot()); // inactivityScores view.inactivityScores = BeaconState.fields.inactivityScores.toView([1, 2, 3]); viewDU.inactivityScores = BeaconState.fields.inactivityScores.toViewDU([1, 2, 3]); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(view.hashTreeRoot()); + expect(viewDU.batchHashTreeRoot()).toEqual(view.hashTreeRoot()); // currentSyncCommittee const syncCommittee: altair.SyncCommittee = { @@ -161,12 +161,12 @@ describe("BeaconState ViewDU batchHashTreeRoot", function () { }; view.currentSyncCommittee = BeaconState.fields.currentSyncCommittee.toView(syncCommittee); viewDU.currentSyncCommittee = BeaconState.fields.currentSyncCommittee.toViewDU(syncCommittee); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(view.hashTreeRoot()); + expect(viewDU.batchHashTreeRoot()).toEqual(view.hashTreeRoot()); // nextSyncCommittee view.nextSyncCommittee = BeaconState.fields.nextSyncCommittee.toView(syncCommittee); viewDU.nextSyncCommittee = BeaconState.fields.nextSyncCommittee.toViewDU(syncCommittee); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(view.hashTreeRoot()); + expect(viewDU.batchHashTreeRoot()).toEqual(view.hashTreeRoot()); // latestExecutionPayloadHeader const latestExecutionPayloadHeader = BeaconState.fields.latestExecutionPayloadHeader.defaultValue(); @@ -178,15 +178,15 @@ describe("BeaconState ViewDU batchHashTreeRoot", function () { BeaconState.fields.latestExecutionPayloadHeader.toView(latestExecutionPayloadHeader); viewDU.latestExecutionPayloadHeader = BeaconState.fields.latestExecutionPayloadHeader.toViewDU(latestExecutionPayloadHeader); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(view.hashTreeRoot()); + expect(viewDU.batchHashTreeRoot()).toEqual(view.hashTreeRoot()); // nextWithdrawalIndex viewDU.nextWithdrawalIndex = view.nextWithdrawalIndex = 1000; - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(view.hashTreeRoot()); + expect(viewDU.batchHashTreeRoot()).toEqual(view.hashTreeRoot()); // nextWithdrawalValidatorIndex viewDU.nextWithdrawalValidatorIndex = view.nextWithdrawalValidatorIndex = 1000; - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(view.hashTreeRoot()); + expect(viewDU.batchHashTreeRoot()).toEqual(view.hashTreeRoot()); // historicalSummaries const historicalSummaries = { @@ -195,6 +195,6 @@ describe("BeaconState ViewDU batchHashTreeRoot", function () { }; view.historicalSummaries = BeaconState.fields.historicalSummaries.toView([historicalSummaries]); viewDU.historicalSummaries = BeaconState.fields.historicalSummaries.toViewDU([historicalSummaries]); - expect(viewDU.batchHashTreeRoot()).to.be.deep.equal(view.hashTreeRoot()); + expect(viewDU.batchHashTreeRoot()).toEqual(view.hashTreeRoot()); }); }); diff --git a/packages/ssz/test/unit/eth2/caseEth2.test.ts b/packages/ssz/test/unit/eth2/caseEth2.test.ts index 67432919..c6a652cc 100644 --- a/packages/ssz/test/unit/eth2/caseEth2.test.ts +++ b/packages/ssz/test/unit/eth2/caseEth2.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {precomputeJsonKey} from "../../../src/type/container.js"; describe("JSON case eth2", () => { diff --git a/packages/ssz/test/unit/eth2/minMaxSize.test.ts b/packages/ssz/test/unit/eth2/minMaxSize.test.ts index d6c34103..336427a2 100644 --- a/packages/ssz/test/unit/eth2/minMaxSize.test.ts +++ b/packages/ssz/test/unit/eth2/minMaxSize.test.ts @@ -1,6 +1,6 @@ +import {describe, it, expect} from "vitest"; import {ssz} from "../../lodestarTypes/index.js"; import {Type} from "../../../src/index.js"; -import {expect} from "chai"; enum ForkName { phase0 = "phase0", diff --git a/packages/ssz/test/unit/eth2/regressions.test.ts b/packages/ssz/test/unit/eth2/regressions.test.ts index 298ac09c..04bf464c 100644 --- a/packages/ssz/test/unit/eth2/regressions.test.ts +++ b/packages/ssz/test/unit/eth2/regressions.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {ssz} from "../../lodestarTypes/index.js"; describe("Various issues and regressions of Eth2 types", () => { diff --git a/packages/ssz/test/unit/eth2/validators.test.ts b/packages/ssz/test/unit/eth2/validators.test.ts index bdb68e5b..0f755493 100644 --- a/packages/ssz/test/unit/eth2/validators.test.ts +++ b/packages/ssz/test/unit/eth2/validators.test.ts @@ -1,5 +1,4 @@ -import {expect} from "chai"; -import {describe, it} from "mocha"; +import {describe, it, expect, vi} from "vitest"; import {toHexString, ListCompositeType, ValueOf, CompositeViewDU} from "../../../src/index.js"; import {ValidatorContainer, ValidatorNodeStruct} from "../../lodestarTypes/phase0/sszTypes.js"; @@ -15,8 +14,8 @@ const validator: Validator = { withdrawableEpoch: 4_000_000, }; -describe("Container with BranchNodeStruct", function () { - this.timeout(0); +describe("Container with BranchNodeStruct", () => { + vi.setConfig({testTimeout: 10_000}); const validatorViewDU = ValidatorContainer.toViewDU(validator); const validatorNodeStructViewDU = ValidatorNodeStruct.toViewDU(validator); @@ -50,8 +49,8 @@ describe("Container with BranchNodeStruct", function () { resLeafNodeStruct = op(validatorNodeStructViewDU, ValidatorNodeStruct); }); - it(`${id} must equal`, function () { - if (res === undefined || resLeafNodeStruct === undefined) this.skip(); + it(`${id} must equal`, ({skip}) => { + if (res === undefined || resLeafNodeStruct === undefined) return skip(); expect(res).to.deep.equal(resLeafNodeStruct); }); } diff --git a/packages/ssz/test/unit/merkleize.test.ts b/packages/ssz/test/unit/merkleize.test.ts index c3a38896..ceee0d1a 100644 --- a/packages/ssz/test/unit/merkleize.test.ts +++ b/packages/ssz/test/unit/merkleize.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {bitLength, maxChunksToDepth, nextPowerOf2} from "../../src/util/merkleize.js"; describe("util / merkleize / bitLength", () => { diff --git a/packages/ssz/test/unit/named.test.ts b/packages/ssz/test/unit/named.test.ts index a0276977..4ebfc71d 100644 --- a/packages/ssz/test/unit/named.test.ts +++ b/packages/ssz/test/unit/named.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import { BitListType, BitVectorType, diff --git a/packages/ssz/test/unit/packing.test.ts b/packages/ssz/test/unit/packing.test.ts index c3bab252..9aa16c43 100644 --- a/packages/ssz/test/unit/packing.test.ts +++ b/packages/ssz/test/unit/packing.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {UintBigintType, toHexString, VectorBasicType} from "../../src/index.js"; describe("uint packing", () => { diff --git a/packages/ssz/test/unit/regressions.test.ts b/packages/ssz/test/unit/regressions.test.ts index 74963443..d35dc976 100644 --- a/packages/ssz/test/unit/regressions.test.ts +++ b/packages/ssz/test/unit/regressions.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {uint32NumType, uint64NumType} from "../utils/primitiveTypes.js"; import { VectorBasicType, @@ -58,9 +58,7 @@ describe("Regressions / known issues", () => { const invalidBytes = fromHexString("0xffffffffff"); const CommitteeBitsVector2 = new BitVectorType(33); // all bits after length should be 0 so this should throw error - expect(() => CommitteeBitsVector2.deserializeToViewDU(invalidBytes)).to.throw( - "BitVector: nonzero bits past length" - ); + expect(() => CommitteeBitsVector2.deserializeToViewDU(invalidBytes)).toThrow("BitVector: nonzero bits past length"); }); it("converts basic vector and list from json", function () { @@ -129,7 +127,7 @@ describe("@asanso - Lodestar SSZ vulnerability report", () => { serialized[5] -= 1; // NOK - expect(() => Example.deserialize(serialized)).to.throw("not multiple of"); + expect(() => Example.deserialize(serialized)).toThrow("not multiple of"); }); it("POC not multiple not monomorhic", () => { @@ -160,7 +158,7 @@ describe("@asanso - Lodestar SSZ vulnerability report", () => { // 05 - 0a000000 baz offset 10 - Invalid, bar size must be multiple of 8 // 09 - 01 bar value 9:10 // 10 - 070000000000000200000000000000 baz value 10:25 - expect(() => Example.deserialize(serialized)).to.throw("not multiple of"); + expect(() => Example.deserialize(serialized)).toThrow("not multiple of"); }); it("adding single byte at the end", () => { @@ -190,6 +188,6 @@ describe("@asanso - Lodestar SSZ vulnerability report", () => { // NOK // THIS SHOULD FAIL ==> a single byte is added at the end when instead elementType: new BigIntUintType({byteLength: 2}), - expect(() => VarTestStruct.deserialize(serializedExtraByte)).to.throw("not multiple of"); + expect(() => VarTestStruct.deserialize(serializedExtraByte)).toThrow("not multiple of"); }); }); diff --git a/packages/ssz/test/unit/snapshot.test.ts b/packages/ssz/test/unit/snapshot.test.ts index 24decdb3..7b8a336f 100644 --- a/packages/ssz/test/unit/snapshot.test.ts +++ b/packages/ssz/test/unit/snapshot.test.ts @@ -1,5 +1,4 @@ -import {expect} from "chai"; -import {describe, it} from "mocha"; +import {describe, it, expect} from "vitest"; import {ByteVectorType} from "../../src/type/byteVector.js"; import {ListCompositeType} from "../../src/index.js"; import {PartialListCompositeType} from "../../src/type/partialListComposite.js"; diff --git a/packages/ssz/test/unit/specTestYamlLoader.test.ts b/packages/ssz/test/unit/specTestYamlLoader.test.ts index 5c198ae8..7bc3333f 100644 --- a/packages/ssz/test/unit/specTestYamlLoader.test.ts +++ b/packages/ssz/test/unit/specTestYamlLoader.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import jsyaml from "js-yaml"; import {readYamlNumbersAsStrings} from "../spec/testRunner.js"; import {BeaconBlockHeader} from "../lodestarTypes/phase0/sszTypes.js"; diff --git a/packages/ssz/test/unit/strings.test.ts b/packages/ssz/test/unit/strings.test.ts index f5f27e82..c69a34bc 100644 --- a/packages/ssz/test/unit/strings.test.ts +++ b/packages/ssz/test/unit/strings.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {Case} from "../../src/util/strings.js"; import {KeyCase} from "../../src/type/container.js"; diff --git a/packages/ssz/test/unit/uint8Array.test.ts b/packages/ssz/test/unit/uint8Array.test.ts index 5382952e..a3de4528 100644 --- a/packages/ssz/test/unit/uint8Array.test.ts +++ b/packages/ssz/test/unit/uint8Array.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; describe("Mutability Buffer, Uint8Array", () => { it("Ensure Uint8Array.slice copies memory", () => { diff --git a/packages/ssz/test/unit/unchangedViewDUs.test.ts b/packages/ssz/test/unit/unchangedViewDUs.test.ts index 824e0d17..c580db9f 100644 --- a/packages/ssz/test/unit/unchangedViewDUs.test.ts +++ b/packages/ssz/test/unit/unchangedViewDUs.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import * as sszAltair from "../lodestarTypes/altair/sszTypes.js"; import {getRandomState} from "../utils/generateEth2Objs.js"; @@ -24,6 +24,6 @@ describe("Unchanged ViewDUs", () => { // batchHashTreeRoot() also does the commit() state3.latestBlockHeader.commit(); const root3 = state3.batchHashTreeRoot(); - expect(root3).to.be.deep.equal(root2); + expect(root3).toEqual(root2); }); }); diff --git a/packages/ssz/test/unit/util/errorPath.test.ts b/packages/ssz/test/unit/util/errorPath.test.ts index cd650de7..262daf59 100644 --- a/packages/ssz/test/unit/util/errorPath.test.ts +++ b/packages/ssz/test/unit/util/errorPath.test.ts @@ -1,5 +1,4 @@ -import {assert} from "chai"; -import {describe, it} from "mocha"; +import {describe, it, expect} from "vitest"; import {ContainerType, ListBasicType, ListCompositeType, Type} from "../../../src/index.js"; import {byteType} from "../../utils/primitiveTypes.js"; @@ -36,7 +35,7 @@ describe.skip("error path", () => { for (const {type, value} of testCases) { it(`should print the error path deserializing ${type.constructor.name}`, () => { // eslint-disable-next-line @typescript-eslint/no-unsafe-return - assert.throw(() => type.deserialize(Buffer.from(value, "hex")), "v: Offset out of bounds"); + expect(() => type.deserialize(Buffer.from(value, "hex"))).toThrow("v: Offset out of bounds"); }); } }); diff --git a/packages/ssz/test/unit/util/hexString.test.ts b/packages/ssz/test/unit/util/hexString.test.ts index 09abba74..c4def9cf 100644 --- a/packages/ssz/test/unit/util/hexString.test.ts +++ b/packages/ssz/test/unit/util/hexString.test.ts @@ -1,5 +1,4 @@ -import {expect} from "chai"; -import {describe, it} from "mocha"; +import {describe, it, expect} from "vitest"; import {fromHexString, toHexString} from "../../../src/index.js"; describe("util / byteArray / toHexString + fromHexString", () => { @@ -19,10 +18,10 @@ describe("util / byteArray / toHexString + fromHexString", () => { } it("fromHexString throw for non hex string", () => { - expect(() => fromHexString(new Uint8Array() as unknown as string)).to.throw(); + expect(() => fromHexString(new Uint8Array() as unknown as string)).toThrow(); }); it("fromHexString throw for odd hex string", () => { - expect(() => fromHexString("0x1")).to.throw(); + expect(() => fromHexString("0x1")).toThrow(); }); }); diff --git a/packages/ssz/test/unit/util/proof.test.ts b/packages/ssz/test/unit/util/proof.test.ts index f14d1040..3a6a1105 100644 --- a/packages/ssz/test/unit/util/proof.test.ts +++ b/packages/ssz/test/unit/util/proof.test.ts @@ -1,5 +1,5 @@ import {Tree} from "@chainsafe/persistent-merkle-tree"; -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {ContainerNodeStructType, ContainerType, ListCompositeType} from "../../../src/index.js"; import {bytes32Type, uint16NumType} from "../../utils/primitiveTypes.js"; import {treePartialToJsonPaths, TreeDataTypeCode} from "../../../src/util/proof/treePartialToJsonPaths.js"; @@ -31,12 +31,12 @@ describe("Create proof of Array of Objects", () => { const root = parentObj.hashTreeRoot(); root[0]++; // Change the root to invalidate the proof (++ overflows) - expect(() => ArrayObject.createFromProof(proof, root)).to.throw(); + expect(() => ArrayObject.createFromProof(proof, root)).toThrow(); }); it("Prevent navigation beyond basic types", () => { const simpleObj = SimpleObject.defaultView(); - expect(() => simpleObj.createProof([["a", 0]])).to.throw(); + expect(() => simpleObj.createProof([["a", 0]])).toThrow(); }); }); diff --git a/packages/ssz/test/unit/util/proofs.test.ts b/packages/ssz/test/unit/util/proofs.test.ts index f1a9632a..b9d767ad 100644 --- a/packages/ssz/test/unit/util/proofs.test.ts +++ b/packages/ssz/test/unit/util/proofs.test.ts @@ -1,4 +1,4 @@ -import {expect} from "chai"; +import {describe, it, expect} from "vitest"; import {BitVectorType, BitListType, ContainerType} from "../../../src/index.js"; /** Pick bitLen to fill 2 nodes */ @@ -19,6 +19,6 @@ describe("Proofs / Stop navigating into some types", () => { describe("Proofs / pass rootNode parameter for variable size", () => { it("BitListType", () => { const bitArrayType = new BitListType(bitLen2Nodes); - expect(() => bitArrayType.tree_getLeafGindices(0n), "Variable size types require rootNode").to.throw(); + expect(() => bitArrayType.tree_getLeafGindices(0n), "Variable size types require rootNode").toThrow(); }); }); diff --git a/packages/ssz/vitest.config.ts b/packages/ssz/vitest.config.ts new file mode 100644 index 00000000..a7fceda7 --- /dev/null +++ b/packages/ssz/vitest.config.ts @@ -0,0 +1,4 @@ +import {defineConfig, mergeConfig} from "vitest/config"; +import baseConfig from "../../vitest.base.unit.config"; + +export default mergeConfig(baseConfig, defineConfig({})); diff --git a/tsconfig.json b/tsconfig.json index d690fdbf..0a9c85b2 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -13,6 +13,6 @@ "es2020.string", "es2020.symbol.wellknown" ], - "typeRoots": ["../../node_modules/@types", "./node_modules/@types", "./types"], + "typeRoots": ["../../node_modules/@types", "./node_modules/@types", "./types"] } } \ No newline at end of file diff --git a/types/vitest/index.d.ts b/types/vitest/index.d.ts new file mode 100644 index 00000000..297ed11e --- /dev/null +++ b/types/vitest/index.d.ts @@ -0,0 +1,46 @@ +import * as vitest from "vitest"; + +interface CustomMatchers { + toBeValidEpochCommittee(opts: {committeeCount: number; validatorsPerCommittee: number; slotsPerEpoch: number}): R; + /** + * @deprecated + * We highly recommend to not use this matcher instead use detail test case + * where you don't need message to explain assertion + * + * @example + * ```ts + * it("should work as expected", () => { + * const a = 1; + * const b = 2; + * expect(a).toBeWithMessage(b, "a must be equal to b"); + * }); + * ``` + * can be written as: + * ```ts + * it("a should always same as b", () => { + * const a = 1; + * const b = 2; + * expect(a).toBe(b); + * }); + * ``` + * */ + toBeWithMessage(expected: unknown, message: string): R; + /** + * @deprecated + * We highly recommend to not use this matcher instead use detail test case with .toEqual + * where you don't need message to explain assertion + * */ + toEqualWithMessage(expected: unknown, message: string): R; +} + +interface CustomAsymmetricMatchers extends CustomMatchers { + /** + * Non-asymmetric matcher already exists, we just need to add asymmetric version + */ + toSatisfy(func: (received: unknown) => boolean): R; +} + +declare module "vitest" { + interface Assertion extends CustomMatchers {} + interface AsymmetricMatchersContaining extends CustomAsymmetricMatchers {} +} diff --git a/vitest.base.browser.config.ts b/vitest.base.browser.config.ts new file mode 100644 index 00000000..2735ddae --- /dev/null +++ b/vitest.base.browser.config.ts @@ -0,0 +1,25 @@ +import { defineConfig, mergeConfig } from "vitest/config"; +import {nodePolyfills} from "vite-plugin-node-polyfills"; + +import baseConfig from "./vitest.base.unit.config"; + +export default mergeConfig( + baseConfig, + defineConfig({ + plugins: [ + nodePolyfills({ + include: ["buffer", "crypto", "util", "stream"], + globals: {Buffer: true}, + protocolImports: true, + }), + ], + test: { + browser: { + name: "chrome", + headless: true, + provider: "webdriverio", + screenshotFailures: false, + }, + }, + }) +); diff --git a/vitest.base.unit.config.ts b/vitest.base.unit.config.ts new file mode 100644 index 00000000..097a80e4 --- /dev/null +++ b/vitest.base.unit.config.ts @@ -0,0 +1,27 @@ +import path from "node:path"; +import {defineConfig} from "vitest/config"; +const __dirname = new URL(".", import.meta.url).pathname; + +export default defineConfig({ + test: { + include: ["**/*.test.ts"], + exclude: [ + "**/spec-tests/**", + "**/spec-tests-bls/**", + "**/*.browser.test.ts", + "**/node_modules/**", + "**/dist/**", + "**/cypress/**", + "**/.{idea,git,cache,output,temp}/**", + "**/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress,tsup,build}.config.*", + ], + setupFiles: [path.join(__dirname, "./vitest/setupFiles/customMatchers.ts")], + reporters: process.env.GITHUB_ACTIONS + ? ["verbose", "hanging-process", "github-actions"] + : [ + process.env.TEST_COMPACT_OUTPUT ? "basic" : "verbose", + "hanging-process", + ], + onConsoleLog: () => !process.env.TEST_QUIET_CONSOLE, + }, +}); diff --git a/vitest/setupFiles/customMatchers.ts b/vitest/setupFiles/customMatchers.ts new file mode 100644 index 00000000..a6cbe4b3 --- /dev/null +++ b/vitest/setupFiles/customMatchers.ts @@ -0,0 +1,34 @@ +import {expect} from "vitest"; + +expect.extend({ + toBeWithMessage(received: unknown, expected: unknown, message: string) { + if (Object.is(received, expected)) { + return { + message: () => "Received value is the same as expected value", + pass: true, + }; + } + + return { + pass: false, + message: () => message, + actual: received, + expected, + }; + }, + toEqualWithMessage(received: unknown, expected: unknown, message: string) { + if (this.equals(received, expected)) { + return { + message: () => "Received value equals expected value", + pass: true, + }; + } + + return { + pass: false, + message: () => message, + actual: received, + expected, + }; + }, +}); diff --git a/yarn.lock b/yarn.lock index cbb44bea..8ceb785d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -70,7 +70,7 @@ resolved "https://registry.yarnpkg.com/@actions/io/-/io-1.1.3.tgz#4cdb6254da7962b07473ff5c335f3da485d94d71" integrity sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q== -"@ampproject/remapping@^2.2.0": +"@ampproject/remapping@^2.2.0", "@ampproject/remapping@^2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== @@ -220,12 +220,21 @@ "@babel/highlight" "^7.24.2" picocolors "^1.0.0" +"@babel/code-frame@^7.10.4": + version "7.26.2" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85" + integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== + dependencies: + "@babel/helper-validator-identifier" "^7.25.9" + js-tokens "^4.0.0" + picocolors "^1.0.0" + "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.5", "@babel/compat-data@^7.24.4": version "7.24.4" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.4.tgz#6f102372e9094f25d908ca0d34fc74c74606059a" integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== -"@babel/core@^7.14.6", "@babel/core@^7.7.5": +"@babel/core@^7.14.6": version "7.24.5" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.5.tgz#15ab5b98e101972d171aeef92ac70d8d6718f06a" integrity sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA== @@ -417,11 +426,21 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e" integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ== +"@babel/helper-string-parser@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" + integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== + "@babel/helper-validator-identifier@^7.22.20", "@babel/helper-validator-identifier@^7.24.5": version "7.24.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz#918b1a7fa23056603506370089bd990d8720db62" integrity sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA== +"@babel/helper-validator-identifier@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" + integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== + "@babel/helper-validator-option@^7.23.5": version "7.23.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" @@ -460,6 +479,13 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.5.tgz#4a4d5ab4315579e5398a82dcf636ca80c3392790" integrity sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg== +"@babel/parser@^7.25.4": + version "7.26.2" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.2.tgz#fd7b6f487cfea09889557ef5d4eeb9ff9a5abd11" + integrity sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ== + dependencies: + "@babel/types" "^7.26.0" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.5": version "7.24.5" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.5.tgz#4c3685eb9cd790bcad2843900fe0250c91ccf895" @@ -1210,6 +1236,13 @@ dependencies: regenerator-runtime "^0.14.0" +"@babel/runtime@^7.12.5": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.0.tgz#8600c2f595f277c60815256418b85356a65173c1" + integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/template@^7.22.15", "@babel/template@^7.24.0": version "7.24.0" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" @@ -1244,6 +1277,41 @@ "@babel/helper-validator-identifier" "^7.24.5" to-fast-properties "^2.0.0" +"@babel/types@^7.25.4", "@babel/types@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.0.tgz#deabd08d6b753bc8e0f198f8709fb575e31774ff" + integrity sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA== + dependencies: + "@babel/helper-string-parser" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@bundled-es-modules/cookie@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@bundled-es-modules/cookie/-/cookie-2.0.1.tgz#b41376af6a06b3e32a15241d927b840a9b4de507" + integrity sha512-8o+5fRPLNbjbdGRRmJj3h6Hh1AQJf2dk3qQ/5ZFb+PXkRNiSoMGGUKlsgLfrxneb72axVJyIYji64E2+nNfYyw== + dependencies: + cookie "^0.7.2" + +"@bundled-es-modules/statuses@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@bundled-es-modules/statuses/-/statuses-1.0.1.tgz#761d10f44e51a94902c4da48675b71a76cc98872" + integrity sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg== + dependencies: + statuses "^2.0.1" + +"@bundled-es-modules/tough-cookie@^0.1.6": + version "0.1.6" + resolved "https://registry.yarnpkg.com/@bundled-es-modules/tough-cookie/-/tough-cookie-0.1.6.tgz#fa9cd3cedfeecd6783e8b0d378b4a99e52bde5d3" + integrity sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw== + dependencies: + "@types/tough-cookie" "^4.0.5" + tough-cookie "^4.1.4" + "@chainsafe/as-sha256@^0.4.2": version "0.4.2" resolved "https://registry.yarnpkg.com/@chainsafe/as-sha256/-/as-sha256-0.4.2.tgz#21ad1371e2245e430c1a554a05f10d333c6f42cc" @@ -1297,11 +1365,6 @@ "@chainsafe/as-sha256" "^0.4.2" "@chainsafe/persistent-merkle-tree" "^0.7.2" -"@colors/colors@1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" - integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== - "@cspotcode/source-map-support@^0.8.0": version "0.8.1" resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" @@ -1570,6 +1633,39 @@ resolved "https://registry.yarnpkg.com/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340" integrity sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q== +"@inquirer/confirm@^5.0.0": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@inquirer/confirm/-/confirm-5.0.1.tgz#35e0aa0f9fdaadee3acb1c42024e707af308fced" + integrity sha512-6ycMm7k7NUApiMGfVc32yIPp28iPKxhGRMqoNDiUjq2RyTAkbs5Fx0TdzBqhabcKvniDdAAvHCmsRjnNfTsogw== + dependencies: + "@inquirer/core" "^10.0.1" + "@inquirer/type" "^3.0.0" + +"@inquirer/core@^10.0.1": + version "10.0.1" + resolved "https://registry.yarnpkg.com/@inquirer/core/-/core-10.0.1.tgz#22068da87d8f6317452172dfd521e811ccbcb90e" + integrity sha512-KKTgjViBQUi3AAssqjUFMnMO3CM3qwCHvePV9EW+zTKGKafFGFF01sc1yOIYjLJ7QU52G/FbzKc+c01WLzXmVQ== + dependencies: + "@inquirer/figures" "^1.0.7" + "@inquirer/type" "^3.0.0" + ansi-escapes "^4.3.2" + cli-width "^4.1.0" + mute-stream "^2.0.0" + signal-exit "^4.1.0" + strip-ansi "^6.0.1" + wrap-ansi "^6.2.0" + yoctocolors-cjs "^2.1.2" + +"@inquirer/figures@^1.0.7": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@inquirer/figures/-/figures-1.0.7.tgz#d050ccc0eabfacc0248c4ff647a9dfba1b01594b" + integrity sha512-m+Trk77mp54Zma6xLkLuY+mvanPxlE4A7yNKs2HBiyZ4UkVs28Mv5c/pgWrHeInx+USHeX/WEPzjrWrcJiQgjw== + +"@inquirer/type@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@inquirer/type/-/type-3.0.0.tgz#1762ebe667ec1d838012b20bf0cf90b841ba68bc" + integrity sha512-YYykfbw/lefC7yKj7nanzQXILM7r3suIvyFlCcMskc99axmsSewXWkAfXKwMbgxL76iAFVmRwmYdwNZNc8gjog== + "@isaacs/cliui@^8.0.2": version "8.0.2" resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" @@ -1582,17 +1678,6 @@ wrap-ansi "^8.1.0" wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== - dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - get-package-type "^0.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" - "@istanbuljs/schema@^0.1.2": version "0.1.3" resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" @@ -1650,7 +1735,7 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": +"@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.23", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": version "0.3.25" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== @@ -1765,6 +1850,18 @@ case "^1.6.3" js-yaml "^4.1.0" +"@mswjs/interceptors@^0.36.5": + version "0.36.10" + resolved "https://registry.yarnpkg.com/@mswjs/interceptors/-/interceptors-0.36.10.tgz#028a51a3c01f6ed87679e972d9f12a9a3726f7a0" + integrity sha512-GXrJgakgJW3DWKueebkvtYgGKkxA7s0u5B0P5syJM5rvQUnrpLPigvci8Hukl7yEM+sU06l+er2Fgvx/gmiRgg== + dependencies: + "@open-draft/deferred-promise" "^2.2.0" + "@open-draft/logger" "^0.3.0" + "@open-draft/until" "^2.0.0" + is-node-process "^1.2.0" + outvariant "^1.4.3" + strict-event-emitter "^0.5.1" + "@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3": version "2.1.8-no-fsevents.3" resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz#323d72dd25103d0c4fbdce89dadf574a787b1f9b" @@ -2182,6 +2279,24 @@ dependencies: "@octokit/openapi-types" "^18.0.0" +"@open-draft/deferred-promise@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz#4a822d10f6f0e316be4d67b4d4f8c9a124b073bd" + integrity sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA== + +"@open-draft/logger@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@open-draft/logger/-/logger-0.3.0.tgz#2b3ab1242b360aa0adb28b85f5d7da1c133a0954" + integrity sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ== + dependencies: + is-node-process "^1.2.0" + outvariant "^1.4.0" + +"@open-draft/until@^2.0.0", "@open-draft/until@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@open-draft/until/-/until-2.1.0.tgz#0acf32f470af2ceaf47f095cdecd40d68666efda" + integrity sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg== + "@opentelemetry/api@^1.0.1": version "1.8.0" resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.8.0.tgz#5aa7abb48f23f693068ed2999ae627d2f7d902ec" @@ -2192,100 +2307,139 @@ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== -"@rollup/rollup-android-arm-eabi@4.28.1": - version "4.28.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.28.1.tgz#7f4c4d8cd5ccab6e95d6750dbe00321c1f30791e" - integrity sha512-2aZp8AES04KI2dy3Ss6/MDjXbwBzj+i0GqKtWXgw2/Ma6E4jJvujryO6gJAghIRVz7Vwr9Gtl/8na3nDUKpraQ== - -"@rollup/rollup-android-arm64@4.28.1": - version "4.28.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.28.1.tgz#17ea71695fb1518c2c324badbe431a0bd1879f2d" - integrity sha512-EbkK285O+1YMrg57xVA+Dp0tDBRB93/BZKph9XhMjezf6F4TpYjaUSuPt5J0fZXlSag0LmZAsTmdGGqPp4pQFA== - -"@rollup/rollup-darwin-arm64@4.28.1": - version "4.28.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.28.1.tgz#dac0f0d0cfa73e7d5225ae6d303c13c8979e7999" - integrity sha512-prduvrMKU6NzMq6nxzQw445zXgaDBbMQvmKSJaxpaZ5R1QDM8w+eGxo6Y/jhT/cLoCvnZI42oEqf9KQNYz1fqQ== - -"@rollup/rollup-darwin-x64@4.28.1": - version "4.28.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.28.1.tgz#8f63baa1d31784904a380d2e293fa1ddf53dd4a2" - integrity sha512-WsvbOunsUk0wccO/TV4o7IKgloJ942hVFK1CLatwv6TJspcCZb9umQkPdvB7FihmdxgaKR5JyxDjWpCOp4uZlQ== - -"@rollup/rollup-freebsd-arm64@4.28.1": - version "4.28.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.28.1.tgz#30ed247e0df6e8858cdc6ae4090e12dbeb8ce946" - integrity sha512-HTDPdY1caUcU4qK23FeeGxCdJF64cKkqajU0iBnTVxS8F7H/7BewvYoG+va1KPSL63kQ1PGNyiwKOfReavzvNA== - -"@rollup/rollup-freebsd-x64@4.28.1": - version "4.28.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.28.1.tgz#57846f382fddbb508412ae07855b8a04c8f56282" - integrity sha512-m/uYasxkUevcFTeRSM9TeLyPe2QDuqtjkeoTpP9SW0XxUWfcYrGDMkO/m2tTw+4NMAF9P2fU3Mw4ahNvo7QmsQ== - -"@rollup/rollup-linux-arm-gnueabihf@4.28.1": - version "4.28.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.28.1.tgz#378ca666c9dae5e6f94d1d351e7497c176e9b6df" - integrity sha512-QAg11ZIt6mcmzpNE6JZBpKfJaKkqTm1A9+y9O+frdZJEuhQxiugM05gnCWiANHj4RmbgeVJpTdmKRmH/a+0QbA== - -"@rollup/rollup-linux-arm-musleabihf@4.28.1": - version "4.28.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.28.1.tgz#a692eff3bab330d5c33a5d5813a090c15374cddb" - integrity sha512-dRP9PEBfolq1dmMcFqbEPSd9VlRuVWEGSmbxVEfiq2cs2jlZAl0YNxFzAQS2OrQmsLBLAATDMb3Z6MFv5vOcXg== - -"@rollup/rollup-linux-arm64-gnu@4.28.1": - version "4.28.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.28.1.tgz#6b1719b76088da5ac1ae1feccf48c5926b9e3db9" - integrity sha512-uGr8khxO+CKT4XU8ZUH1TTEUtlktK6Kgtv0+6bIFSeiSlnGJHG1tSFSjm41uQ9sAO/5ULx9mWOz70jYLyv1QkA== - -"@rollup/rollup-linux-arm64-musl@4.28.1": - version "4.28.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.28.1.tgz#865baf5b6f5ff67acb32e5a359508828e8dc5788" - integrity sha512-QF54q8MYGAqMLrX2t7tNpi01nvq5RI59UBNx+3+37zoKX5KViPo/gk2QLhsuqok05sSCRluj0D00LzCwBikb0A== - -"@rollup/rollup-linux-loongarch64-gnu@4.28.1": - version "4.28.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.28.1.tgz#23c6609ba0f7fa7a7f2038b6b6a08555a5055a87" - integrity sha512-vPul4uodvWvLhRco2w0GcyZcdyBfpfDRgNKU+p35AWEbJ/HPs1tOUrkSueVbBS0RQHAf/A+nNtDpvw95PeVKOA== - -"@rollup/rollup-linux-powerpc64le-gnu@4.28.1": - version "4.28.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.28.1.tgz#652ef0d9334a9f25b9daf85731242801cb0fc41c" - integrity sha512-pTnTdBuC2+pt1Rmm2SV7JWRqzhYpEILML4PKODqLz+C7Ou2apEV52h19CR7es+u04KlqplggmN9sqZlekg3R1A== - -"@rollup/rollup-linux-riscv64-gnu@4.28.1": - version "4.28.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.28.1.tgz#1eb6651839ee6ebca64d6cc64febbd299e95e6bd" - integrity sha512-vWXy1Nfg7TPBSuAncfInmAI/WZDd5vOklyLJDdIRKABcZWojNDY0NJwruY2AcnCLnRJKSaBgf/GiJfauu8cQZA== - -"@rollup/rollup-linux-s390x-gnu@4.28.1": - version "4.28.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.28.1.tgz#015c52293afb3ff2a293cf0936b1d43975c1e9cd" - integrity sha512-/yqC2Y53oZjb0yz8PVuGOQQNOTwxcizudunl/tFs1aLvObTclTwZ0JhXF2XcPT/zuaymemCDSuuUPXJJyqeDOg== - -"@rollup/rollup-linux-x64-gnu@4.28.1": - version "4.28.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.28.1.tgz#b83001b5abed2bcb5e2dbeec6a7e69b194235c1e" - integrity sha512-fzgeABz7rrAlKYB0y2kSEiURrI0691CSL0+KXwKwhxvj92VULEDQLpBYLHpF49MSiPG4sq5CK3qHMnb9tlCjBw== - -"@rollup/rollup-linux-x64-musl@4.28.1": - version "4.28.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.28.1.tgz#6cc7c84cd4563737f8593e66f33b57d8e228805b" - integrity sha512-xQTDVzSGiMlSshpJCtudbWyRfLaNiVPXt1WgdWTwWz9n0U12cI2ZVtWe/Jgwyv/6wjL7b66uu61Vg0POWVfz4g== - -"@rollup/rollup-win32-arm64-msvc@4.28.1": - version "4.28.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.28.1.tgz#631ffeee094d71279fcd1fe8072bdcf25311bc11" - integrity sha512-wSXmDRVupJstFP7elGMgv+2HqXelQhuNf+IS4V+nUpNVi/GUiBgDmfwD0UGN3pcAnWsgKG3I52wMOBnk1VHr/A== - -"@rollup/rollup-win32-ia32-msvc@4.28.1": - version "4.28.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.28.1.tgz#06d1d60d5b9f718e8a6c4a43f82e3f9e3254587f" - integrity sha512-ZkyTJ/9vkgrE/Rk9vhMXhf8l9D+eAhbAVbsGsXKy2ohmJaWg0LPQLnIxRdRp/bKyr8tXuPlXhIoGlEB5XpJnGA== - -"@rollup/rollup-win32-x64-msvc@4.28.1": - version "4.28.1" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.28.1.tgz#4dff5c4259ebe6c5b4a8f2c5bc3829b7a8447ff0" - integrity sha512-ZvK2jBafvttJjoIdKm/Q/Bh7IJ1Ose9IBOwpOXcOvW3ikGTQGmKDgxTC6oCAzW6PynbkKP8+um1du81XJHZ0JA== +"@polka/url@^1.0.0-next.24": + version "1.0.0-next.28" + resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.28.tgz#d45e01c4a56f143ee69c54dd6b12eade9e270a73" + integrity sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw== + +"@promptbook/utils@0.69.5": + version "0.69.5" + resolved "https://registry.yarnpkg.com/@promptbook/utils/-/utils-0.69.5.tgz#a78e49fe09001f1ae0a59c50fc2390f0c4765087" + integrity sha512-xm5Ti/Hp3o4xHrsK9Yy3MS6KbDxYbq485hDsFvxqaNA7equHLPdo8H8faTitTeb14QCDfLW4iwCxdVYu5sn6YQ== + dependencies: + spacetrim "0.11.59" + +"@puppeteer/browsers@^2.2.0": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@puppeteer/browsers/-/browsers-2.4.1.tgz#7afd271199cc920ece2ff25109278be0a3e8a225" + integrity sha512-0kdAbmic3J09I6dT8e9vE2JOCSt13wHCW5x/ly8TSt2bDtuIWe2TgLZZDHdcziw9AVCzflMAXCrVyRIhIs44Ng== + dependencies: + debug "^4.3.7" + extract-zip "^2.0.1" + progress "^2.0.3" + proxy-agent "^6.4.0" + semver "^7.6.3" + tar-fs "^3.0.6" + unbzip2-stream "^1.4.3" + yargs "^17.7.2" + +"@rollup/plugin-inject@^5.0.5": + version "5.0.5" + resolved "https://registry.yarnpkg.com/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz#616f3a73fe075765f91c5bec90176608bed277a3" + integrity sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg== + dependencies: + "@rollup/pluginutils" "^5.0.1" + estree-walker "^2.0.2" + magic-string "^0.30.3" + +"@rollup/pluginutils@^5.0.1": + version "5.1.3" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.3.tgz#3001bf1a03f3ad24457591f2c259c8e514e0dbdf" + integrity sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A== + dependencies: + "@types/estree" "^1.0.0" + estree-walker "^2.0.2" + picomatch "^4.0.2" + +"@rollup/rollup-android-arm-eabi@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.4.tgz#c460b54c50d42f27f8254c435a4f3b3e01910bc8" + integrity sha512-jfUJrFct/hTA0XDM5p/htWKoNNTbDLY0KRwEt6pyOA6k2fmk0WVwl65PdUdJZgzGEHWx+49LilkcSaumQRyNQw== + +"@rollup/rollup-android-arm64@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.4.tgz#96e01f3a04675d8d5973ab8d3fd6bc3be21fa5e1" + integrity sha512-j4nrEO6nHU1nZUuCfRKoCcvh7PIywQPUCBa2UsootTHvTHIoIu2BzueInGJhhvQO/2FTRdNYpf63xsgEqH9IhA== + +"@rollup/rollup-darwin-arm64@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.4.tgz#9b2ec23b17b47cbb2f771b81f86ede3ac6730bce" + integrity sha512-GmU/QgGtBTeraKyldC7cDVVvAJEOr3dFLKneez/n7BvX57UdhOqDsVwzU7UOnYA7AAOt+Xb26lk79PldDHgMIQ== + +"@rollup/rollup-darwin-x64@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.4.tgz#f30e4ee6929e048190cf10e0daa8e8ae035b6e46" + integrity sha512-N6oDBiZCBKlwYcsEPXGDE4g9RoxZLK6vT98M8111cW7VsVJFpNEqvJeIPfsCzbf0XEakPslh72X0gnlMi4Ddgg== + +"@rollup/rollup-freebsd-arm64@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.24.4.tgz#c54b2373ec5bcf71f08c4519c7ae80a0b6c8e03b" + integrity sha512-py5oNShCCjCyjWXCZNrRGRpjWsF0ic8f4ieBNra5buQz0O/U6mMXCpC1LvrHuhJsNPgRt36tSYMidGzZiJF6mw== + +"@rollup/rollup-freebsd-x64@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.24.4.tgz#3bc53aa29d5a34c28ba8e00def76aa612368458e" + integrity sha512-L7VVVW9FCnTTp4i7KrmHeDsDvjB4++KOBENYtNYAiYl96jeBThFfhP6HVxL74v4SiZEVDH/1ILscR5U9S4ms4g== + +"@rollup/rollup-linux-arm-gnueabihf@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.4.tgz#c85aedd1710c9e267ee86b6d1ce355ecf7d9e8d9" + integrity sha512-10ICosOwYChROdQoQo589N5idQIisxjaFE/PAnX2i0Zr84mY0k9zul1ArH0rnJ/fpgiqfu13TFZR5A5YJLOYZA== + +"@rollup/rollup-linux-arm-musleabihf@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.4.tgz#e77313408bf13995aecde281aec0cceb08747e42" + integrity sha512-ySAfWs69LYC7QhRDZNKqNhz2UKN8LDfbKSMAEtoEI0jitwfAG2iZwVqGACJT+kfYvvz3/JgsLlcBP+WWoKCLcw== + +"@rollup/rollup-linux-arm64-gnu@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.4.tgz#633f632397b3662108cfaa1abca2a80b85f51102" + integrity sha512-uHYJ0HNOI6pGEeZ/5mgm5arNVTI0nLlmrbdph+pGXpC9tFHFDQmDMOEqkmUObRfosJqpU8RliYoGz06qSdtcjg== + +"@rollup/rollup-linux-arm64-musl@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.4.tgz#63edd72b29c4cced93e16113a68e1be9fef88907" + integrity sha512-38yiWLemQf7aLHDgTg85fh3hW9stJ0Muk7+s6tIkSUOMmi4Xbv5pH/5Bofnsb6spIwD5FJiR+jg71f0CH5OzoA== + +"@rollup/rollup-linux-powerpc64le-gnu@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.4.tgz#a9418a4173df80848c0d47df0426a0bf183c4e75" + integrity sha512-q73XUPnkwt9ZNF2xRS4fvneSuaHw2BXuV5rI4cw0fWYVIWIBeDZX7c7FWhFQPNTnE24172K30I+dViWRVD9TwA== + +"@rollup/rollup-linux-riscv64-gnu@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.4.tgz#bc9c195db036a27e5e3339b02f51526b4ce1e988" + integrity sha512-Aie/TbmQi6UXokJqDZdmTJuZBCU3QBDA8oTKRGtd4ABi/nHgXICulfg1KI6n9/koDsiDbvHAiQO3YAUNa/7BCw== + +"@rollup/rollup-linux-s390x-gnu@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.4.tgz#1651fdf8144ae89326c01da5d52c60be63e71a82" + integrity sha512-P8MPErVO/y8ohWSP9JY7lLQ8+YMHfTI4bAdtCi3pC2hTeqFJco2jYspzOzTUB8hwUWIIu1xwOrJE11nP+0JFAQ== + +"@rollup/rollup-linux-x64-gnu@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.4.tgz#e473de5e4acb95fcf930a35cbb7d3e8080e57a6f" + integrity sha512-K03TljaaoPK5FOyNMZAAEmhlyO49LaE4qCsr0lYHUKyb6QacTNF9pnfPpXnFlFD3TXuFbFbz7tJ51FujUXkXYA== + +"@rollup/rollup-linux-x64-musl@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.4.tgz#0af12dd2578c29af4037f0c834b4321429dd5b01" + integrity sha512-VJYl4xSl/wqG2D5xTYncVWW+26ICV4wubwN9Gs5NrqhJtayikwCXzPL8GDsLnaLU3WwhQ8W02IinYSFJfyo34Q== + +"@rollup/rollup-win32-arm64-msvc@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.4.tgz#e48e78cdd45313b977c1390f4bfde7ab79be8871" + integrity sha512-ku2GvtPwQfCqoPFIJCqZ8o7bJcj+Y54cZSr43hHca6jLwAiCbZdBUOrqE6y29QFajNAzzpIOwsckaTFmN6/8TA== + +"@rollup/rollup-win32-ia32-msvc@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.4.tgz#a3fc8536d243fe161c796acb93eba43c250f311c" + integrity sha512-V3nCe+eTt/W6UYNr/wGvO1fLpHUrnlirlypZfKCT1fG6hWfqhPgQV/K/mRBXBpxc0eKLIF18pIOFVPh0mqHjlg== + +"@rollup/rollup-win32-x64-msvc@4.24.4": + version "4.24.4" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.4.tgz#e2a9d1fd56524103a6cc8a54404d9d3ebc73c454" + integrity sha512-LTw1Dfd0mBIEqUVCxbvTE/LLo+9ZxVC9k99v1v4ahg9Aak6FpqOfNu5kRkeTAn0wphoC4JU7No1/rL+bBCEwhg== "@scure/base@~1.1.4": version "1.1.6" @@ -2389,16 +2543,35 @@ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== -"@socket.io/component-emitter@~3.1.0": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz#821f8442f4175d8f0467b9daf26e3a18e2d02af2" - integrity sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA== +"@testing-library/dom@^10.4.0": + version "10.4.0" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-10.4.0.tgz#82a9d9462f11d240ecadbf406607c6ceeeff43a8" + integrity sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/runtime" "^7.12.5" + "@types/aria-query" "^5.0.1" + aria-query "5.3.0" + chalk "^4.1.0" + dom-accessibility-api "^0.5.9" + lz-string "^1.5.0" + pretty-format "^27.0.2" + +"@testing-library/user-event@^14.5.2": + version "14.5.2" + resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.5.2.tgz#db7257d727c891905947bd1c1a99da20e03c2ebd" + integrity sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ== "@tootallnate/once@2": version "2.0.0" resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== +"@tootallnate/quickjs-emscripten@^0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz#db4ecfd499a9765ab24002c3b696d02e6d32a12c" + integrity sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA== + "@tsconfig/node10@^1.0.7": version "1.0.11" resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" @@ -2445,6 +2618,11 @@ "@tufjs/canonical-json" "2.0.0" minimatch "^9.0.4" +"@types/aria-query@^5.0.1": + version "5.0.4" + resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.4.tgz#1a31c3d378850d2778dabb6374d036dcba4ba708" + integrity sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw== + "@types/bn.js@^5.1.0": version "5.1.5" resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.5.tgz#2e0dacdcce2c0f16b905d20ff87aedbc6f7b4bf0" @@ -2453,21 +2631,14 @@ "@types/node" "*" "@types/chai@^4.2.15": - version "4.3.16" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.16.tgz#b1572967f0b8b60bf3f87fe1d854a5604ea70c82" - integrity sha512-PatH4iOdyh3MyWtmHVFXLWCCIhUbopaltqddG9BzB+gMIzee2MJrvd+jouii9Z3wzQJruGWAm7WOMjgfG8hQlQ== - -"@types/cookie@^0.4.1": - version "0.4.1" - resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d" - integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== + version "4.3.20" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.20.tgz#cb291577ed342ca92600430841a00329ba05cecc" + integrity sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ== -"@types/cors@^2.8.12": - version "2.8.17" - resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.17.tgz#5d718a5e494a8166f569d986794e49c48b216b2b" - integrity sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA== - dependencies: - "@types/node" "*" +"@types/cookie@^0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.6.0.tgz#eac397f28bf1d6ae0ae081363eca2f425bedf0d5" + integrity sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA== "@types/deep-equal@^1.0.1": version "1.0.4" @@ -2545,13 +2716,20 @@ "@types/node" "*" form-data "^4.0.0" -"@types/node@*", "@types/node@>=10.0.0": +"@types/node@*": version "20.12.12" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.12.tgz#7cbecdf902085cec634fdb362172dfe12b8f2050" integrity sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw== dependencies: undici-types "~5.26.4" +"@types/node@^20.1.0", "@types/node@^20.11.30": + version "20.17.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.17.6.tgz#6e4073230c180d3579e8c60141f99efdf5df0081" + integrity sha512-VEI7OdvK2wP7XHnsuXbAJnEpEkF6NjSN45QJlL4VGqZSXsnicpesdTWsg9RISeSdYd3yeRj/y3k5KGjUXYnFwQ== + dependencies: + undici-types "~6.19.2" + "@types/node@^22.10.2": version "22.10.2" resolved "https://registry.yarnpkg.com/@types/node/-/node-22.10.2.tgz#a485426e6d1fdafc7b0d4c7b24e2c78182ddabb9" @@ -2596,9 +2774,9 @@ "@types/react" "*" "@types/react@*", "@types/react@^17", "@types/react@^17.0", "@types/react@^17.0.35": - version "17.0.80" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.80.tgz#a5dfc351d6a41257eb592d73d3a85d3b7dbcbb41" - integrity sha512-LrgHIu2lEtIo8M7d1FcI3BdwXWoRQwMoXOZ7+dPTW0lYREjmlHl3P0U1VD0i/9tppOuv8/sam7sOjx34TxSFbA== + version "17.0.83" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.83.tgz#b477c56387b74279281149dcf5ba2a1e2216d131" + integrity sha512-l0m4ArKJvmFtR4e8UmKrj1pB4tUgOhJITf+mADyF/p69Ts1YAR/E+G9XEM0mHXKVRa1dQNHseyyDNzeuAXfXQw== dependencies: "@types/prop-types" "*" "@types/scheduler" "^0.16" @@ -2614,6 +2792,21 @@ resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== +"@types/sinonjs__fake-timers@^8.1.5": + version "8.1.5" + resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz#5fd3592ff10c1e9695d377020c033116cc2889f2" + integrity sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ== + +"@types/statuses@^2.0.4": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@types/statuses/-/statuses-2.0.5.tgz#f61ab46d5352fd73c863a1ea4e1cef3b0b51ae63" + integrity sha512-jmIUGWrAiwu3dZpxntxieC+1n/5c3mjrImkmOSQ2NC5uP6cYO4aAZDdSmRcI5C1oiTmqlZGHC+/NmJrKogbP5A== + +"@types/tough-cookie@^4.0.5": + version "4.0.5" + resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.5.tgz#cb6e2a691b70cb177c6e3ae9c1d2e8b2ea8cd304" + integrity sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA== + "@types/tunnel@^0.0.3": version "0.0.3" resolved "https://registry.yarnpkg.com/@types/tunnel/-/tunnel-0.0.3.tgz#f109e730b072b3136347561fc558c9358bb8c6e9" @@ -2621,6 +2814,25 @@ dependencies: "@types/node" "*" +"@types/which@^2.0.1": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/which/-/which-2.0.2.tgz#54541d02d6b1daee5ec01ac0d1b37cecf37db1ae" + integrity sha512-113D3mDkZDjo+EeUEHCFy0qniNc1ZpecGiAU7WSo7YDoSzolZIQKpYFHrPpjkB2nuyahcKfrmLXeQlh7gqJYdw== + +"@types/ws@^8.5.3": + version "8.5.13" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.13.tgz#6414c280875e2691d0d1e080b05addbf5cb91e20" + integrity sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA== + dependencies: + "@types/node" "*" + +"@types/yauzl@^2.9.1": + version "2.10.3" + resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.3.tgz#e9b2808b4f109504a03cda958259876f61017999" + integrity sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q== + dependencies: + "@types/node" "*" + "@typescript-eslint/eslint-plugin@^6": version "6.21.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz#30830c1ca81fd5f3c2714e524c4303e0194f9cd3" @@ -2712,6 +2924,49 @@ resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== +"@vitest/browser@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@vitest/browser/-/browser-2.1.4.tgz#11096cdfb7853d93184eb65a3930d6cd2e4c8f84" + integrity sha512-89SrvShW6kWzmEYtBj5k1gBq88emoC2qrngw5hE1vNpRFteQ5/1URbKIVww391rIALTpzhhCt5yJt5tjLPZxYw== + dependencies: + "@testing-library/dom" "^10.4.0" + "@testing-library/user-event" "^14.5.2" + "@vitest/mocker" "2.1.4" + "@vitest/utils" "2.1.4" + magic-string "^0.30.12" + msw "^2.5.0" + sirv "^3.0.0" + tinyrainbow "^1.2.0" + ws "^8.18.0" + +"@vitest/coverage-v8@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@vitest/coverage-v8/-/coverage-v8-2.1.4.tgz#c0df11cda12b3a04570e8065754917d35baa0c55" + integrity sha512-FPKQuJfR6VTfcNMcGpqInmtJuVXFSCd9HQltYncfR01AzXhLucMEtQ5SinPdZxsT5x/5BK7I5qFJ5/ApGCmyTQ== + dependencies: + "@ampproject/remapping" "^2.3.0" + "@bcoe/v8-coverage" "^0.2.3" + debug "^4.3.7" + istanbul-lib-coverage "^3.2.2" + istanbul-lib-report "^3.0.1" + istanbul-lib-source-maps "^5.0.6" + istanbul-reports "^3.1.7" + magic-string "^0.30.12" + magicast "^0.3.5" + std-env "^3.7.0" + test-exclude "^7.0.1" + tinyrainbow "^1.2.0" + +"@vitest/expect@2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-2.1.4.tgz#48f4f53a01092a3bdc118cff245f79ef388bdd8e" + integrity sha512-DOETT0Oh1avie/D/o2sgMHGrzYUFFo3zqESB2Hn70z6QB1HrS2IQ9z5DfyTqU8sg4Bpu13zZe9V4+UTNQlUeQA== + dependencies: + "@vitest/spy" "2.1.4" + "@vitest/utils" "2.1.4" + chai "^5.1.2" + tinyrainbow "^1.2.0" + "@vitest/expect@2.1.8": version "2.1.8" resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-2.1.8.tgz#13fad0e8d5a0bf0feb675dcf1d1f1a36a1773bc1" @@ -2722,6 +2977,15 @@ chai "^5.1.2" tinyrainbow "^1.2.0" +"@vitest/mocker@2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@vitest/mocker/-/mocker-2.1.4.tgz#0dc07edb9114f7f080a0181fbcdb16cd4a2d855d" + integrity sha512-Ky/O1Lc0QBbutJdW0rqLeFNbuLEyS+mIPiNdlVlp2/yhJ0SbyYqObS5IHdhferJud8MbbwMnexg4jordE5cCoQ== + dependencies: + "@vitest/spy" "2.1.4" + estree-walker "^3.0.3" + magic-string "^0.30.12" + "@vitest/mocker@2.1.8": version "2.1.8" resolved "https://registry.yarnpkg.com/@vitest/mocker/-/mocker-2.1.8.tgz#51dec42ac244e949d20009249e033e274e323f73" @@ -2731,6 +2995,13 @@ estree-walker "^3.0.3" magic-string "^0.30.12" +"@vitest/pretty-format@2.1.4", "@vitest/pretty-format@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@vitest/pretty-format/-/pretty-format-2.1.4.tgz#fc31993bdc1ef5a6c1a4aa6844e7ba55658a4f9f" + integrity sha512-L95zIAkEuTDbUX1IsjRl+vyBSLh3PwLLgKpghl37aCK9Jvw0iP+wKwIFhfjdUtA2myLgjrG6VU6JCFLv8q/3Ww== + dependencies: + tinyrainbow "^1.2.0" + "@vitest/pretty-format@2.1.8", "@vitest/pretty-format@^2.1.8": version "2.1.8" resolved "https://registry.yarnpkg.com/@vitest/pretty-format/-/pretty-format-2.1.8.tgz#88f47726e5d0cf4ba873d50c135b02e4395e2bca" @@ -2738,6 +3009,14 @@ dependencies: tinyrainbow "^1.2.0" +"@vitest/runner@2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-2.1.4.tgz#f9346500bdd0be1c926daaac5d683bae87ceda2c" + integrity sha512-sKRautINI9XICAMl2bjxQM8VfCMTB0EbsBc/EDFA57V6UQevEKY/TOPOF5nzcvCALltiLfXWbq4MaAwWx/YxIA== + dependencies: + "@vitest/utils" "2.1.4" + pathe "^1.1.2" + "@vitest/runner@2.1.8": version "2.1.8" resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-2.1.8.tgz#b0e2dd29ca49c25e9323ea2a45a5125d8729759f" @@ -2746,6 +3025,15 @@ "@vitest/utils" "2.1.8" pathe "^1.1.2" +"@vitest/snapshot@2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-2.1.4.tgz#ef8c3f605fbc23a32773256d37d3fdfd9b23d353" + integrity sha512-3Kab14fn/5QZRog5BPj6Rs8dc4B+mim27XaKWFWHWA87R56AKjHTGcBFKpvZKDzC4u5Wd0w/qKsUIio3KzWW4Q== + dependencies: + "@vitest/pretty-format" "2.1.4" + magic-string "^0.30.12" + pathe "^1.1.2" + "@vitest/snapshot@2.1.8": version "2.1.8" resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-2.1.8.tgz#d5dc204f4b95dc8b5e468b455dfc99000047d2de" @@ -2755,6 +3043,13 @@ magic-string "^0.30.12" pathe "^1.1.2" +"@vitest/spy@2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-2.1.4.tgz#4e90f9783437c5841a27c80f8fd84d7289a6100a" + integrity sha512-4JOxa+UAizJgpZfaCPKK2smq9d8mmjZVPMt2kOsg/R8QkoRzydHH1qHxIYNvr1zlEaFj4SXiaaJWxq/LPLKaLg== + dependencies: + tinyspy "^3.0.2" + "@vitest/spy@2.1.8": version "2.1.8" resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-2.1.8.tgz#bc41af3e1e6a41ae3b67e51f09724136b88fa447" @@ -2762,6 +3057,15 @@ dependencies: tinyspy "^3.0.2" +"@vitest/utils@2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-2.1.4.tgz#6d67ac966647a21ce8bc497472ce230de3b64537" + integrity sha512-MXDnZn0Awl2S86PSNIim5PWXgIAx8CIkzu35mBdSApUip6RFOGXBCf3YFyeEu8n1IHk4bWD46DeYFu9mQlFIRg== + dependencies: + "@vitest/pretty-format" "2.1.4" + loupe "^3.1.2" + tinyrainbow "^1.2.0" + "@vitest/utils@2.1.8": version "2.1.8" resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-2.1.8.tgz#f8ef85525f3362ebd37fd25d268745108d6ae388" @@ -2771,6 +3075,77 @@ loupe "^3.1.2" tinyrainbow "^1.2.0" +"@wdio/config@9.2.8": + version "9.2.8" + resolved "https://registry.yarnpkg.com/@wdio/config/-/config-9.2.8.tgz#535479f2e146847d79d4e4c1b425a4392829f73c" + integrity sha512-EGMmBPGJbz6RmgMjebRWkWu3fGyeTIRcusF4UA4f2tiUEKY8nbzUO/ZyDjVQNR+YVB40q0jcqAqpszYRrIzzeg== + dependencies: + "@wdio/logger" "9.1.3" + "@wdio/types" "9.2.2" + "@wdio/utils" "9.2.8" + decamelize "^6.0.0" + deepmerge-ts "^7.0.3" + glob "^10.2.2" + import-meta-resolve "^4.0.0" + +"@wdio/logger@9.1.3", "@wdio/logger@^9.0.0": + version "9.1.3" + resolved "https://registry.yarnpkg.com/@wdio/logger/-/logger-9.1.3.tgz#b64b3d2ac642498f3c97580e2f0971f13c1e8fbb" + integrity sha512-cumRMK/gE1uedBUw3WmWXOQ7HtB6DR8EyKQioUz2P0IJtRRpglMBdZV7Svr3b++WWawOuzZHMfbTkJQmaVt8Gw== + dependencies: + chalk "^5.1.2" + loglevel "^1.6.0" + loglevel-plugin-prefix "^0.8.4" + strip-ansi "^7.1.0" + +"@wdio/logger@^8.38.0": + version "8.38.0" + resolved "https://registry.yarnpkg.com/@wdio/logger/-/logger-8.38.0.tgz#a96406267e800bef9c58ac95de00f42ab0d3ac5c" + integrity sha512-kcHL86RmNbcQP+Gq/vQUGlArfU6IIcbbnNp32rRIraitomZow+iEoc519rdQmSVusDozMS5DZthkgDdxK+vz6Q== + dependencies: + chalk "^5.1.2" + loglevel "^1.6.0" + loglevel-plugin-prefix "^0.8.4" + strip-ansi "^7.1.0" + +"@wdio/protocols@9.2.2": + version "9.2.2" + resolved "https://registry.yarnpkg.com/@wdio/protocols/-/protocols-9.2.2.tgz#febff75ba6d0701e28fa90bac92104f3b6b0d2d3" + integrity sha512-0GMUSHCbYm+J+rnRU6XPtaUgVCRICsiH6W5zCXpePm3wLlbmg/mvZ+4OnNErssbpIOulZuAmC2jNmut2AEfWSw== + +"@wdio/repl@9.0.8": + version "9.0.8" + resolved "https://registry.yarnpkg.com/@wdio/repl/-/repl-9.0.8.tgz#8372898cf29f141e4d55d9e42fdb3fe2aa8b32d8" + integrity sha512-3iubjl4JX5zD21aFxZwQghqC3lgu+mSs8c3NaiYYNCC+IT5cI/8QuKlgh9s59bu+N3gG988jqMJeCYlKuUv/iw== + dependencies: + "@types/node" "^20.1.0" + +"@wdio/types@9.2.2": + version "9.2.2" + resolved "https://registry.yarnpkg.com/@wdio/types/-/types-9.2.2.tgz#c3bb4f01149c4ae0612c3864460c4aa48f7c35ec" + integrity sha512-nHZ9Ne9iRQFJ1TOYKUn4Fza69IshTTzk6RYmSZ51ImGs9uMZu0+S0Jm9REdly+VLN3FzxG6g2QSe0/F3uNVPdw== + dependencies: + "@types/node" "^20.1.0" + +"@wdio/utils@9.2.8": + version "9.2.8" + resolved "https://registry.yarnpkg.com/@wdio/utils/-/utils-9.2.8.tgz#b782d8ff1486ad7b1d13451c40aa8da190cdbc33" + integrity sha512-rKm5FXkpsCyeqh8tdirtRUHvgNytWNMiaVKdctsvKOJvqnDVPAAQcz9Wmgo7bSwoLwtSHcDaRoxY7olV7J4QnA== + dependencies: + "@puppeteer/browsers" "^2.2.0" + "@wdio/logger" "9.1.3" + "@wdio/types" "9.2.2" + decamelize "^6.0.0" + deepmerge-ts "^7.0.3" + edgedriver "^5.6.1" + geckodriver "^4.3.3" + get-port "^7.0.0" + import-meta-resolve "^4.0.0" + locate-app "^2.2.24" + safaridriver "^0.1.2" + split2 "^4.2.0" + wait-port "^1.1.0" + "@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1": version "1.12.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.12.1.tgz#bb16a0e8b1914f979f45864c23819cc3e3f0d4bb" @@ -3080,6 +3455,11 @@ resolved "https://registry.yarnpkg.com/@zeit/schemas/-/schemas-2.6.0.tgz#004e8e553b4cd53d538bd38eac7bcbf58a867fe3" integrity sha512-uUrgZ8AxS+Lio0fZKAipJjAh415JyrOZowliZAzmnJSsf7piVL5w+G0+gFJ0KSu3QRhvui/7zuvpLz03YjXAhg== +"@zip.js/zip.js@^2.7.48": + version "2.7.53" + resolved "https://registry.yarnpkg.com/@zip.js/zip.js/-/zip.js-2.7.53.tgz#bf88e90d8eed562182c01339643bc405446b0578" + integrity sha512-G6Bl5wN9EXXVaTUIox71vIX5Z454zEBe+akKpV4m1tUboIctT5h7ID3QXCJd/Lfy2rSvmkTmZIucf1jGRR4f5A== + "@zkochan/js-yaml@0.0.6": version "0.0.6" resolved "https://registry.yarnpkg.com/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz#975f0b306e705e28b8068a07737fa46d3fc04826" @@ -3252,7 +3632,7 @@ ansi-colors@^4.1.1: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== -ansi-escapes@^4.2.1: +ansi-escapes@^4.2.1, ansi-escapes@^4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== @@ -3326,7 +3706,7 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -anymatch@~3.1.1, anymatch@~3.1.2: +anymatch@~3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== @@ -3334,13 +3714,6 @@ anymatch@~3.1.1, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -append-transform@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-2.0.0.tgz#99d9d29c7b38391e6f428d28ce136551f0b77e12" - integrity sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg== - dependencies: - default-require-extensions "^3.0.0" - "aproba@^1.0.3 || ^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" @@ -3356,10 +3729,31 @@ arch@^2.1.1: resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== -archy@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" - integrity sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw== +archiver-utils@^5.0.0, archiver-utils@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-5.0.2.tgz#63bc719d951803efc72cf961a56ef810760dd14d" + integrity sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA== + dependencies: + glob "^10.0.0" + graceful-fs "^4.2.0" + is-stream "^2.0.1" + lazystream "^1.0.0" + lodash "^4.17.15" + normalize-path "^3.0.0" + readable-stream "^4.0.0" + +archiver@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/archiver/-/archiver-7.0.1.tgz#c9d91c350362040b8927379c7aa69c0655122f61" + integrity sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ== + dependencies: + archiver-utils "^5.0.2" + async "^3.2.4" + buffer-crc32 "^1.0.0" + readable-stream "^4.0.0" + readdir-glob "^1.1.2" + tar-stream "^3.0.0" + zip-stream "^6.0.1" are-we-there-yet@^3.0.0: version "3.0.1" @@ -3391,6 +3785,18 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +aria-query@5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" + integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== + dependencies: + dequal "^2.0.3" + +aria-query@^5.3.0: + version "5.3.2" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.2.tgz#93f81a43480e33a338f19163a3d10a50c01dcd59" + integrity sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw== + arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" @@ -3582,21 +3988,34 @@ assert@^1.1.1: object.assign "^4.1.4" util "^0.10.4" +assert@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-2.1.0.tgz#6d92a238d05dc02e7427c881fb8be81c8448b2dd" + integrity sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw== + dependencies: + call-bind "^1.0.2" + is-nan "^1.3.2" + object-is "^1.1.5" + object.assign "^4.1.4" + util "^0.12.5" + assertion-error@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== -assertion-error@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-2.0.1.tgz#f641a196b335690b1070bf00b6e7593fec190bf7" - integrity sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA== - assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== +ast-types@^0.13.4: + version "0.13.4" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782" + integrity sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w== + dependencies: + tslib "^2.0.1" + astral-regex@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" @@ -3624,6 +4043,11 @@ async@^3.2.3: resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== +async@^3.2.4: + version "3.2.6" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce" + integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA== + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -3675,6 +4099,11 @@ axios@^1.6.0: form-data "^4.0.0" proxy-from-env "^1.1.0" +b4a@^1.6.4: + version "1.6.7" + resolved "https://registry.yarnpkg.com/b4a/-/b4a-1.6.7.tgz#a99587d4ebbfbd5a6e3b21bdb5d5fa385767abe4" + integrity sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg== + babel-loader@^8.2.2: version "8.3.0" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.3.0.tgz#124936e841ba4fe8176786d6ff28add1f134d6a8" @@ -3744,16 +4173,44 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +bare-events@^2.0.0, bare-events@^2.2.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/bare-events/-/bare-events-2.5.0.tgz#305b511e262ffd8b9d5616b056464f8e1b3329cc" + integrity sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A== + +bare-fs@^2.1.1: + version "2.3.5" + resolved "https://registry.yarnpkg.com/bare-fs/-/bare-fs-2.3.5.tgz#05daa8e8206aeb46d13c2fe25a2cd3797b0d284a" + integrity sha512-SlE9eTxifPDJrT6YgemQ1WGFleevzwY+XAP1Xqgl56HtcrisC2CHCZ2tq6dBpcH2TnNxwUEUGhweo+lrQtYuiw== + dependencies: + bare-events "^2.0.0" + bare-path "^2.0.0" + bare-stream "^2.0.0" + +bare-os@^2.1.0: + version "2.4.4" + resolved "https://registry.yarnpkg.com/bare-os/-/bare-os-2.4.4.tgz#01243392eb0a6e947177bb7c8a45123d45c9b1a9" + integrity sha512-z3UiI2yi1mK0sXeRdc4O1Kk8aOa/e+FNWZcTiPB/dfTWyLypuE99LibgRaQki914Jq//yAWylcAt+mknKdixRQ== + +bare-path@^2.0.0, bare-path@^2.1.0: + version "2.1.3" + resolved "https://registry.yarnpkg.com/bare-path/-/bare-path-2.1.3.tgz#594104c829ef660e43b5589ec8daef7df6cedb3e" + integrity sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA== + dependencies: + bare-os "^2.1.0" + +bare-stream@^2.0.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/bare-stream/-/bare-stream-2.3.2.tgz#3bc62b429bcf850d2f265719b7a49ee0630a3ae4" + integrity sha512-EFZHSIBkDgSHIwj2l2QZfP4U5OcD4xFAOwhSb/vlr9PIqyGJGvB/nfClJbcnh3EY4jtPE4zsb5ztae96bVF79A== + dependencies: + streamx "^2.20.0" + base64-js@^1.0.2, base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -base64id@2.0.0, base64id@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" - integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== - base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" @@ -3767,6 +4224,11 @@ base@^0.11.1: mixin-deep "^1.2.0" pascalcase "^0.1.1" +basic-ftp@^5.0.2: + version "5.0.5" + resolved "https://registry.yarnpkg.com/basic-ftp/-/basic-ftp-5.0.5.tgz#14a474f5fffecca1f4f406f1c26b18f800225ac0" + integrity sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg== + batch@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" @@ -3843,7 +4305,7 @@ bn.js@^5.0.0, bn.js@^5.2.0, bn.js@^5.2.1: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== -body-parser@1.20.3, body-parser@^1.19.0: +body-parser@1.20.3: version "1.20.3" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6" integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== @@ -3934,6 +4396,13 @@ brorand@^1.0.1, brorand@^1.1.0: resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== +browser-resolve@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-2.0.0.tgz#99b7304cb392f8d73dba741bb2d7da28c6d7842b" + integrity sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ== + dependencies: + resolve "^1.17.0" + browser-stdout@1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" @@ -4011,6 +4480,16 @@ browserslist@^4.21.10, browserslist@^4.22.2, browserslist@^4.23.0: node-releases "^2.0.14" update-browserslist-db "^1.0.13" +buffer-crc32@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-1.0.0.tgz#a10993b9055081d55304bd9feb4a072de179f405" + integrity sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w== + +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== + buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" @@ -4035,7 +4514,7 @@ buffer@4.9.2, buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" -buffer@^5.5.0: +buffer@^5.2.1, buffer@^5.5.0, buffer@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -4165,17 +4644,7 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" -caching-transform@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-4.0.0.tgz#00d297a4206d71e2163c39eaffa8157ac0651f0f" - integrity sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA== - dependencies: - hasha "^5.0.0" - make-dir "^3.0.0" - package-hash "^4.0.0" - write-file-atomic "^3.0.0" - -call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== @@ -4233,10 +4702,10 @@ case@^1.6.3: resolved "https://registry.yarnpkg.com/case/-/case-1.6.3.tgz#0a4386e3e9825351ca2e6216c60467ff5f1ea1c9" integrity sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ== -chai@^4.3.4: - version "4.4.1" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.4.1.tgz#3603fa6eba35425b0f2ac91a009fe924106e50d1" - integrity sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g== +chai@4.5.0, chai@^5.1.2: + version "4.5.0" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.5.0.tgz#707e49923afdd9b13a8b0b47d33d732d13812fd8" + integrity sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw== dependencies: assertion-error "^1.1.0" check-error "^1.0.3" @@ -4244,18 +4713,7 @@ chai@^4.3.4: get-func-name "^2.0.2" loupe "^2.3.6" pathval "^1.1.1" - type-detect "^4.0.8" - -chai@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/chai/-/chai-5.1.2.tgz#3afbc340b994ae3610ca519a6c70ace77ad4378d" - integrity sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw== - dependencies: - assertion-error "^2.0.1" - check-error "^2.1.1" - deep-eql "^5.0.1" - loupe "^3.1.0" - pathval "^2.0.0" + type-detect "^4.1.0" chalk@2.4.1: version "2.4.1" @@ -4283,7 +4741,7 @@ chalk@^2.0.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1: +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -4291,6 +4749,11 @@ chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@^5.1.2: + version "5.3.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" + integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== + chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -4303,27 +4766,51 @@ check-error@^1.0.3: dependencies: get-func-name "^2.0.2" -check-error@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-2.1.1.tgz#87eb876ae71ee388fa0471fe423f494be1d96ccc" - integrity sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw== +cheerio-select@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4" + integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g== + dependencies: + boolbase "^1.0.0" + css-select "^5.1.0" + css-what "^6.1.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + domutils "^3.0.1" -chokidar@3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" - integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== +cheerio@^1.0.0-rc.12: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0.tgz#1ede4895a82f26e8af71009f961a9b8cb60d6a81" + integrity sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww== + dependencies: + cheerio-select "^2.1.0" + dom-serializer "^2.0.0" + domhandler "^5.0.3" + domutils "^3.1.0" + encoding-sniffer "^0.2.0" + htmlparser2 "^9.1.0" + parse5 "^7.1.2" + parse5-htmlparser2-tree-adapter "^7.0.0" + parse5-parser-stream "^7.1.2" + undici "^6.19.5" + whatwg-mimetype "^4.0.0" + +chokidar@3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== dependencies: - anymatch "~3.1.1" + anymatch "~3.1.2" braces "~3.0.2" - glob-parent "~5.1.0" + glob-parent "~5.1.2" is-binary-path "~2.1.0" is-glob "~4.0.1" normalize-path "~3.0.0" - readdirp "~3.5.0" + readdirp "~3.6.0" optionalDependencies: - fsevents "~2.3.1" + fsevents "~2.3.2" -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.0, chokidar@^3.4.1, chokidar@^3.5.1: +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.0, chokidar@^3.4.1: version "3.6.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== @@ -4434,6 +4921,11 @@ cli-width@^3.0.0: resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== +cli-width@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-4.1.0.tgz#42daac41d3c254ef38ad8ac037672130173691c5" + integrity sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ== + clipboardy@2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/clipboardy/-/clipboardy-2.3.0.tgz#3c2903650c68e46a91b388985bc2774287dba290" @@ -4452,15 +4944,6 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - cliui@^7.0.2: version "7.0.4" resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" @@ -4575,6 +5058,11 @@ commander@^8.3.0: resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== +commander@^9.3.0: + version "9.5.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30" + integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== + commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -4593,6 +5081,17 @@ component-emitter@^1.2.1: resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.1.tgz#ef1d5796f7d93f135ee6fb684340b26403c97d17" integrity sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ== +compress-commons@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-6.0.2.tgz#26d31251a66b9d6ba23a84064ecd3a6a71d2609e" + integrity sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg== + dependencies: + crc-32 "^1.2.0" + crc32-stream "^6.0.0" + is-stream "^2.0.1" + normalize-path "^3.0.0" + readable-stream "^4.0.0" + compressible@~2.0.14, compressible@~2.0.16: version "2.0.18" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" @@ -4656,16 +5155,6 @@ connect-history-api-fallback@^1.6.0: resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== -connect@^3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" - integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== - dependencies: - debug "2.6.9" - finalhandler "1.1.2" - parseurl "~1.3.3" - utils-merge "1.0.1" - console-browserify@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" @@ -4771,7 +5260,7 @@ conventional-recommended-bump@7.0.1: git-semver-tags "^5.0.0" meow "^8.1.2" -convert-source-map@^1.5.0, convert-source-map@^1.7.0: +convert-source-map@^1.5.0: version "1.9.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== @@ -4791,10 +5280,10 @@ cookie@0.7.1: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.1.tgz#2f73c42142d5d5cf71310a74fc4ae61670e5dbc9" integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w== -cookie@~0.4.1: - version "0.4.2" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" - integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== +cookie@^0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7" + integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== copy-concurrently@^1.0.0: version "1.0.5" @@ -4835,14 +5324,6 @@ core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== -cors@~2.8.5: - version "2.8.5" - resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" - integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== - dependencies: - object-assign "^4" - vary "^1" - cosmiconfig@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" @@ -4864,6 +5345,19 @@ cosmiconfig@^8.2.0: parse-json "^5.2.0" path-type "^4.0.0" +crc-32@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" + integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== + +crc32-stream@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-6.0.0.tgz#8529a3868f8b27abb915f6c3617c0fadedbf9430" + integrity sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g== + dependencies: + crc-32 "^1.2.0" + readable-stream "^4.0.0" + create-ecdh@^4.0.0: version "4.0.4" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" @@ -4905,7 +5399,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: safe-buffer "^5.0.1" sha.js "^2.4.8" -create-require@^1.1.0: +create-require@^1.1.0, create-require@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== @@ -4990,7 +5484,28 @@ css-select@^4.1.3: domutils "^2.8.0" nth-check "^2.0.1" -css-what@^6.0.1: +css-select@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" + integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== + dependencies: + boolbase "^1.0.0" + css-what "^6.1.0" + domhandler "^5.0.2" + domutils "^3.0.1" + nth-check "^2.0.1" + +css-shorthand-properties@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/css-shorthand-properties/-/css-shorthand-properties-1.1.2.tgz#38fe2d8422190607cdb19c273c42303b774daf99" + integrity sha512-C2AugXIpRGQTxaCW0N7n5jD/p5irUmCrwl03TrnMFBHDbdq44CFWR2zO7rK9xPN4Eo3pUxC4vQzQgbIpzrD1PQ== + +css-value@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/css-value/-/css-value-0.0.1.tgz#5efd6c2eea5ea1fd6b6ac57ec0427b18452424ea" + integrity sha512-FUV3xaJ63buRLgHrLQVlVgQnQdR4yqdLGaDu7g8CQcWjInDfM9plBTPI9FRfpahju1UBSaMckeb2/46ApS/V1Q== + +css-what@^6.0.1, css-what@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== @@ -5020,11 +5535,6 @@ csv-stringify@^5.6.2: resolved "https://registry.yarnpkg.com/csv-stringify/-/csv-stringify-5.6.5.tgz#c6d74badda4b49a79bf4e72f91cce1e33b94de00" integrity sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A== -custom-event@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" - integrity sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg== - cyclist@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.2.tgz#673b5f233bf34d8e602b949429f8171d9121bea3" @@ -5035,6 +5545,16 @@ dargs@^7.0.0: resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== +data-uri-to-buffer@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e" + integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A== + +data-uri-to-buffer@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz#8a58bb67384b261a38ef18bea1810cb01badd28b" + integrity sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw== + data-view-buffer@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2" @@ -5062,11 +5582,6 @@ data-view-byte-offset@^1.0.0: es-errors "^1.3.0" is-data-view "^1.0.1" -date-format@^4.0.14: - version "4.0.14" - resolved "https://registry.yarnpkg.com/date-format/-/date-format-4.0.14.tgz#7a8e584434fb169a521c8b7aa481f355810d9400" - integrity sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg== - dateformat@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" @@ -5079,17 +5594,17 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3: dependencies: ms "2.0.0" -debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1, debug@^4.3.3, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2, debug@~4.3.4: +debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1, debug@^4.3.3, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" -debug@4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" - integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== +debug@4.3.3: + version "4.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" + integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== dependencies: ms "2.1.2" @@ -5101,9 +5616,9 @@ debug@^3.2.7: ms "^2.1.1" debug@^4.3.7: - version "4.4.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" - integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== + version "4.3.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== dependencies: ms "^2.1.3" @@ -5125,6 +5640,11 @@ decamelize@^4.0.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== +decamelize@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-6.0.0.tgz#8cad4d916fde5c41a264a43d0ecc56fe3d31749e" + integrity sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA== + decode-uri-component@^0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" @@ -5136,17 +5656,12 @@ dedent@0.7.0: integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== deep-eql@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d" - integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw== + version "4.1.4" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.4.tgz#d0d3912865911bb8fac5afb4e3acfa6a28dc72b7" + integrity sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg== dependencies: type-detect "^4.0.0" -deep-eql@^5.0.1: - version "5.0.2" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-5.0.2.tgz#4b756d8d770a9257300825d52a2c2cff99c3a341" - integrity sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q== - deep-equal@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.2.tgz#78a561b7830eef3134c7f6f3a3d6af272a678761" @@ -5169,6 +5684,11 @@ deep-is@^0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== +deepmerge-ts@^7.0.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/deepmerge-ts/-/deepmerge-ts-7.1.3.tgz#9a07e5e7dff7afa8ddf48b90b7161ca9439ca4ca" + integrity sha512-qCSH6I0INPxd9Y1VtAiLpnYvz5O//6rCfJXKk0z66Up9/VOSr+1yS8XSKA5IWRxjocFGlzPyaZYe+jxq7OOLtQ== + default-gateway@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" @@ -5177,13 +5697,6 @@ default-gateway@^4.2.0: execa "^1.0.0" ip-regex "^2.1.0" -default-require-extensions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-3.0.1.tgz#bfae00feeaeada68c2ae256c62540f60b80625bd" - integrity sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw== - dependencies: - strip-bom "^4.0.0" - defaults@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" @@ -5205,7 +5718,7 @@ define-lazy-prop@^2.0.0: resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== -define-properties@^1.2.0, define-properties@^1.2.1: +define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== @@ -5236,6 +5749,15 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" +degenerator@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-5.0.1.tgz#9403bf297c6dad9a1ece409b37db27954f91f2f5" + integrity sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ== + dependencies: + ast-types "^0.13.4" + escodegen "^2.1.0" + esprima "^4.0.1" + del@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" @@ -5274,6 +5796,11 @@ deprecation@^2.0.0, deprecation@^2.3.1: resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== +dequal@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + des.js@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.1.0.tgz#1d37f5766f3bbff4ee9638e871a8768c173b81da" @@ -5297,11 +5824,6 @@ detect-node@^2.0.4: resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== -di@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" - integrity sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA== - diff-sequences@^29.6.3: version "29.6.3" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" @@ -5367,6 +5889,11 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" +dom-accessibility-api@^0.5.9: + version "0.5.16" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453" + integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== + dom-converter@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" @@ -5389,16 +5916,6 @@ dom-helpers@^5.0.1: "@babel/runtime" "^7.8.7" csstype "^3.0.2" -dom-serialize@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" - integrity sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ== - dependencies: - custom-event "~1.0.0" - ent "~2.2.0" - extend "^3.0.0" - void-elements "^2.0.0" - dom-serializer@^1.0.1: version "1.4.1" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" @@ -5408,12 +5925,26 @@ dom-serializer@^1.0.1: domhandler "^4.2.0" entities "^2.0.0" +dom-serializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.2" + entities "^4.2.0" + domain-browser@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== -domelementtype@^2.0.1, domelementtype@^2.2.0: +domain-browser@^4.22.0: + version "4.23.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-4.23.0.tgz#427ebb91efcb070f05cffdfb8a4e9a6c25f8c94b" + integrity sha512-ArzcM/II1wCCujdCNyQjXrAFwS4mrLh4C7DZWlaI8mdh7h3BfKdNd3bKXITfl2PT9FtfQqaGvhi1vPRQPimjGA== + +domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== @@ -5425,6 +5956,13 @@ domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: dependencies: domelementtype "^2.2.0" +domhandler@^5.0.2, domhandler@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== + dependencies: + domelementtype "^2.3.0" + domutils@^2.5.2, domutils@^2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" @@ -5434,6 +5972,15 @@ domutils@^2.5.2, domutils@^2.8.0: domelementtype "^2.2.0" domhandler "^4.2.0" +domutils@^3.0.1, domutils@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e" + integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== + dependencies: + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + dot-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" @@ -5479,6 +6026,27 @@ eastasianwidth@^0.2.0: resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== +edge-paths@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/edge-paths/-/edge-paths-3.0.5.tgz#9a35361d701d9b5dc07f641cebe8da01ede80937" + integrity sha512-sB7vSrDnFa4ezWQk9nZ/n0FdpdUuC6R1EOrlU3DL+bovcNFK28rqu2emmAUjujYEJTWIgQGqgVVWUZXMnc8iWg== + dependencies: + "@types/which" "^2.0.1" + which "^2.0.2" + +edgedriver@^5.6.1: + version "5.6.1" + resolved "https://registry.yarnpkg.com/edgedriver/-/edgedriver-5.6.1.tgz#36971f000aee8756c11f3fb1dc5273f109e860d5" + integrity sha512-3Ve9cd5ziLByUdigw6zovVeWJjVs8QHVmqOB0sJ0WNeVPcwf4p18GnxMmVvlFmYRloUwf5suNuorea4QzwBIOA== + dependencies: + "@wdio/logger" "^8.38.0" + "@zip.js/zip.js" "^2.7.48" + decamelize "^6.0.0" + edge-paths "^3.0.5" + fast-xml-parser "^4.4.1" + node-fetch "^3.3.2" + which "^4.0.0" + ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -5547,6 +6115,14 @@ encodeurl@~2.0.0: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== +encoding-sniffer@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/encoding-sniffer/-/encoding-sniffer-0.2.0.tgz#799569d66d443babe82af18c9f403498365ef1d5" + integrity sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg== + dependencies: + iconv-lite "^0.6.3" + whatwg-encoding "^3.1.1" + encoding@^0.1.13: version "0.1.13" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" @@ -5561,27 +6137,6 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: dependencies: once "^1.4.0" -engine.io-parser@~5.2.1: - version "5.2.2" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.2.2.tgz#37b48e2d23116919a3453738c5720455e64e1c49" - integrity sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw== - -engine.io@~6.5.2: - version "6.5.4" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.5.4.tgz#6822debf324e781add2254e912f8568508850cdc" - integrity sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg== - 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" - enhanced-resolve@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" @@ -5614,16 +6169,16 @@ enquirer@~2.3.6: dependencies: ansi-colors "^4.1.1" -ent@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" - integrity sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA== - entities@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== +entities@^4.2.0, entities@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + env-paths@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" @@ -5784,11 +6339,6 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -es6-error@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" - integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== - esbuild@^0.21.3: version "0.21.5" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.21.5.tgz#9ca301b120922959b766360d8ac830da0d02997d" @@ -5838,6 +6388,17 @@ escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== +escodegen@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" + integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionalDependencies: + source-map "~0.6.1" + eslint-import-resolver-node@^0.3.9: version "0.3.9" resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" @@ -6031,7 +6592,7 @@ espree@^7.3.0, espree@^7.3.1: acorn-jsx "^5.3.1" eslint-visitor-keys "^1.3.0" -esprima@^4.0.0: +esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== @@ -6060,6 +6621,11 @@ estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== +estree-walker@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + estree-walker@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-3.0.3.tgz#67c3e549ec402a487b4fc193d1953a524752340d" @@ -6102,7 +6668,7 @@ events@1.1.1: resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" integrity sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw== -events@^3.0.0, events@^3.2.0: +events@^3.0.0, events@^3.2.0, events@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== @@ -6236,11 +6802,6 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - external-editor@^3.0.3: version "3.1.0" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" @@ -6264,6 +6825,17 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" +extract-zip@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" + integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== + dependencies: + debug "^4.1.1" + get-stream "^5.1.0" + yauzl "^2.10.0" + optionalDependencies: + "@types/yauzl" "^2.9.1" + eyzy-tree@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/eyzy-tree/-/eyzy-tree-0.2.2.tgz#ca0ce866e61ceced0babd34bc36a30f12aba8b2d" @@ -6280,6 +6852,11 @@ fast-check@^1.15.1: pure-rand "^2.0.0" tslib "^2.0.0" +fast-deep-equal@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" + integrity sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w== + fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -6290,6 +6867,11 @@ fast-diff@^1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== +fast-fifo@^1.2.0, fast-fifo@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" + integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== + fast-glob@^3.2.9: version "3.3.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" @@ -6318,6 +6900,13 @@ fast-url-parser@1.1.3: dependencies: punycode "^1.3.2" +fast-xml-parser@^4.4.1: + version "4.5.0" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.5.0.tgz#2882b7d01a6825dfdf909638f2de0256351def37" + integrity sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg== + dependencies: + strnum "^1.0.5" + fastest-levenshtein@^1.0.12: version "1.0.16" resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" @@ -6337,6 +6926,21 @@ faye-websocket@^0.11.3, faye-websocket@^0.11.4: dependencies: websocket-driver ">=0.5.1" +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== + dependencies: + pend "~1.2.0" + +fetch-blob@^3.1.2, fetch-blob@^3.1.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.2.0.tgz#f09b8d4bbd45adc6f0c20b7e787e793e309dcce9" + integrity sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ== + dependencies: + node-domexception "^1.0.0" + web-streams-polyfill "^3.0.3" + figgy-pudding@^3.5.1: version "3.5.2" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" @@ -6390,19 +6994,6 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -finalhandler@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== - 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" - finalhandler@1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.1.tgz#0c575f1d1d324ddd1da35ad7ece3df7d19088019" @@ -6425,7 +7016,7 @@ find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: make-dir "^2.0.0" pkg-dir "^3.0.0" -find-cache-dir@^3.2.0, find-cache-dir@^3.3.1: +find-cache-dir@^3.3.1: version "3.3.2" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== @@ -6439,7 +7030,7 @@ find-root@^1.1.0: resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== -find-up@5.0.0: +find-up@5.0.0, find-up@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== @@ -6483,7 +7074,7 @@ flat@^5.0.2: resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== -flatted@^3.2.7, flatted@^3.2.9: +flatted@^3.2.9: version "3.3.1" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== @@ -6513,14 +7104,6 @@ for-in@^1.0.2: resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== -foreground-child@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53" - integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^3.0.2" - foreground-child@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" @@ -6547,6 +7130,13 @@ form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" +formdata-polyfill@^4.0.10: + version "4.0.10" + resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423" + integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g== + dependencies: + fetch-blob "^3.1.2" + forwarded@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" @@ -6572,17 +7162,12 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" -fromentries@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/fromentries/-/fromentries-1.3.2.tgz#e4bca6808816bf8f93b52750f1127f5a6fd86e3a" - integrity sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg== - fs-constants@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== -fs-extra@^11.1.0, fs-extra@^11.1.1: +fs-extra@^11.1.0, fs-extra@^11.1.1, fs-extra@^11.2.0: version "11.2.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== @@ -6591,15 +7176,6 @@ fs-extra@^11.1.0, fs-extra@^11.1.1: jsonfile "^6.0.1" universalify "^2.0.0" -fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - fs-minipass@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" @@ -6642,7 +7218,7 @@ fsevents@^1.2.7: bindings "^1.5.0" nan "^2.12.1" -fsevents@~2.3.1, fsevents@~2.3.2, fsevents@~2.3.3: +fsevents@~2.3.2, fsevents@~2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== @@ -6686,6 +7262,20 @@ gauge@^4.0.3: strip-ansi "^6.0.1" wide-align "^1.1.5" +geckodriver@^4.3.3: + version "4.5.1" + resolved "https://registry.yarnpkg.com/geckodriver/-/geckodriver-4.5.1.tgz#624fc01815c1aa498dd3f717f7bd4c6cca0c57b8" + integrity sha512-lGCRqPMuzbRNDWJOQcUqhNqPvNsIFu6yzXF8J/6K3WCYFd2r5ckbeF7h1cxsnjA7YLSEiWzERCt6/gjZ3tW0ug== + dependencies: + "@wdio/logger" "^9.0.0" + "@zip.js/zip.js" "^2.7.48" + decamelize "^6.0.0" + http-proxy-agent "^7.0.2" + https-proxy-agent "^7.0.5" + node-fetch "^3.3.2" + tar-fs "^3.0.6" + which "^4.0.0" + gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -6712,11 +7302,6 @@ get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@ has-symbols "^1.0.3" hasown "^2.0.0" -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - get-pkg-repo@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz#75973e1c8050c73f48190c52047c4cee3acbf385" @@ -6732,6 +7317,11 @@ get-port@5.1.1: resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== +get-port@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-7.1.0.tgz#d5a500ebfc7aa705294ec2b83cc38c5d0e364fec" + integrity sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw== + get-stream@6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718" @@ -6749,6 +7339,13 @@ get-stream@^4.0.0: dependencies: pump "^3.0.0" +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + get-stream@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" @@ -6763,6 +7360,16 @@ get-symbol-description@^1.0.2: es-errors "^1.3.0" get-intrinsic "^1.2.4" +get-uri@^6.0.1: + version "6.0.3" + resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-6.0.3.tgz#0d26697bc13cf91092e519aa63aa60ee5b6f385a" + integrity sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw== + dependencies: + basic-ftp "^5.0.2" + data-uri-to-buffer "^6.0.2" + debug "^4.3.4" + fs-extra "^11.2.0" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -6815,7 +7422,7 @@ gitconfiglocal@^1.0.0: dependencies: ini "^1.3.2" -glob-parent@5.1.2, glob-parent@^5.1.2, glob-parent@~5.1.0, glob-parent@~5.1.2: +glob-parent@5.1.2, glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -6835,10 +7442,10 @@ glob-to-regexp@^0.4.1: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== +glob@7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -6847,6 +7454,18 @@ glob@7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^10.0.0, glob@^10.4.1: + version "10.4.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" + integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" + glob@^10.2.2, glob@^10.3.10: version "10.3.15" resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.15.tgz#e72bc61bc3038c90605f5dd48543dc67aaf3b50d" @@ -6858,7 +7477,7 @@ glob@^10.2.2, glob@^10.3.10: minipass "^7.0.4" path-scurry "^1.11.0" -glob@^7.0.3, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.1.7, glob@^7.2.0: +glob@^7.0.3, glob@^7.1.3, glob@^7.1.4, glob@^7.2.0: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -6946,11 +7565,21 @@ graceful-fs@4.2.11, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2 resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== +grapheme-splitter@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" + integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== + graphemer@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== +graphql@^16.8.1: + version "16.9.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.9.0.tgz#1c310e63f16a49ce1fbb230bd0a000e99f6f115f" + integrity sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw== + growl@1.10.5: version "1.10.5" resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" @@ -7078,14 +7707,6 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" -hasha@^5.0.0: - version "5.2.2" - resolved "https://registry.yarnpkg.com/hasha/-/hasha-5.2.2.tgz#a48477989b3b327aea3c04f53096d816d97522a1" - integrity sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ== - dependencies: - is-stream "^2.0.0" - type-fest "^0.8.0" - hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" @@ -7098,6 +7719,11 @@ he@1.2.0, he@^1.2.0: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== +headers-polyfill@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/headers-polyfill/-/headers-polyfill-4.0.3.tgz#922a0155de30ecc1f785bcf04be77844ca95ad07" + integrity sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ== + hmac-drbg@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -7184,6 +7810,11 @@ html-webpack-plugin@^5.3.2: pretty-error "^4.0.0" tapable "^2.0.0" +htmlfy@^0.3.0: + version "0.3.2" + resolved "https://registry.yarnpkg.com/htmlfy/-/htmlfy-0.3.2.tgz#da5c8b74aaabdc3255d7d3df8733cea7bcf1178c" + integrity sha512-FsxzfpeDYRqn1emox9VpxMPfGjADoUmmup8D604q497R0VNxiXs4ZZTN2QzkaMA5C9aHGUoe1iQRVSm+HK9xuA== + htmlparser2@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" @@ -7194,6 +7825,16 @@ htmlparser2@^6.1.0: domutils "^2.5.2" entities "^2.0.0" +htmlparser2@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-9.1.0.tgz#cdb498d8a75a51f739b61d3f718136c369bc8c23" + integrity sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.3" + domutils "^3.1.0" + entities "^4.5.0" + http-cache-semantics@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" @@ -7239,7 +7880,7 @@ http-proxy-agent@^5.0.0: agent-base "6" debug "4" -http-proxy-agent@^7.0.0: +http-proxy-agent@^7.0.0, http-proxy-agent@^7.0.1, http-proxy-agent@^7.0.2: version "7.0.2" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== @@ -7257,7 +7898,7 @@ http-proxy-middleware@0.19.1: lodash "^4.17.11" micromatch "^3.1.10" -http-proxy@^1.17.0, http-proxy@^1.18.1: +http-proxy@^1.17.0: version "1.18.1" resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== @@ -7287,6 +7928,14 @@ https-proxy-agent@^7.0.1: agent-base "^7.0.2" debug "4" +https-proxy-agent@^7.0.3, https-proxy-agent@^7.0.5: + version "7.0.5" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz#9e8b5013873299e11fab6fd548405da2d6c602b2" + integrity sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw== + dependencies: + agent-base "^7.0.2" + debug "4" + human-signals@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" @@ -7306,7 +7955,7 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@^0.6.2: +iconv-lite@0.6.3, iconv-lite@^0.6.2, iconv-lite@^0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== @@ -7362,6 +8011,11 @@ ignore@^5.2.4: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== + immutable@^4.0.0: version "4.3.6" resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.6.tgz#6a05f7858213238e587fb83586ffa3b4b27f0447" @@ -7391,6 +8045,11 @@ import-local@^2.0.0: pkg-dir "^3.0.0" resolve-cwd "^2.0.0" +import-meta-resolve@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz#f9db8bead9fafa61adb811db77a2bf22c5399706" + integrity sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw== + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -7414,7 +8073,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -7713,11 +8372,24 @@ is-map@^2.0.3: resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e" integrity sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw== +is-nan@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" + integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + is-negative-zero@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== +is-node-process@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-node-process/-/is-node-process-1.2.0.tgz#ea02a1b90ddb3934a19aea414e88edef7e11d134" + integrity sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw== + is-number-object@^1.0.4: version "1.0.7" resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" @@ -7776,6 +8448,11 @@ is-plain-obj@^2.1.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== +is-plain-obj@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0" + integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg== + is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -7825,7 +8502,7 @@ is-stream@^1.1.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== -is-stream@^2.0.0: +is-stream@^2.0.0, is-stream@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== @@ -7858,11 +8535,6 @@ is-typed-array@^1.1.13, is-typed-array@^1.1.3: dependencies: which-typed-array "^1.1.14" -is-typedarray@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== - is-unicode-supported@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" @@ -7898,7 +8570,7 @@ is-wsl@^1.1.0: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== -is-wsl@^2.1.0, is-wsl@^2.1.1, is-wsl@^2.2.0: +is-wsl@^2.1.1, is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== @@ -7915,11 +8587,6 @@ isarray@^2.0.5: resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== -isbinaryfile@^4.0.8: - version "4.0.10" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3" - integrity sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw== - isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -7942,41 +8609,17 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: +isomorphic-timers-promises@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/isomorphic-timers-promises/-/isomorphic-timers-promises-1.0.1.tgz#e4137c24dbc54892de8abae3a4b5c1ffff381598" + integrity sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ== + +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== -istanbul-lib-hook@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz#8f84c9434888cc6b1d0a9d7092a76d239ebf0cc6" - integrity sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ== - dependencies: - append-transform "^2.0.0" - -istanbul-lib-instrument@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" - integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== - dependencies: - "@babel/core" "^7.7.5" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.0.0" - semver "^6.3.0" - -istanbul-lib-processinfo@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz#366d454cd0dcb7eb6e0e419378e60072c8626169" - integrity sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg== - dependencies: - archy "^1.0.0" - cross-spawn "^7.0.3" - istanbul-lib-coverage "^3.2.0" - p-map "^3.0.0" - rimraf "^3.0.0" - uuid "^8.3.2" - -istanbul-lib-report@^3.0.0: +istanbul-lib-report@^3.0.0, istanbul-lib-report@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== @@ -7985,16 +8628,16 @@ istanbul-lib-report@^3.0.0: make-dir "^4.0.0" supports-color "^7.1.0" -istanbul-lib-source-maps@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" - integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== +istanbul-lib-source-maps@^5.0.6: + version "5.0.6" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz#acaef948df7747c8eb5fbf1265cb980f6353a441" + integrity sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A== dependencies: + "@jridgewell/trace-mapping" "^0.3.23" debug "^4.1.1" istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" -istanbul-reports@^3.0.2: +istanbul-reports@^3.1.7: version "3.1.7" resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b" integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g== @@ -8022,6 +8665,15 @@ jackspeak@^2.3.6: optionalDependencies: "@pkgjs/parseargs" "^0.11.0" +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + jake@^10.8.5: version "10.9.1" resolved "https://registry.yarnpkg.com/jake/-/jake-10.9.1.tgz#8dc96b7fcc41cb19aa502af506da4e1d56f5e62b" @@ -8066,13 +8718,6 @@ jmespath@0.16.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.0.0.tgz#f426bc0ff4b4051926cd588c71113183409a121f" - integrity sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q== - dependencies: - argparse "^2.0.1" - js-yaml@4.1.0, js-yaml@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" @@ -8160,13 +8805,6 @@ jsonc-parser@3.2.0: resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== - optionalDependencies: - graceful-fs "^4.1.6" - jsonfile@^6.0.1: version "6.1.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" @@ -8191,75 +8829,15 @@ jsonparse@^1.2.0, jsonparse@^1.3.1: object.assign "^4.1.4" object.values "^1.1.6" -karma-babel-preprocessor@^8.0.1: - version "8.0.2" - resolved "https://registry.yarnpkg.com/karma-babel-preprocessor/-/karma-babel-preprocessor-8.0.2.tgz#4daff4cfbfcd58c635bf321e135525f608d2d621" - integrity sha512-6ZUnHwaK2EyhgxbgeSJW6n6WZUYSEdekHIV/qDUnPgMkVzQBHEvd07d2mTL5AQjV8uTUgH6XslhaPrp+fHWH2A== - -karma-chai@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/karma-chai/-/karma-chai-0.1.0.tgz#bee5ad40400517811ae34bb945f762909108b79a" - integrity sha512-mqKCkHwzPMhgTYca10S90aCEX9+HjVjjrBFAsw36Zj7BlQNbokXXCAe6Ji04VUMsxcY5RLP7YphpfO06XOubdg== - -karma-chrome-launcher@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-3.2.0.tgz#eb9c95024f2d6dfbb3748d3415ac9b381906b9a9" - integrity sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q== - dependencies: - which "^1.2.1" - -karma-firefox-launcher@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/karma-firefox-launcher/-/karma-firefox-launcher-1.3.0.tgz#ebcbb1d1ddfada6be900eb8fae25bcf2dcdc8171" - integrity sha512-Fi7xPhwrRgr+94BnHX0F5dCl1miIW4RHnzjIGxF8GaIEp7rNqX7LSi7ok63VXs3PS/5MQaQMhGxw+bvD+pibBQ== - dependencies: - is-wsl "^2.1.0" - -karma-mocha@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/karma-mocha/-/karma-mocha-1.3.0.tgz#eeaac7ffc0e201eb63c467440d2b69c7cf3778bf" - integrity sha512-twRO+KCXIFOBs7o6i7oIpTJhVvjKZbIsUM96A+k2QaeXOzbVQXCkjVzXqNeQoczW4ruasPZYi0iWMTkfTrQVCw== - dependencies: - minimist "1.2.0" - -karma-webpack@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-5.0.1.tgz#4eafd31bbe684a747a6e8f3e4ad373e53979ced4" - integrity sha512-oo38O+P3W2mSPCSUrQdySSPv1LvPpXP+f+bBimNomS5sW+1V4SuhCuW8TfJzV+rDv921w2fDSDw0xJbPe6U+kQ== - dependencies: - glob "^7.1.3" - minimatch "^9.0.3" - webpack-merge "^4.1.5" - -karma@^6.3.16: - version "6.4.3" - resolved "https://registry.yarnpkg.com/karma/-/karma-6.4.3.tgz#763e500f99597218bbb536de1a14acc4ceea7ce8" - integrity sha512-LuucC/RE92tJ8mlCwqEoRWXP38UMAqpnq98vktmS9SznSoUPPUJQbc91dHcxcunROvfQjdORVA/YFviH+Xci9Q== +jszip@^3.10.1: + version "3.10.1" + resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2" + integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== 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.7.2" - source-map "^0.6.1" - tmp "^0.2.1" - ua-parser-js "^0.7.30" - yargs "^16.1.1" + lie "~3.3.0" + pako "~1.0.2" + readable-stream "~2.3.6" + setimmediate "^1.0.5" keyv@^4.5.3: version "4.5.4" @@ -8292,6 +8870,13 @@ kind-of@^6.0.2, kind-of@^6.0.3: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== +lazystream@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.1.tgz#494c831062f1f9408251ec44db1cba29242a2638" + integrity sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw== + dependencies: + readable-stream "^2.0.5" + lerna@^8.1.3: version "8.1.3" resolved "https://registry.yarnpkg.com/lerna/-/lerna-8.1.3.tgz#9168804c99fbba49083e1f62de65a0ffefd6df22" @@ -8402,6 +8987,13 @@ libnpmpublish@7.3.0: sigstore "^1.4.0" ssri "^10.0.1" +lie@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" + integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== + dependencies: + immediate "~3.0.5" + lines-and-columns@^1.1.6: version "1.2.4" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" @@ -8460,6 +9052,15 @@ loader-utils@^2.0.0, loader-utils@^2.0.2: emojis-list "^3.0.0" json5 "^2.1.2" +locate-app@^2.2.24: + version "2.5.0" + resolved "https://registry.yarnpkg.com/locate-app/-/locate-app-2.5.0.tgz#4c1e0e78678bffa8cb3bf363ee2560fb69ebe467" + integrity sha512-xIqbzPMBYArJRmPGUZD9CzV9wOqmVtQnaAn3wrj3s6WYW0bQvPI7x+sPYUGmDTYMHefVK//zc6HEYZ1qnxIK+Q== + dependencies: + "@promptbook/utils" "0.69.5" + type-fest "4.26.0" + userhome "1.0.1" + locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -8490,16 +9091,16 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== + lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== -lodash.flattendeep@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" - integrity sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ== - lodash.ismatch@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" @@ -8515,19 +9116,17 @@ lodash.truncate@^4.4.2: resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== +lodash.zip@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.zip/-/lodash.zip-4.2.0.tgz#ec6662e4896408ed4ab6c542a3990b72cc080020" + integrity sha512-C7IOaBBK/0gMORRBd8OETNx3kmOkgIWIPvyDpZSCTwUrpYmgZwJkjZeOD8ww4xbOUOs4/attY+pciKvadNfFbg== + lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-symbols@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" - integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== - dependencies: - chalk "^4.0.0" - -log-symbols@^4.0.0, log-symbols@^4.1.0: +log-symbols@4.1.0, log-symbols@^4.0.0, log-symbols@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== @@ -8535,16 +9134,15 @@ log-symbols@^4.0.0, log-symbols@^4.1.0: chalk "^4.1.0" is-unicode-supported "^0.1.0" -log4js@^6.4.1: - version "6.9.1" - resolved "https://registry.yarnpkg.com/log4js/-/log4js-6.9.1.tgz#aba5a3ff4e7872ae34f8b4c533706753709e38b6" - integrity sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g== - dependencies: - date-format "^4.0.14" - debug "^4.3.4" - flatted "^3.2.7" - rfdc "^1.3.0" - streamroller "^3.1.5" +loglevel-plugin-prefix@^0.8.4: + version "0.8.4" + resolved "https://registry.yarnpkg.com/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz#2fe0e05f1a820317d98d8c123e634c1bd84ff644" + integrity sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g== + +loglevel@^1.6.0: + version "1.9.2" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.9.2.tgz#c2e028d6c757720107df4e64508530db6621ba08" + integrity sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg== loglevel@^1.6.8: version "1.9.1" @@ -8570,7 +9168,7 @@ loupe@^2.3.6: dependencies: get-func-name "^2.0.1" -loupe@^3.1.0, loupe@^3.1.2: +loupe@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/loupe/-/loupe-3.1.2.tgz#c86e0696804a02218f2206124c45d8b15291a240" integrity sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg== @@ -8609,18 +9207,32 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -lru-cache@^7.5.1, lru-cache@^7.7.1: +lru-cache@^7.14.1, lru-cache@^7.5.1, lru-cache@^7.7.1: version "7.18.3" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== -magic-string@^0.30.12: - version "0.30.17" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.17.tgz#450a449673d2460e5bbcfba9a61916a1714c7453" - integrity sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA== +lz-string@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" + integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== + +magic-string@^0.30.12, magic-string@^0.30.3: + version "0.30.12" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.12.tgz#9eb11c9d072b9bcb4940a5b2c2e1a217e4ee1a60" + integrity sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw== dependencies: "@jridgewell/sourcemap-codec" "^1.5.0" +magicast@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/magicast/-/magicast-0.3.5.tgz#8301c3c7d66704a0771eb1bad74274f0ec036739" + integrity sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ== + dependencies: + "@babel/parser" "^7.25.4" + "@babel/types" "^7.25.4" + source-map-js "^1.2.0" + make-dir@4.0.0, make-dir@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" @@ -8636,7 +9248,7 @@ make-dir@^2.0.0, make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" -make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: +make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== @@ -8840,7 +9452,7 @@ mime@1.6.0: resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mime@^2.4.4, mime@^2.5.2: +mime@^2.4.4: version "2.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== @@ -8887,6 +9499,13 @@ minimatch@3.0.5: dependencies: brace-expansion "^1.1.7" +minimatch@4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-4.2.1.tgz#40d9d511a46bdc4e563c22c3080cde9c0d8299b4" + integrity sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g== + dependencies: + brace-expansion "^1.1.7" + minimatch@9.0.3: version "9.0.3" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" @@ -8901,7 +9520,7 @@ minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" -minimatch@^5.0.1: +minimatch@^5.0.1, minimatch@^5.1.0: version "5.1.6" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== @@ -8931,11 +9550,6 @@ minimist-options@4.1.0: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha512-7Wl+Jz+IGWuSdgsQEJ4JunV0si/iMhg42MnQQG6h1R6TNeVenp4U9x5CC5v/gYqz/fENLQITAWXidNtVL0NNbw== - minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" @@ -9017,6 +9631,11 @@ minipass@^5.0.0: resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.1.tgz#f7f85aff59aa22f110b20e27692465cf3bf89481" integrity sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA== +minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + minizlib@^2.1.1, minizlib@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" @@ -9049,7 +9668,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@^0.5.6: +mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.6: version "0.5.6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== @@ -9061,33 +9680,32 @@ mkdirp@^1.0.3: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mocha@^8.3.2: - version "8.4.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.4.0.tgz#677be88bf15980a3cae03a73e10a0fc3997f0cff" - integrity sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ== +mocha@^9.0.1: + version "9.2.2" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.2.2.tgz#d70db46bdb93ca57402c809333e5a84977a88fb9" + integrity sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g== dependencies: "@ungap/promise-all-settled" "1.1.2" ansi-colors "4.1.1" browser-stdout "1.3.1" - chokidar "3.5.1" - debug "4.3.1" + chokidar "3.5.3" + debug "4.3.3" diff "5.0.0" escape-string-regexp "4.0.0" find-up "5.0.0" - glob "7.1.6" + glob "7.2.0" growl "1.10.5" he "1.2.0" - js-yaml "4.0.0" - log-symbols "4.0.0" - minimatch "3.0.4" + js-yaml "4.1.0" + log-symbols "4.1.0" + minimatch "4.2.1" ms "2.1.3" - nanoid "3.1.20" - serialize-javascript "5.0.1" + nanoid "3.3.1" + serialize-javascript "6.0.0" strip-json-comments "3.1.1" supports-color "8.1.1" which "2.0.2" - wide-align "1.1.3" - workerpool "6.1.0" + workerpool "6.2.0" yargs "16.2.0" yargs-parser "20.2.4" yargs-unparser "2.0.0" @@ -9109,6 +9727,11 @@ move-concurrently@^1.0.1: rimraf "^2.5.4" run-queue "^1.0.3" +mrmime@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-2.0.0.tgz#151082a6e06e59a9a39b46b3e14d5cfe92b3abb4" + integrity sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw== + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -9124,6 +9747,30 @@ ms@2.1.3, ms@^2.0.0, ms@^2.1.1, ms@^2.1.3: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== +msw@^2.5.0: + version "2.6.4" + resolved "https://registry.yarnpkg.com/msw/-/msw-2.6.4.tgz#954906f10f23d9364529eebe9b4e244796241a8a" + integrity sha512-Pm4LmWQeytDsNCR+A7gt39XAdtH6zQb6jnIKRig0FlvYOn8eksn3s1nXxUfz5KYUjbckof7Z4p2ewzgffPoCbg== + dependencies: + "@bundled-es-modules/cookie" "^2.0.1" + "@bundled-es-modules/statuses" "^1.0.1" + "@bundled-es-modules/tough-cookie" "^0.1.6" + "@inquirer/confirm" "^5.0.0" + "@mswjs/interceptors" "^0.36.5" + "@open-draft/deferred-promise" "^2.2.0" + "@open-draft/until" "^2.1.0" + "@types/cookie" "^0.6.0" + "@types/statuses" "^2.0.4" + chalk "^4.1.2" + graphql "^16.8.1" + headers-polyfill "^4.0.2" + is-node-process "^1.2.0" + outvariant "^1.4.3" + path-to-regexp "^6.3.0" + strict-event-emitter "^0.5.1" + type-fest "^4.26.1" + yargs "^17.7.2" + multicast-dns-service-types@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" @@ -9158,15 +9805,20 @@ mute-stream@^1.0.0, mute-stream@~1.0.0: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-1.0.0.tgz#e31bd9fe62f0aed23520aa4324ea6671531e013e" integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA== +mute-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-2.0.0.tgz#a5446fc0c512b71c83c44d908d5c7b7b4c493b2b" + integrity sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA== + nan@^2.12.1: version "2.19.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.19.0.tgz#bb58122ad55a6c5bc973303908d5b16cfdd5a8c0" integrity sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw== -nanoid@3.1.20: - version "3.1.20" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" - integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== +nanoid@3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" + integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== nanoid@^3.3.7: version "3.3.7" @@ -9205,6 +9857,11 @@ neo-async@^2.5.0, neo-async@^2.6.1, neo-async@^2.6.2: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== +netmask@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/netmask/-/netmask-2.0.2.tgz#8b01a07644065d536383835823bc52004ebac5e7" + integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg== + nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" @@ -9218,6 +9875,11 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" +node-domexception@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" + integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== + node-fetch@2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" @@ -9232,6 +9894,15 @@ node-fetch@^2.6.7: dependencies: whatwg-url "^5.0.0" +node-fetch@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.2.tgz#d1e889bacdf733b4ff3b2b243eb7a12866a0b78b" + integrity sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA== + dependencies: + data-uri-to-buffer "^4.0.0" + fetch-blob "^3.1.4" + formdata-polyfill "^4.0.10" + node-forge@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" @@ -9287,18 +9958,44 @@ node-machine-id@1.1.12: resolved "https://registry.yarnpkg.com/node-machine-id/-/node-machine-id-1.1.12.tgz#37904eee1e59b320bb9c5d6c0a59f3b469cb6267" integrity sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ== -node-preload@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/node-preload/-/node-preload-0.2.1.tgz#c03043bb327f417a18fee7ab7ee57b408a144301" - integrity sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ== - dependencies: - process-on-spawn "^1.0.0" - node-releases@^2.0.14: version "2.0.14" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== +node-stdlib-browser@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/node-stdlib-browser/-/node-stdlib-browser-1.2.1.tgz#888fa104914af94143ca4d8a8980fe0ed242d2d1" + integrity sha512-dZezG3D88Lg22DwyjsDuUs7cCT/XGr8WwJgg/S3ZnkcWuPet2Tt/W1d2Eytb1Z73JpZv+XVCDI5TWv6UMRq0Gg== + dependencies: + assert "^2.0.0" + browser-resolve "^2.0.0" + browserify-zlib "^0.2.0" + buffer "^5.7.1" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + create-require "^1.1.1" + crypto-browserify "^3.11.0" + domain-browser "^4.22.0" + events "^3.0.0" + https-browserify "^1.0.0" + isomorphic-timers-promises "^1.0.1" + os-browserify "^0.3.0" + path-browserify "^1.0.1" + pkg-dir "^5.0.0" + process "^0.11.10" + punycode "^1.4.1" + querystring-es3 "^0.2.1" + readable-stream "^3.6.0" + stream-browserify "^3.0.0" + stream-http "^3.2.0" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.1" + url "^0.11.4" + util "^0.12.4" + vm-browserify "^1.0.1" + nopt@^7.0.0: version "7.2.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-7.2.1.tgz#1cac0eab9b8e97c9093338446eddd40b2c8ca1e7" @@ -9552,42 +10249,9 @@ nx@19.0.4, "nx@>=17.1.2 < 20": "@nx/nx-linux-x64-gnu" "19.0.4" "@nx/nx-linux-x64-musl" "19.0.4" "@nx/nx-win32-arm64-msvc" "19.0.4" - "@nx/nx-win32-x64-msvc" "19.0.4" - -nyc@^15.0.0: - version "15.1.0" - resolved "https://registry.yarnpkg.com/nyc/-/nyc-15.1.0.tgz#1335dae12ddc87b6e249d5a1994ca4bdaea75f02" - integrity sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A== - dependencies: - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - caching-transform "^4.0.0" - convert-source-map "^1.7.0" - decamelize "^1.2.0" - find-cache-dir "^3.2.0" - find-up "^4.1.0" - foreground-child "^2.0.0" - get-package-type "^0.1.0" - glob "^7.1.6" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-hook "^3.0.0" - istanbul-lib-instrument "^4.0.0" - istanbul-lib-processinfo "^2.0.2" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.0.2" - make-dir "^3.0.0" - node-preload "^0.2.1" - p-map "^3.0.0" - process-on-spawn "^1.0.0" - resolve-from "^5.0.0" - rimraf "^3.0.0" - signal-exit "^3.0.2" - spawn-wrap "^2.0.0" - test-exclude "^6.0.0" - yargs "^15.0.2" + "@nx/nx-win32-x64-msvc" "19.0.4" -object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.1: +object-assign@^4.0.1, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== @@ -9706,13 +10370,6 @@ on-finished@2.4.1: dependencies: ee-first "1.1.1" -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== - dependencies: - ee-first "1.1.1" - on-headers@~1.0.1, on-headers@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" @@ -9799,6 +10456,11 @@ os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== +outvariant@^1.4.0, outvariant@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/outvariant/-/outvariant-1.4.3.tgz#221c1bfc093e8fec7075497e7799fdbf43d14873" + integrity sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA== + p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -9870,13 +10532,6 @@ p-map@^2.0.0: resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== -p-map@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" - integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== - dependencies: - aggregate-error "^3.0.0" - p-pipe@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-3.1.0.tgz#48b57c922aa2e1af6a6404cb7c6bf0eb9cc8e60e" @@ -9926,15 +10581,32 @@ p-waterfall@2.1.1: dependencies: p-reduce "^2.0.0" -package-hash@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-4.0.0.tgz#3537f654665ec3cc38827387fc904c163c54f506" - integrity sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ== +pac-proxy-agent@^7.0.1: + version "7.0.2" + resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-7.0.2.tgz#0fb02496bd9fb8ae7eb11cfd98386daaac442f58" + integrity sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg== dependencies: - graceful-fs "^4.1.15" - hasha "^5.0.0" - lodash.flattendeep "^4.4.0" - release-zalgo "^1.0.0" + "@tootallnate/quickjs-emscripten" "^0.23.0" + agent-base "^7.0.2" + debug "^4.3.4" + get-uri "^6.0.1" + http-proxy-agent "^7.0.0" + https-proxy-agent "^7.0.5" + pac-resolver "^7.0.1" + socks-proxy-agent "^8.0.4" + +pac-resolver@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-7.0.1.tgz#54675558ea368b64d210fd9c92a640b5f3b8abb6" + integrity sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg== + dependencies: + degenerator "^5.0.0" + netmask "^2.0.2" + +package-json-from-dist@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== pacote@^17.0.5: version "17.0.7" @@ -9960,7 +10632,7 @@ pacote@^17.0.5: ssri "^10.0.0" tar "^6.1.11" -pako@~1.0.5: +pako@~1.0.2, pako@~1.0.5: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== @@ -10033,6 +10705,28 @@ parse-url@^8.1.0: dependencies: parse-path "^7.0.0" +parse5-htmlparser2-tree-adapter@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz#b5a806548ed893a43e24ccb42fbb78069311e81b" + integrity sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g== + dependencies: + domhandler "^5.0.3" + parse5 "^7.0.0" + +parse5-parser-stream@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz#d7c20eadc37968d272e2c02660fff92dd27e60e1" + integrity sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow== + dependencies: + parse5 "^7.0.0" + +parse5@^7.0.0, parse5@^7.1.2: + version "7.2.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.2.1.tgz#8928f55915e6125f430cc44309765bf17556a33a" + integrity sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ== + dependencies: + entities "^4.5.0" + parseurl@~1.3.2, parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" @@ -10056,6 +10750,11 @@ path-browserify@0.0.1: resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== +path-browserify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== + path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" @@ -10101,7 +10800,7 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-scurry@^1.11.0, path-scurry@^1.6.1: +path-scurry@^1.11.0, path-scurry@^1.11.1, path-scurry@^1.6.1: version "1.11.1" resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== @@ -10119,6 +10818,11 @@ path-to-regexp@2.2.1: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-2.2.1.tgz#90b617025a16381a879bc82a38d4e8bdeb2bcf45" integrity sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ== +path-to-regexp@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.3.0.tgz#2b6a26a337737a8e1416f9272ed0766b1c0389f4" + integrity sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ== + path-type@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" @@ -10141,11 +10845,6 @@ pathval@^1.1.1: resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== -pathval@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pathval/-/pathval-2.0.0.tgz#7e2550b422601d4f6b8e26f1301bc8f15a741a25" - integrity sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA== - pbkdf2@^3.0.3, pbkdf2@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" @@ -10157,12 +10856,17 @@ pbkdf2@^3.0.3, pbkdf2@^3.1.2: safe-buffer "^5.0.1" sha.js "^2.4.8" +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== + picocolors@^1.0.0, picocolors@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== -picocolors@^1.1.1: +picocolors@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== @@ -10172,6 +10876,11 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +picomatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab" + integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== + pify@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" @@ -10223,6 +10932,13 @@ pkg-dir@^4.1.0, pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" +pkg-dir@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760" + integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA== + dependencies: + find-up "^5.0.0" + platform@^1.3.3: version "1.3.6" resolved "https://registry.yarnpkg.com/platform/-/platform-1.3.6.tgz#48b4ce983164b209c2d45a107adb31f473a6e7a7" @@ -10298,12 +11014,12 @@ postcss@^8.2.15: source-map-js "^1.2.0" postcss@^8.4.43: - version "8.4.49" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.49.tgz#4ea479048ab059ab3ae61d082190fabfd994fe19" - integrity sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA== + version "8.4.47" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.47.tgz#5bf6c9a010f3e724c503bf03ef7947dcb0fea365" + integrity sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ== dependencies: nanoid "^3.3.7" - picocolors "^1.1.1" + picocolors "^1.1.0" source-map-js "^1.2.1" prelude-ls@^1.2.1: @@ -10331,6 +11047,15 @@ pretty-error@^4.0.0: lodash "^4.17.20" renderkid "^3.0.0" +pretty-format@^27.0.2: + version "27.5.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" + integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== + dependencies: + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^17.0.1" + pretty-format@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" @@ -10355,19 +11080,12 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -process-on-spawn@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/process-on-spawn/-/process-on-spawn-1.0.0.tgz#95b05a23073d30a17acfdc92a440efd2baefdc93" - integrity sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg== - dependencies: - fromentries "^1.2.0" - process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== -progress@^2.0.0: +progress@^2.0.0, progress@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== @@ -10414,6 +11132,20 @@ proxy-addr@~2.0.7: forwarded "0.2.0" ipaddr.js "1.9.1" +proxy-agent@^6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-6.4.0.tgz#b4e2dd51dee2b377748aef8d45604c2d7608652d" + integrity sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ== + dependencies: + agent-base "^7.0.2" + debug "^4.3.4" + http-proxy-agent "^7.0.1" + https-proxy-agent "^7.0.3" + lru-cache "^7.14.1" + pac-proxy-agent "^7.0.1" + proxy-from-env "^1.1.0" + socks-proxy-agent "^8.0.2" + proxy-from-env@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" @@ -10429,6 +11161,13 @@ pseudomap@^1.0.2: resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== +psl@^1.1.33: + version "1.10.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.10.0.tgz#1450f7e16f922c3beeb7bd9db3f312635018fa15" + integrity sha512-KSKHEbjAnpUuAUserOq0FxGXCUrzC3WniuSJhvdbs102rL55266ZcHBqLWOsG30spQMlPdpy7icATiAQehg/iA== + dependencies: + punycode "^2.3.1" + public-encrypt@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" @@ -10476,7 +11215,7 @@ punycode@^1.2.4, punycode@^1.3.2, punycode@^1.4.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== -punycode@^2.1.0: +punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== @@ -10486,12 +11225,7 @@ pure-rand@^2.0.0: resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-2.0.0.tgz#3324633545207907fe964c2f0ebf05d8e9a7f129" integrity sha512-mk98aayyd00xbfHgE3uEmAUGzz3jCdm8Mkf5DUXUhc7egmOaGG2D7qhVlynGenNe9VaNJZvzO9hkc8myuTkDgw== -qjobs@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" - integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg== - -qs@6.13.0: +qs@6.13.0, qs@^6.12.3: version "6.13.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906" integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== @@ -10505,7 +11239,12 @@ qs@^6.11.2: dependencies: side-channel "^1.0.6" -querystring-es3@^0.2.0: +query-selector-shadow-dom@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/query-selector-shadow-dom/-/query-selector-shadow-dom-1.0.1.tgz#1c7b0058eff4881ac44f45d8f84ede32e9a2f349" + integrity sha512-lT5yCqEBgfoMYpf3F2xQRK7zEr1rhIIZuceDK6+xRkJQ4NMbHTwXqk4NkwDwQMNqXgG9r9fyHnzwNVs6zV5KRw== + +querystring-es3@^0.2.0, querystring-es3@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" integrity sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA== @@ -10525,6 +11264,11 @@ queue-microtask@^1.2.2: resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== +queue-tick@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/queue-tick/-/queue-tick-1.0.1.tgz#f6f07ac82c1fd60f82e098b417a80e52f1f4c142" + integrity sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag== + quick-lru@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" @@ -10612,6 +11356,11 @@ react-is@^16.13.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== +react-is@^17.0.1: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + react-is@^18.0.0: version "18.3.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" @@ -10758,7 +11507,7 @@ read@^3.0.1: dependencies: mute-stream "^1.0.0" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@^2.3.8, readable-stream@~2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@^2.3.8, readable-stream@~2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== @@ -10771,7 +11520,7 @@ read@^3.0.1: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: +readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0: version "3.6.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== @@ -10780,6 +11529,24 @@ readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.0.6, readable string_decoder "^1.1.1" util-deprecate "^1.0.1" +readable-stream@^4.0.0: + version "4.5.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.5.2.tgz#9e7fc4c45099baeed934bff6eb97ba6cf2729e09" + integrity sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g== + dependencies: + abort-controller "^3.0.0" + buffer "^6.0.3" + events "^3.3.0" + process "^0.11.10" + string_decoder "^1.3.0" + +readdir-glob@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/readdir-glob/-/readdir-glob-1.1.3.tgz#c3d831f51f5e7bfa62fa2ffbe4b508c640f09584" + integrity sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA== + dependencies: + minimatch "^5.1.0" + readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" @@ -10789,13 +11556,6 @@ readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" -readdirp@~3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" - integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== - dependencies: - picomatch "^2.2.1" - readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -10917,13 +11677,6 @@ relateurl@^0.2.7: resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== -release-zalgo@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/release-zalgo/-/release-zalgo-1.0.0.tgz#09700b7e5074329739330e535c5a90fb67851730" - integrity sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA== - dependencies: - es6-error "^4.0.1" - remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" @@ -11011,7 +11764,7 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== -resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.4: +resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.20.0, resolve@^1.22.4: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -11029,6 +11782,13 @@ resolve@^2.0.0-next.5: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +resq@^1.11.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/resq/-/resq-1.11.0.tgz#edec8c58be9af800fd628118c0ca8815283de196" + integrity sha512-G10EBz+zAAy3zUd/CDoBbXRL6ia9kOo3xRHrMDsHljI0GDkhYlyjwoCx5+3eCC4swi1uCoZQhskuJkj7Gp57Bw== + dependencies: + fast-deep-equal "^2.0.1" + restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -11052,10 +11812,10 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rfdc@^1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.1.tgz#2b6d4df52dffe8bb346992a10ea9451f24373a8f" - integrity sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg== +rgb2hex@0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/rgb2hex/-/rgb2hex-0.2.5.tgz#f82230cd3ab1364fa73c99be3a691ed688f8dbdc" + integrity sha512-22MOP1Rh7sAo1BZpDG6R5RFYzR2lYEgwq7HEmyW2qcsOqR2lQKmn+O//xV3YG/0rrhMC6KVX2hU+ZXuaw9a5bw== rimraf@^2.5.4, rimraf@^2.6.3: version "2.7.1" @@ -11064,7 +11824,7 @@ rimraf@^2.5.4, rimraf@^2.6.3: dependencies: glob "^7.1.3" -rimraf@^3.0.0, rimraf@^3.0.2: +rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== @@ -11087,31 +11847,30 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: inherits "^2.0.1" rollup@^4.20.0: - version "4.28.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.28.1.tgz#7718ba34d62b449dfc49adbfd2f312b4fe0df4de" - integrity sha512-61fXYl/qNVinKmGSTHAZ6Yy8I3YIJC/r2m9feHo6SwVAVcLT5MPwOUFe7EuURA/4m0NR8lXG4BBXuo/IZEsjMg== + version "4.24.4" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.24.4.tgz#fdc76918de02213c95447c9ffff5e35dddb1d058" + integrity sha512-vGorVWIsWfX3xbcyAS+I047kFKapHYivmkaT63Smj77XwvLSJos6M1xGqZnBPFQFBRZDOcG1QnYEIxAvTr/HjA== dependencies: "@types/estree" "1.0.6" optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.28.1" - "@rollup/rollup-android-arm64" "4.28.1" - "@rollup/rollup-darwin-arm64" "4.28.1" - "@rollup/rollup-darwin-x64" "4.28.1" - "@rollup/rollup-freebsd-arm64" "4.28.1" - "@rollup/rollup-freebsd-x64" "4.28.1" - "@rollup/rollup-linux-arm-gnueabihf" "4.28.1" - "@rollup/rollup-linux-arm-musleabihf" "4.28.1" - "@rollup/rollup-linux-arm64-gnu" "4.28.1" - "@rollup/rollup-linux-arm64-musl" "4.28.1" - "@rollup/rollup-linux-loongarch64-gnu" "4.28.1" - "@rollup/rollup-linux-powerpc64le-gnu" "4.28.1" - "@rollup/rollup-linux-riscv64-gnu" "4.28.1" - "@rollup/rollup-linux-s390x-gnu" "4.28.1" - "@rollup/rollup-linux-x64-gnu" "4.28.1" - "@rollup/rollup-linux-x64-musl" "4.28.1" - "@rollup/rollup-win32-arm64-msvc" "4.28.1" - "@rollup/rollup-win32-ia32-msvc" "4.28.1" - "@rollup/rollup-win32-x64-msvc" "4.28.1" + "@rollup/rollup-android-arm-eabi" "4.24.4" + "@rollup/rollup-android-arm64" "4.24.4" + "@rollup/rollup-darwin-arm64" "4.24.4" + "@rollup/rollup-darwin-x64" "4.24.4" + "@rollup/rollup-freebsd-arm64" "4.24.4" + "@rollup/rollup-freebsd-x64" "4.24.4" + "@rollup/rollup-linux-arm-gnueabihf" "4.24.4" + "@rollup/rollup-linux-arm-musleabihf" "4.24.4" + "@rollup/rollup-linux-arm64-gnu" "4.24.4" + "@rollup/rollup-linux-arm64-musl" "4.24.4" + "@rollup/rollup-linux-powerpc64le-gnu" "4.24.4" + "@rollup/rollup-linux-riscv64-gnu" "4.24.4" + "@rollup/rollup-linux-s390x-gnu" "4.24.4" + "@rollup/rollup-linux-x64-gnu" "4.24.4" + "@rollup/rollup-linux-x64-musl" "4.24.4" + "@rollup/rollup-win32-arm64-msvc" "4.24.4" + "@rollup/rollup-win32-ia32-msvc" "4.24.4" + "@rollup/rollup-win32-x64-msvc" "4.24.4" fsevents "~2.3.2" run-async@^2.4.0: @@ -11140,6 +11899,11 @@ rxjs@^7.5.5: dependencies: tslib "^2.1.0" +safaridriver@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/safaridriver/-/safaridriver-0.1.2.tgz#166571d5881c7d6f884900d92d51ee1309c05aa4" + integrity sha512-4R309+gWflJktzPXBQCobbWEHlzC4aK3a+Ov3tz2Ib2aBxiwd11phkdIBH1l0EO22x24CJMUQkpKFumRriCSRg== + safe-array-concat@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb" @@ -11287,7 +12051,7 @@ semver@^7.0.0, semver@^7.1.1, semver@^7.2.1, semver@^7.3.4, semver@^7.3.5, semve resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== -semver@^7.5.4: +semver@^7.5.4, semver@^7.6.3: version "7.6.3" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== @@ -11311,10 +12075,17 @@ send@0.19.0: range-parser "~1.2.1" statuses "2.0.1" -serialize-javascript@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" - integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== +serialize-error@^11.0.3: + version "11.0.3" + resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-11.0.3.tgz#b54f439e15da5b4961340fbbd376b6b04aa52e92" + integrity sha512-2G2y++21dhj2R7iHAdd0FIzjGwuKZld+7Pl/bTU6YIkrC2ZMbVUjm+luj6A6V34Rv9XfKJDKpTWu9W4Gse1D9g== + dependencies: + type-fest "^2.12.2" + +serialize-javascript@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== dependencies: randombytes "^2.1.0" @@ -11421,7 +12192,7 @@ set-value@^2.0.0, set-value@^2.0.1: is-plain-object "^2.0.3" split-string "^3.0.1" -setimmediate@^1.0.4: +setimmediate@^1.0.4, setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== @@ -11495,7 +12266,7 @@ signal-exit@3.0.7, signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, s resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== -signal-exit@^4.0.1: +signal-exit@^4.0.1, signal-exit@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== @@ -11523,6 +12294,15 @@ sigstore@^2.2.0: "@sigstore/tuf" "^2.3.1" "@sigstore/verify" "^1.2.0" +sirv@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/sirv/-/sirv-3.0.0.tgz#f8d90fc528f65dff04cb597a88609d4e8a4361ce" + integrity sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg== + dependencies: + "@polka/url" "^1.0.0-next.24" + mrmime "^2.0.0" + totalist "^3.0.0" + slash@3.0.0, slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" @@ -11587,35 +12367,6 @@ snappyjs@^0.7.0: resolved "https://registry.yarnpkg.com/snappyjs/-/snappyjs-0.7.0.tgz#6096eac06382700ae7fdefa579dea5e2aa20f51c" integrity sha512-u5iEEXkMe2EInQio6Wv9LWHOQYRDbD2O9hzS27GpT/lwfIQhTCnHCTqedqHIHe9ZcvQo+9au6vngQayipz1NYw== -socket.io-adapter@~2.5.2: - version "2.5.4" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.5.4.tgz#4fdb1358667f6d68f25343353bd99bd11ee41006" - integrity sha512-wDNHGXGewWAjQPt3pyeYBtpWSq9cLE5UW1ZUPL/2eGK9jtse/FpXib7epSTsz0Q0m+6sg6Y4KtcFTlah1bdOVg== - dependencies: - debug "~4.3.4" - ws "~8.11.0" - -socket.io-parser@~4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.4.tgz#c806966cf7270601e47469ddeec30fbdfda44c83" - integrity sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew== - dependencies: - "@socket.io/component-emitter" "~3.1.0" - debug "~4.3.1" - -socket.io@^4.7.2: - version "4.7.5" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.7.5.tgz#56eb2d976aef9d1445f373a62d781a41c7add8f8" - integrity sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA== - 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" - sockjs-client@^1.5.0: version "1.6.1" resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.6.1.tgz#350b8eda42d6d52ddc030c39943364c11dcad806" @@ -11645,6 +12396,15 @@ socks-proxy-agent@^7.0.0: debug "^4.3.3" socks "^2.6.2" +socks-proxy-agent@^8.0.2, socks-proxy-agent@^8.0.4: + version "8.0.4" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz#9071dca17af95f483300316f4b063578fa0db08c" + integrity sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw== + dependencies: + agent-base "^7.1.1" + debug "^4.3.4" + socks "^2.8.3" + socks-proxy-agent@^8.0.3: version "8.0.3" resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz#6b2da3d77364fde6292e810b496cb70440b9b89d" @@ -11654,7 +12414,7 @@ socks-proxy-agent@^8.0.3: debug "^4.3.4" socks "^2.7.1" -socks@^2.6.2, socks@^2.7.1: +socks@^2.6.2, socks@^2.7.1, socks@^2.8.3: version "2.8.3" resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.3.tgz#1ebd0f09c52ba95a09750afe3f3f9f724a800cb5" integrity sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw== @@ -11723,17 +12483,10 @@ source-map@^0.7.4: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== -spawn-wrap@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-2.0.0.tgz#103685b8b8f9b79771318827aa78650a610d457e" - integrity sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg== - dependencies: - foreground-child "^2.0.0" - is-windows "^1.0.2" - make-dir "^3.0.0" - rimraf "^3.0.0" - signal-exit "^3.0.2" - which "^2.0.1" +spacetrim@0.11.59: + version "0.11.59" + resolved "https://registry.yarnpkg.com/spacetrim/-/spacetrim-0.11.59.tgz#b9cf378b5d1ab9ed729d4c7c3e4412ec00a187b9" + integrity sha512-lLYsktklSRKprreOm7NXReW8YiX2VBjbgmXYEziOoGf/qsJqAEACaDvoTtUOycwjpaSh+bT8eu0KrJn7UNxiCg== spdx-correct@^3.0.0: version "3.2.0" @@ -11798,6 +12551,11 @@ split2@^3.2.2: dependencies: readable-stream "^3.0.0" +split2@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" + integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== + split@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" @@ -11849,16 +12607,21 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" -statuses@2.0.1: +statuses@2.0.1, statuses@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== -"statuses@>= 1.4.0 < 2", statuses@~1.5.0: +"statuses@>= 1.4.0 < 2": version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== +std-env@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.7.0.tgz#c9f7386ced6ecf13360b6c6c55b8aaa4ef7481d2" + integrity sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg== + std-env@^3.8.0: version "3.8.0" resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.8.0.tgz#b56ffc1baf1a29dcc80a3bdf11d7fca7c315e7d5" @@ -11872,6 +12635,14 @@ stream-browserify@^2.0.1: inherits "~2.0.1" readable-stream "^2.0.2" +stream-browserify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" + integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA== + dependencies: + inherits "~2.0.4" + readable-stream "^3.5.0" + stream-each@^1.1.0: version "1.2.3" resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" @@ -11891,19 +12662,36 @@ stream-http@^2.7.2: to-arraybuffer "^1.0.0" xtend "^4.0.0" +stream-http@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-3.2.0.tgz#1872dfcf24cb15752677e40e5c3f9cc1926028b5" + integrity sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.4" + readable-stream "^3.6.0" + xtend "^4.0.2" + stream-shift@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.3.tgz#85b8fab4d71010fc3ba8772e8046cc49b8a3864b" integrity sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ== -streamroller@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-3.1.5.tgz#1263182329a45def1ffaef58d31b15d13d2ee7ff" - integrity sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw== +streamx@^2.15.0, streamx@^2.20.0: + version "2.20.1" + resolved "https://registry.yarnpkg.com/streamx/-/streamx-2.20.1.tgz#471c4f8b860f7b696feb83d5b125caab2fdbb93c" + integrity sha512-uTa0mU6WUC65iUvzKH4X9hEdvSW7rbPxPtwfWiLMSj3qTdQbAiUboZTxauKfpFuGIGa1C2BYijZ7wgdUXICJhA== dependencies: - date-format "^4.0.14" - debug "^4.3.4" - fs-extra "^8.1.0" + fast-fifo "^1.3.2" + queue-tick "^1.0.1" + text-decoder "^1.1.0" + optionalDependencies: + bare-events "^2.2.0" + +strict-event-emitter@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz#1602ece81c51574ca39c6815e09f1a3e8550bd93" + integrity sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ== "string-width-cjs@npm:string-width@^4.2.0": version "4.2.3" @@ -11914,14 +12702,6 @@ streamroller@^3.1.5: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" @@ -11931,6 +12711,14 @@ streamroller@^3.1.5: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string-width@^2.0.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" @@ -11995,7 +12783,7 @@ string.prototype.trimstart@^1.0.8: define-properties "^1.2.1" es-object-atoms "^1.0.0" -string_decoder@^1.0.0, string_decoder@^1.1.1: +string_decoder@^1.0.0, string_decoder@^1.1.1, string_decoder@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== @@ -12044,7 +12832,7 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" -strip-ansi@^7.0.1: +strip-ansi@^7.0.1, strip-ansi@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== @@ -12088,6 +12876,11 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== +strnum@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db" + integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== + strong-log-transformer@2.1.0, strong-log-transformer@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" @@ -12156,6 +12949,26 @@ tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== +tar-fs@^3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-3.0.6.tgz#eaccd3a67d5672f09ca8e8f9c3d2b89fa173f217" + integrity sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w== + dependencies: + pump "^3.0.0" + tar-stream "^3.1.5" + optionalDependencies: + bare-fs "^2.1.1" + bare-path "^2.1.0" + +tar-stream@^3.0.0, tar-stream@^3.1.5: + version "3.1.7" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-3.1.7.tgz#24b3fb5eabada19fe7338ed6d26e5f7c482e792b" + integrity sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ== + dependencies: + b4a "^1.6.4" + fast-fifo "^1.2.0" + streamx "^2.15.0" + tar-stream@~2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" @@ -12236,14 +13049,19 @@ terser@^5.10.0, terser@^5.26.0: commander "^2.20.0" source-map-support "~0.5.20" -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== +test-exclude@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-7.0.1.tgz#20b3ba4906ac20994e275bbcafd68d510264c2a2" + integrity sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg== dependencies: "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" + glob "^10.4.1" + minimatch "^9.0.4" + +text-decoder@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/text-decoder/-/text-decoder-1.2.1.tgz#e173f5121d97bfa3ff8723429ad5ba92e1ead67e" + integrity sha512-x9v3H/lTKIJKQQe7RPQkLfKAnc9lUTkWDypIQgTzPJAq+5/GCDHonmshfvlsNSj58yyshbIJJDLmU15qNERrXQ== text-extensions@^1.0.0: version "1.9.0" @@ -12284,7 +13102,7 @@ through2@^2.0.0: readable-stream "~2.3.6" xtend "~4.0.1" -through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6: +through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== @@ -12319,9 +13137,9 @@ tinyexec@^0.3.1: integrity sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ== tinypool@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-1.0.2.tgz#706193cc532f4c100f66aa00b01c42173d9051b2" - integrity sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA== + version "1.0.1" + resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-1.0.1.tgz#c64233c4fac4304e109a64340178760116dbe1fe" + integrity sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA== tinyrainbow@^1.2.0: version "1.2.0" @@ -12392,6 +13210,21 @@ toidentifier@1.0.1: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== +totalist@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8" + integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ== + +tough-cookie@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.4.tgz#945f1461b45b5a8c76821c33ea49c3ac192c1b36" + integrity sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.2.0" + url-parse "^1.5.3" + tr46@~0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" @@ -12466,11 +13299,21 @@ tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.2.0, tslib@^2.3.0, tslib@^2.4 resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== +tslib@^2.0.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" integrity sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw== +tty-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811" + integrity sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw== + tuf-js@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/tuf-js/-/tuf-js-1.1.7.tgz#21b7ae92a9373015be77dfe0cb282a80ec3bbe43" @@ -12501,10 +13344,15 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" -type-detect@^4.0.0, type-detect@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== +type-detect@^4.0.0, type-detect@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.1.0.tgz#deb2453e8f08dcae7ae98c626b13dddb0155906c" + integrity sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw== + +type-fest@4.26.0: + version "4.26.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.26.0.tgz#703f263af10c093cd6277d079e26b9e17d517c4b" + integrity sha512-OduNjVJsFbifKb57UqZ2EMP1i4u64Xwow3NYXUtBbD4vIwJdQd4+xl8YDou1dlm4DVrtwT/7Ky8z8WyCULVfxw== type-fest@^0.18.0: version "0.18.1" @@ -12531,11 +13379,21 @@ type-fest@^0.6.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== -type-fest@^0.8.0, type-fest@^0.8.1: +type-fest@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== +type-fest@^2.12.2: + version "2.19.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" + integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== + +type-fest@^4.26.1: + version "4.26.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.26.1.tgz#a4a17fa314f976dd3e6d6675ef6c775c16d7955e" + integrity sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg== + type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -12588,13 +13446,6 @@ typed-array-length@^1.0.6: is-typed-array "^1.1.13" possible-typed-array-names "^1.0.0" -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -12605,11 +13456,6 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== -ua-parser-js@^0.7.30: - version "0.7.37" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.37.tgz#e464e66dac2d33a7a1251d7d7a99d6157ec27832" - integrity sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA== - uglify-js@^3.1.4: version "3.17.4" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" @@ -12625,11 +13471,24 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" +unbzip2-stream@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" + integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== + dependencies: + buffer "^5.2.1" + through "^2.3.8" + undici-types@~5.26.4: version "5.26.5" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== +undici-types@~6.19.2: + version "6.19.8" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" + integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== + undici-types@~6.20.0: version "6.20.0" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433" @@ -12642,6 +13501,11 @@ undici@^5.25.4: dependencies: "@fastify/busboy" "^2.0.0" +undici@^6.19.5: + version "6.20.1" + resolved "https://registry.yarnpkg.com/undici/-/undici-6.20.1.tgz#fbb87b1e2b69d963ff2d5410a40ffb4c9e81b621" + integrity sha512-AjQF1QsmqfJys+LXfGTNum+qw4S88CojRInG/6t31W/1fk6G59s92bnAvGz5Cmur+kQv2SURXEvvudLmbrE8QA== + unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" @@ -12708,10 +13572,10 @@ universal-user-agent@^6.0.0: resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.1.tgz#15f20f55da3c930c57bddbf1734c6654d5fd35aa" integrity sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ== -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== +universalify@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" + integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== universalify@^2.0.0: version "2.0.1" @@ -12769,7 +13633,7 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== -url-parse@^1.5.10: +url-parse@^1.5.10, url-parse@^1.5.3: version "1.5.10" resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== @@ -12793,11 +13657,29 @@ url@^0.11.0: punycode "^1.4.1" qs "^6.11.2" +url@^0.11.4: + version "0.11.4" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.4.tgz#adca77b3562d56b72746e76b330b7f27b6721f3c" + integrity sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg== + dependencies: + punycode "^1.4.1" + qs "^6.12.3" + +urlpattern-polyfill@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz#f0a03a97bfb03cdf33553e5e79a2aadd22cac8ec" + integrity sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg== + use@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== +userhome@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/userhome/-/userhome-1.0.1.tgz#cdfa80715113b4d706b6ecbe2e2c26f158b121d5" + integrity sha512-5cnLm4gseXjAclKowC4IjByaGsjtAoV6PrOQOljplNB54ReUYJP8HdAFq2muHinSDAh09PPX/uXDPfdxRHvuSA== + util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -12817,7 +13699,7 @@ util@^0.11.0: dependencies: inherits "2.0.3" -util@^0.12.4: +util@^0.12.4, util@^0.12.5: version "0.12.5" resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== @@ -12895,11 +13777,21 @@ validate-npm-package-name@^5.0.0: resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz#a316573e9b49f3ccd90dbb6eb52b3f06c6d604e8" integrity sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ== -vary@^1, vary@~1.1.2: +vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== +vite-node@2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-2.1.4.tgz#97ffb6de913fd8d42253afe441f9512e9dbdfd5c" + integrity sha512-kqa9v+oi4HwkG6g8ufRnb5AeplcRw8jUF6/7/Qz1qRQOXHImG8YnLbB+LLszENwFnoBl9xIf9nVdCFzNd7GQEg== + dependencies: + cac "^6.7.14" + debug "^4.3.7" + pathe "^1.1.2" + vite "^5.0.0" + vite-node@2.1.8: version "2.1.8" resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-2.1.8.tgz#9495ca17652f6f7f95ca7c4b568a235e0c8dbac5" @@ -12911,10 +13803,18 @@ vite-node@2.1.8: pathe "^1.1.2" vite "^5.0.0" +vite-plugin-node-polyfills@^0.22.0: + version "0.22.0" + resolved "https://registry.yarnpkg.com/vite-plugin-node-polyfills/-/vite-plugin-node-polyfills-0.22.0.tgz#d0afcf82eb985fc02244620d7cec1ddd1c6e0864" + integrity sha512-F+G3LjiGbG8QpbH9bZ//GSBr9i1InSTkaulfUHFa9jkLqVGORFBoqc2A/Yu5Mmh1kNAbiAeKeK+6aaQUf3x0JA== + dependencies: + "@rollup/plugin-inject" "^5.0.5" + node-stdlib-browser "^1.2.0" + vite@^5.0.0: - version "5.4.11" - resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.11.tgz#3b415cd4aed781a356c1de5a9ebafb837715f6e5" - integrity sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q== + version "5.4.10" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.10.tgz#d358a7bd8beda6cf0f3b7a450a8c7693a4f80c18" + integrity sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ== dependencies: esbuild "^0.21.3" postcss "^8.4.43" @@ -12948,15 +13848,45 @@ vitest@^2.0.4: vite-node "2.1.8" why-is-node-running "^2.3.0" +vitest@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/vitest/-/vitest-2.1.4.tgz#ba8f4589fb639cf5a9e6af54781667312b3e8230" + integrity sha512-eDjxbVAJw1UJJCHr5xr/xM86Zx+YxIEXGAR+bmnEID7z9qWfoxpHw0zdobz+TQAFOLT+nEXz3+gx6nUJ7RgmlQ== + dependencies: + "@vitest/expect" "2.1.4" + "@vitest/mocker" "2.1.4" + "@vitest/pretty-format" "^2.1.4" + "@vitest/runner" "2.1.4" + "@vitest/snapshot" "2.1.4" + "@vitest/spy" "2.1.4" + "@vitest/utils" "2.1.4" + chai "^5.1.2" + debug "^4.3.7" + expect-type "^1.1.0" + magic-string "^0.30.12" + pathe "^1.1.2" + std-env "^3.7.0" + tinybench "^2.9.0" + tinyexec "^0.3.1" + tinypool "^1.0.1" + tinyrainbow "^1.2.0" + vite "^5.0.0" + vite-node "2.1.4" + why-is-node-running "^2.3.0" + vm-browserify@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== -void-elements@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" - integrity sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung== +wait-port@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/wait-port/-/wait-port-1.1.0.tgz#e5d64ee071118d985e2b658ae7ad32b2ce29b6b5" + integrity sha512-3e04qkoN3LxTMLakdqeWth8nih8usyg+sf1Bgdf9wwUkp05iuK1eSY/QpLvscT/+F/gA89+LpUmmgBtesbqI2Q== + dependencies: + chalk "^4.1.2" + commander "^9.3.0" + debug "^4.3.4" watchpack-chokidar2@^2.0.1: version "2.0.1" @@ -12998,6 +13928,59 @@ wcwidth@^1.0.0, wcwidth@^1.0.1: dependencies: defaults "^1.0.3" +web-streams-polyfill@^3.0.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz#2073b91a2fdb1fbfbd401e7de0ac9f8214cecb4b" + integrity sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw== + +webdriver@9.2.8: + version "9.2.8" + resolved "https://registry.yarnpkg.com/webdriver/-/webdriver-9.2.8.tgz#09c5d0bf13ef1788a35439ecb5826e30e19609f9" + integrity sha512-40NtUC1zME9tPHNfZv6ETSE3+aE75qZuKjbVAA0gj02AkO1Nl3yJmf5RLdaLLfIQ2WlrbRP1g8KXlkiiVCmakg== + dependencies: + "@types/node" "^20.1.0" + "@types/ws" "^8.5.3" + "@wdio/config" "9.2.8" + "@wdio/logger" "9.1.3" + "@wdio/protocols" "9.2.2" + "@wdio/types" "9.2.2" + "@wdio/utils" "9.2.8" + deepmerge-ts "^7.0.3" + ws "^8.8.0" + +webdriverio@^9.2.11: + version "9.2.11" + resolved "https://registry.yarnpkg.com/webdriverio/-/webdriverio-9.2.11.tgz#731f347d3c04b67693e8c586dd6287be5696772f" + integrity sha512-JZJiFUy7Rv5C2PmCIN2GjPxp6qUrUhvlhshbrczkySLUmv1NW1EGWOwpJiJ9AFQC94ydDq80EdFaRdyNZSs6DQ== + dependencies: + "@types/node" "^20.11.30" + "@types/sinonjs__fake-timers" "^8.1.5" + "@wdio/config" "9.2.8" + "@wdio/logger" "9.1.3" + "@wdio/protocols" "9.2.2" + "@wdio/repl" "9.0.8" + "@wdio/types" "9.2.2" + "@wdio/utils" "9.2.8" + archiver "^7.0.1" + aria-query "^5.3.0" + cheerio "^1.0.0-rc.12" + css-shorthand-properties "^1.1.1" + css-value "^0.0.1" + grapheme-splitter "^1.0.4" + htmlfy "^0.3.0" + import-meta-resolve "^4.0.0" + is-plain-obj "^4.1.0" + jszip "^3.10.1" + lodash.clonedeep "^4.5.0" + lodash.zip "^4.2.0" + minimatch "^9.0.3" + query-selector-shadow-dom "^1.0.1" + resq "^1.11.0" + rgb2hex "0.2.5" + serialize-error "^11.0.3" + urlpattern-polyfill "^10.0.0" + webdriver "9.2.8" + webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" @@ -13080,13 +14063,6 @@ webpack-log@^2.0.0: ansi-colors "^3.0.0" uuid "^3.3.2" -webpack-merge@^4.1.5: - version "4.2.2" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" - integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== - dependencies: - lodash "^4.17.15" - webpack-merge@^5.7.3: version "5.10.0" resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177" @@ -13181,6 +14157,18 @@ websocket-extensions@>=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== +whatwg-encoding@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz#d0f4ef769905d426e1688f3e34381a99b60b76e5" + integrity sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ== + dependencies: + iconv-lite "0.6.3" + +whatwg-mimetype@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz#bc1bf94a985dc50388d54a9258ac405c3ca2fc0a" + integrity sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg== + whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" @@ -13244,14 +14232,14 @@ which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.2, gopd "^1.0.1" has-tostringtag "^1.0.2" -which@2.0.2, which@^2.0.1: +which@2.0.2, which@^2.0.1, which@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" -which@^1.2.1, which@^1.2.9: +which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -13273,13 +14261,6 @@ why-is-node-running@^2.3.0: siginfo "^2.0.0" stackback "0.0.2" -wide-align@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - wide-align@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" @@ -13323,10 +14304,10 @@ workerize-loader@^1.3.0: dependencies: loader-utils "^2.0.0" -workerpool@6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.1.0.tgz#a8e038b4c94569596852de7a8ea4228eefdeb37b" - integrity sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg== +workerpool@6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b" + integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A== "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" @@ -13395,16 +14376,6 @@ write-file-atomic@^2.4.2: imurmurhash "^0.1.4" signal-exit "^3.0.2" -write-file-atomic@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - write-json-file@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-3.2.0.tgz#65bbdc9ecd8a1458e15952770ccbadfcff5fe62a" @@ -13433,10 +14404,10 @@ ws@^6.2.1: dependencies: async-limiter "~1.0.0" -ws@~8.11.0: - version "8.11.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143" - integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg== +ws@^8.18.0, ws@^8.8.0: + version "8.18.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" + integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== x-path@^0.0.2: version "0.0.2" @@ -13466,7 +14437,7 @@ xmlbuilder@~11.0.0: resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== -xtend@^4.0.0, xtend@~4.0.1: +xtend@^4.0.0, xtend@^4.0.2, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== @@ -13519,14 +14490,6 @@ yargs-parser@^13.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - yargs-parser@^20.2.2, yargs-parser@^20.2.3: version "20.2.9" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" @@ -13542,7 +14505,7 @@ yargs-unparser@2.0.0: flat "^5.0.2" is-plain-obj "^2.1.0" -yargs@16.2.0, yargs@^16.1.1, yargs@^16.2.0: +yargs@16.2.0, yargs@^16.2.0: version "16.2.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== @@ -13555,7 +14518,7 @@ yargs@16.2.0, yargs@^16.1.1, yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@17.7.2, yargs@^17.1.1, yargs@^17.6.2: +yargs@17.7.2, yargs@^17.1.1, yargs@^17.6.2, yargs@^17.7.2: version "17.7.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== @@ -13584,22 +14547,13 @@ yargs@^13.3.2: y18n "^4.0.0" yargs-parser "^13.1.2" -yargs@^15.0.2: - version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== +yauzl@^2.10.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" yn@3.1.1: version "3.1.1" @@ -13610,3 +14564,17 @@ yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +yoctocolors-cjs@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz#f4b905a840a37506813a7acaa28febe97767a242" + integrity sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA== + +zip-stream@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-6.0.1.tgz#e141b930ed60ccaf5d7fa9c8260e0d1748a2bbfb" + integrity sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA== + dependencies: + archiver-utils "^5.0.0" + compress-commons "^6.0.2" + readable-stream "^4.0.0"