diff --git a/.benchrc.yaml b/.benchrc.yaml index 4772b534..121251e8 100644 --- a/.benchrc.yaml +++ b/.benchrc.yaml @@ -1,10 +1,8 @@ -# Mocha opts -colors: true -require: - - ts-node/register - - setHasher.mjs - # benchmark opts threshold: 3 -maxMs: 60_000 +maxMs: 60000 minRuns: 10 +triggerGC: false +sort: true +setupFiles: + - ./setHasher.mjs diff --git a/.eslintrc.cjs b/.eslintrc.cjs index bce205f9..f4f80412 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -4,7 +4,6 @@ module.exports = { browser: true, es6: true, node: true, - mocha: true, }, globals: { BigInt: true, @@ -79,9 +78,6 @@ module.exports = { quotes: ["error", "double"], semi: "off", - // Prevents accidentally pushing a commit with .only in Mocha tests - "no-only-tests/no-only-tests": "error", - // TEMP Disabled while eslint-plugin-import support ESM (Typescript does support it) https://github.com/import-js/eslint-plugin-import/issues/2170 "import/no-unresolved": "off", }, diff --git a/package.json b/package.json index 7866cf53..3a7e34d2 100644 --- a/package.json +++ b/package.json @@ -26,9 +26,7 @@ "@babel/preset-react": "^7.14.5", "@babel/preset-typescript": "^7.14.5", "@babel/register": "^7.15.3", - "@dapplion/benchmark": "^0.2.2", - "@types/chai": "^4.2.15", - "@types/mocha": "^8.2.2", + "@chainsafe/benchmark": "^1.1.0", "@types/node": "^22.10.2", "@typescript-eslint/eslint-plugin": "^6", "@typescript-eslint/parser": "^6", @@ -41,7 +39,6 @@ "eslint-plugin-node": "^11.1.0", "eslint-plugin-prettier": "^3.3.1", "lerna": "^8.1.3", - "mocha": "^9.0.1", "prettier": "^2.2.1", "ts-loader": "^9.5.1", "ts-node": "^10.9.2", @@ -54,7 +51,6 @@ "webpack-dev-server": "^3.11.2" }, "resolutions": { - "@types/react": "^17.0", - "chai": "4.5.0" + "@types/react": "^17.0" } -} \ No newline at end of file +} diff --git a/packages/as-sha256/package.json b/packages/as-sha256/package.json index 104d6e16..3e2edd4f 100644 --- a/packages/as-sha256/package.json +++ b/packages/as-sha256/package.json @@ -47,7 +47,6 @@ }, "devDependencies": { "@chainsafe/babel-plugin-inline-binary-import": "^1.0.3", - "assemblyscript": "^0.27.24", - "benchmark": "^2.1.4" + "assemblyscript": "^0.27.24" } } \ No newline at end of file diff --git a/packages/as-sha256/test/perf/index.test.ts b/packages/as-sha256/test/perf/index.test.ts index 6fa0d465..ff38f1d5 100644 --- a/packages/as-sha256/test/perf/index.test.ts +++ b/packages/as-sha256/test/perf/index.test.ts @@ -1,4 +1,4 @@ -import {itBench, setBenchOpts} from "@dapplion/benchmark"; +import {bench, describe, setBenchOpts} from "@chainsafe/benchmark"; import { digest, digest2Bytes32, @@ -26,15 +26,15 @@ describe("digestTwoHashObjects vs digest64 vs digest", () => { const obj2 = byteArrayToHashObject(buffer2, 0); // total number of time running hash for 200000 balances const iterations = 50023; - itBench(`digestTwoHashObjects ${iterations} times`, () => { + bench(`digestTwoHashObjects ${iterations} times`, () => { for (let j = 0; j < iterations; j++) digest64HashObjects(obj1, obj2); }); - itBench(`digest2Bytes32 ${iterations} times`, () => { + bench(`digest2Bytes32 ${iterations} times`, () => { for (let j = 0; j < iterations; j++) digest2Bytes32(buffer1, buffer2); }); - itBench(`digest ${iterations} times`, () => { + bench(`digest ${iterations} times`, () => { for (let j = 0; j < iterations; j++) digest(input); }); }); @@ -45,7 +45,7 @@ describe("digest different Buffers", () => { for (const length of [32, 64, 128, 256, 512, 1024]) { const buffer = randomBuffer(length); - itBench(`input length ${length}`, () => { + bench(`input length ${length}`, () => { digest(buffer); }); } @@ -64,7 +64,7 @@ describe("hash - compare to java", () => { const iterations = 1000000; const input = Buffer.from("lwkjt23uy45pojsdf;lnwo45y23po5i;lknwe;lknasdflnqw3uo5", "utf8"); - itBench(`digest ${iterations} times`, () => { + bench(`digest ${iterations} times`, () => { for (let i = 0; i < iterations; i++) digest(input); }); }); @@ -81,12 +81,12 @@ describe("utils", () => { // total number of time running hash for 200000 balances const iterations = 50023; - itBench(`hashObjectToByteArray ${iterations} times`, () => { + bench(`hashObjectToByteArray ${iterations} times`, () => { const byteArr = new Uint8Array(32); for (let j = 0; j < iterations; j++) hashObjectToByteArray(obj1, byteArr, 0); }); - itBench(`byteArrayToHashObject ${iterations} times`, () => { + bench(`byteArrayToHashObject ${iterations} times`, () => { for (let j = 0; j < iterations; j++) byteArrayToHashObject(buffer1, 0); }); }); diff --git a/packages/as-sha256/test/perf/simd.test.ts b/packages/as-sha256/test/perf/simd.test.ts index 1c3e06a6..0d71705b 100644 --- a/packages/as-sha256/test/perf/simd.test.ts +++ b/packages/as-sha256/test/perf/simd.test.ts @@ -1,4 +1,4 @@ -import {itBench, setBenchOpts} from "@dapplion/benchmark"; +import {bench, describe, setBenchOpts} from "@chainsafe/benchmark"; import {batchHash4HashObjectInputs, batchHash4UintArray64s, digest64, digest64HashObjects} from "../../src/index.js"; import {byteArrayToHashObject} from "../../src/hashObject.js"; @@ -12,8 +12,6 @@ import {byteArrayToHashObject} from "../../src/hashObject.js"; ✓ hash 200092 times using batchHash4HashObjectInputs 9.211751 ops/s 108.5570 ms/op - 88 runs 10.1 s */ describe("digest64 vs batchHash4UintArray64s vs digest64HashObjects vs batchHash4HashObjectInputs", function () { - this.timeout(0); - setBenchOpts({ minMs: 10_000, }); @@ -21,25 +19,25 @@ describe("digest64 vs batchHash4UintArray64s vs digest64HashObjects vs batchHash const input = Buffer.from("gajindergajindergajindergajindergajindergajindergajindergajinder", "utf8"); // total number of time running hash for 200000 balances const iterations = 50023; - itBench(`digest64 ${iterations * 4} times`, () => { + bench(`digest64 ${iterations * 4} times`, () => { for (let j = 0; j < iterations * 4; j++) digest64(input); }); // batchHash4UintArray64s do 4 sha256 in parallel - itBench(`hash ${iterations * 4} times using batchHash4UintArray64s`, () => { + bench(`hash ${iterations * 4} times using batchHash4UintArray64s`, () => { for (let j = 0; j < iterations; j++) { batchHash4UintArray64s([input, input, input, input]); } }); const hashObject = byteArrayToHashObject(Buffer.from("gajindergajindergajindergajinder", "utf8"), 0); - itBench(`digest64HashObjects ${iterations * 4} times`, () => { + bench(`digest64HashObjects ${iterations * 4} times`, () => { for (let j = 0; j < iterations * 4; j++) digest64HashObjects(hashObject, hashObject); }); const hashInputs = Array.from({length: 8}, () => hashObject); // batchHash4HashObjectInputs do 4 sha256 in parallel - itBench(`hash ${iterations * 4} times using batchHash4HashObjectInputs`, () => { + bench(`hash ${iterations * 4} times using batchHash4HashObjectInputs`, () => { for (let j = 0; j < iterations; j++) { batchHash4HashObjectInputs(hashInputs); } diff --git a/packages/persistent-merkle-tree/test/perf/gindex.test.ts b/packages/persistent-merkle-tree/test/perf/gindex.test.ts index f4d66101..83df559b 100644 --- a/packages/persistent-merkle-tree/test/perf/gindex.test.ts +++ b/packages/persistent-merkle-tree/test/perf/gindex.test.ts @@ -1,4 +1,4 @@ -import {itBench} from "@dapplion/benchmark"; +import {describe, bench} from "@chainsafe/benchmark"; import {getGindexBits, getGindicesAtDepth, gindexIterator, iterateAtDepth} from "../../src/index.js"; describe("gindices at depth", () => { @@ -9,14 +9,14 @@ describe("gindices at depth", () => { // ✓ getGindicesAtDepth 188146.8 ops/s 5.315000 us/op x0.587 1788863 runs 10.1 s // ✓ iterateAtDepth 89047.20 ops/s 11.23000 us/op x0.977 867266 runs 10.0 s - itBench("getGindicesAtDepth", () => { + bench("getGindicesAtDepth", () => { const gindices = getGindicesAtDepth(depth, startIx, count); for (let i = 0; i < gindices.length; i++) { // } }); - itBench("iterateAtDepth", () => { + bench("iterateAtDepth", () => { for (let gindex of iterateAtDepth(depth, BigInt(startIx), BigInt(count))) { // eslint-disable-next-line @typescript-eslint/no-unused-vars gindex++; @@ -30,14 +30,14 @@ describe("gindex bits", () => { // ✓ getGindexBits 1381215 ops/s 724.0000 ns/op - 9967639 runs 10.6 s // ✓ gindexIterator 801282.1 ops/s 1.248000 us/op - 6466357 runs 10.2 s - itBench("getGindexBits", () => { + bench("getGindexBits", () => { const bits = getGindexBits(gindex); for (let i = 0; i < bits.length; i++) { !!bits[i]; } }); - itBench("gindexIterator", () => { + bench("gindexIterator", () => { for (const bit of gindexIterator(gindex)) { !!bit; } diff --git a/packages/persistent-merkle-tree/test/perf/hashComputation.test.ts b/packages/persistent-merkle-tree/test/perf/hashComputation.test.ts index dee96bdc..f8ca1979 100644 --- a/packages/persistent-merkle-tree/test/perf/hashComputation.test.ts +++ b/packages/persistent-merkle-tree/test/perf/hashComputation.test.ts @@ -1,5 +1,5 @@ -import {itBench} from "@dapplion/benchmark"; -import { HashComputation, HashComputationLevel, LeafNode, zeroHash } from "../../src/index.js"; +import {describe, bench} from "@chainsafe/benchmark"; +import {HashComputation, HashComputationLevel, LeafNode, zeroHash} from "../../src/index.js"; /** * HashComputationLevel push then loop is faster than HashComputation[] push then loop @@ -15,7 +15,7 @@ describe("HashComputationLevel", function () { const length = 2_000_000; - itBench({ + bench({ id: "HashComputationLevel.push then loop", before: () => new HashComputationLevel(), beforeEach: (level) => { @@ -30,10 +30,10 @@ describe("HashComputationLevel", function () { for (const hc of level) { const {src0, src1, dest} = hc; } - } + }, }); - itBench({ + bench({ id: "HashComputation[] push then loop", fn: () => { const level: HashComputation[] = []; @@ -43,6 +43,6 @@ describe("HashComputationLevel", function () { for (const hc of level) { const {src0, src1, dest} = hc; } - } - }) + }, + }); }); diff --git a/packages/persistent-merkle-tree/test/perf/hasher.test.ts b/packages/persistent-merkle-tree/test/perf/hasher.test.ts index 85f0f99b..bb306866 100644 --- a/packages/persistent-merkle-tree/test/perf/hasher.test.ts +++ b/packages/persistent-merkle-tree/test/perf/hasher.test.ts @@ -1,4 +1,4 @@ -import {itBench} from "@dapplion/benchmark"; +import {describe, bench} from "@chainsafe/benchmark"; import {Hasher, HashObject, setHasher, uint8ArrayToHashObject} from "../../src/hasher/index.js"; import {hasher as asSha256Hasher} from "../../src/hasher/as-sha256.js"; import {hasher as nobleHasher} from "../../src/hasher/noble.js"; @@ -7,8 +7,6 @@ import {buildComparisonTrees} from "../utils/tree.js"; import {HashComputationLevel, getHashComputations} from "../../src/index.js"; describe("hasher", function () { - this.timeout(0); - const iterations = 500_000; const root1 = new Uint8Array(32); @@ -25,7 +23,7 @@ describe("hasher", function () { const runsFactor = 10; for (const hasher of hashers) { describe(hasher.name, () => { - itBench({ + bench({ id: `hash 2 Uint8Array ${iterations} times - ${hasher.name}`, fn: () => { for (let i = 0; i < runsFactor; i++) { @@ -35,7 +33,7 @@ describe("hasher", function () { runsFactor, }); - itBench({ + bench({ id: `hashTwoObjects ${iterations} times - ${hasher.name}`, before: () => ({ obj1: uint8ArrayToHashObject(root1), @@ -51,7 +49,7 @@ describe("hasher", function () { runsFactor, }); - itBench({ + bench({ id: `executeHashComputations - ${hasher.name}`, beforeEach: () => { const [tree] = buildComparisonTrees(16); @@ -68,7 +66,7 @@ describe("hasher", function () { }); describe("hashtree", function () { - itBench({ + bench({ id: "getHashComputations", beforeEach: () => { const [tree] = buildComparisonTrees(16); @@ -80,7 +78,7 @@ describe("hashtree", function () { }, }); - itBench({ + bench({ id: "executeHashComputations", beforeEach: () => { const [tree] = buildComparisonTrees(16); @@ -93,7 +91,7 @@ describe("hashtree", function () { }, }); - itBench({ + bench({ id: "get root", beforeEach: async () => { const [tree] = buildComparisonTrees(16); diff --git a/packages/persistent-merkle-tree/test/perf/node.test.ts b/packages/persistent-merkle-tree/test/perf/node.test.ts index 359af36b..06d145bc 100644 --- a/packages/persistent-merkle-tree/test/perf/node.test.ts +++ b/packages/persistent-merkle-tree/test/perf/node.test.ts @@ -1,4 +1,4 @@ -import {itBench} from "@dapplion/benchmark"; +import {describe, bench} from "@chainsafe/benchmark"; import {BranchNode, getNodeH, LeafNode} from "../../src/node.js"; import {countToDepth, getHashComputations, subtreeFillToContents} from "../../src/index.js"; import {batchHash} from "../utils/batchHash.js"; @@ -9,19 +9,19 @@ describe("HashObject LeafNode", () => { const zeroLeafNode = LeafNode.fromZero(); - itBench(`getNodeH() x${nodesPerSlot} avg hindex`, () => { + bench(`getNodeH() x${nodesPerSlot} avg hindex`, () => { for (let i = 0; i < nodesPerSlot; i++) { getNodeH(zeroLeafNode, i % 8); } }); - itBench(`getNodeH() x${nodesPerSlot} index 0`, () => { + bench(`getNodeH() x${nodesPerSlot} index 0`, () => { for (let i = 0; i < nodesPerSlot; i++) { getNodeH(zeroLeafNode, 0); } }); - itBench(`getNodeH() x${nodesPerSlot} index 7`, () => { + bench(`getNodeH() x${nodesPerSlot} index 7`, () => { for (let i = 0; i < nodesPerSlot; i++) { getNodeH(zeroLeafNode, 7); } @@ -30,13 +30,13 @@ describe("HashObject LeafNode", () => { // As fast as previous methods const keys: (keyof LeafNode)[] = ["h0", "h1", "h2", "h3", "h4", "h5", "h6", "h7"]; - itBench(`getNodeH() x${nodesPerSlot} index 7 with key array`, () => { + bench(`getNodeH() x${nodesPerSlot} index 7 with key array`, () => { for (let i = 0; i < nodesPerSlot; i++) { zeroLeafNode[keys[7]]; } }); - itBench(`new LeafNode() x${nodesPerSlot}`, () => { + bench(`new LeafNode() x${nodesPerSlot}`, () => { for (let i = 0; i < nodesPerSlot; i++) { LeafNode.fromHashObject(zeroLeafNode); } @@ -47,7 +47,7 @@ describe("Node batchHash", () => { const numNodes = [250_000, 500_000, 1_000_000]; for (const numNode of numNodes) { - itBench({ + bench({ id: `getHashComputations ${numNode} nodes`, beforeEach: () => createList(numNode), fn: (rootNode: BranchNode) => { @@ -55,7 +55,7 @@ describe("Node batchHash", () => { }, }); - itBench({ + bench({ id: `batchHash ${numNode} nodes`, beforeEach: () => createList(numNode), fn: (rootNode: BranchNode) => { @@ -63,7 +63,7 @@ describe("Node batchHash", () => { }, }); - itBench({ + bench({ id: `get root ${numNode} nodes`, beforeEach: () => createList(numNode), fn: (rootNode: BranchNode) => { diff --git a/packages/persistent-merkle-tree/test/perf/proof.test.ts b/packages/persistent-merkle-tree/test/perf/proof.test.ts index 374b2d97..6d5bad30 100644 --- a/packages/persistent-merkle-tree/test/perf/proof.test.ts +++ b/packages/persistent-merkle-tree/test/perf/proof.test.ts @@ -1,4 +1,4 @@ -import {itBench} from "@dapplion/benchmark"; +import {describe, bench} from "@chainsafe/benchmark"; import {computeDescriptor, createProof, ProofType} from "../../src/proof/index.js"; import {createTree} from "../utils/tree.js"; @@ -13,21 +13,21 @@ describe("Proofs", () => { for (let numLeaves = 1; numLeaves < 5; numLeaves++) { const leafIndices = allLeafIndices.slice(0, numLeaves); - itBench({ + bench({ id: `multiproof - depth ${depth}, ${numLeaves} requested leaves`, fn: () => { createProof(tree, {type: ProofType.multi, gindices: leafIndices}); }, }); - itBench({ + bench({ id: `tree offset multiproof - depth ${depth}, ${numLeaves} requested leaves`, fn: () => { createProof(tree, {type: ProofType.treeOffset, gindices: leafIndices}); }, }); - itBench({ + bench({ id: `compact multiproof - depth ${depth}, ${numLeaves} requested leaves`, beforeEach: () => { return computeDescriptor(leafIndices); diff --git a/packages/persistent-merkle-tree/test/perf/subtree.test.ts b/packages/persistent-merkle-tree/test/perf/subtree.test.ts index 4b8a7fbf..15f52d4f 100644 --- a/packages/persistent-merkle-tree/test/perf/subtree.test.ts +++ b/packages/persistent-merkle-tree/test/perf/subtree.test.ts @@ -1,4 +1,4 @@ -import {itBench} from "@dapplion/benchmark"; +import {describe, bench} from "@chainsafe/benchmark"; import {Node} from "../../src/node.js"; import {packedRootsBytesToLeafNodes} from "../../src/packedNode.js"; import {subtreeFillToContents} from "../../src/subtree.js"; @@ -15,7 +15,7 @@ describe("packedRootsBytesToLeafNodes", () => { const dataView = new DataView(data.buffer, data.byteOffset, data.byteLength); data.set(Buffer.alloc(bytes, 0xdd)); - itBench(`packedRootsBytesToLeafNodes bytes ${bytes} offset ${offset} `, () => { + bench(`packedRootsBytesToLeafNodes bytes ${bytes} offset ${offset} `, () => { packedRootsBytesToLeafNodes(dataView, start, end); }); } @@ -25,7 +25,7 @@ describe("subtreeFillToContents", () => { const depth = 40; const nodesCount = 250_000; - itBench({ + bench({ id: `subtreeFillToContents depth ${depth} count ${nodesCount}`, beforeEach: () => getNodesArray(nodesCount), fn: (nodes) => { diff --git a/packages/persistent-merkle-tree/test/perf/tree.test.ts b/packages/persistent-merkle-tree/test/perf/tree.test.ts index 7985ab40..63f55938 100644 --- a/packages/persistent-merkle-tree/test/perf/tree.test.ts +++ b/packages/persistent-merkle-tree/test/perf/tree.test.ts @@ -1,4 +1,4 @@ -import {itBench} from "@dapplion/benchmark"; +import {describe, bench} from "@chainsafe/benchmark"; import { LeafNode, subtreeFillToContents, @@ -27,32 +27,32 @@ describe("Track the performance of different Tree methods", () => { /** May need to run these tests separately to compare the performance */ const tree = new Tree(createBalanceList(numBalance, depth)); /** Using gindexBitstring is 5% faster than using gindex */ - itBench("setRoot - gindexBitstring", () => { + bench("setRoot - gindexBitstring", () => { for (let i = 0; i < numLoop; i++) { tree.setRoot(gindexBitstring, newRoot); } }); - itBench("setRoot - gindex", () => { + bench("setRoot - gindex", () => { for (let i = 0; i < numLoop; i++) { tree.setRoot(gindex, newRoot); } }); /** Using gindexBitstring is 10% faster than using gindex */ - itBench("getRoot - gindexBitstring", () => { + bench("getRoot - gindexBitstring", () => { for (let i = 0; i < numLoop; i++) { tree.getRoot(gindexBitstring); } }); - itBench("getRoot - gindex", () => { + bench("getRoot - gindex", () => { for (let i = 0; i < numLoop; i++) { tree.getRoot(gindex); } }); - itBench("getHashObject then setHashObject", () => { + bench("getHashObject then setHashObject", () => { for (let i = 0; i < numLoop; i++) { tree.getNode(gindex); tree.setNode(gindex, newNode); @@ -60,7 +60,7 @@ describe("Track the performance of different Tree methods", () => { }); /* Double the speed compared to get then set */ - itBench("setNodeWithFn", () => { + bench("setNodeWithFn", () => { const getNewNodeFn = (): Node => newNode; for (let i = 0; i < numLoop; i++) { tree.setNodeWithFn(gindex, getNewNodeFn); diff --git a/packages/persistent-merkle-tree/test/perf/tree/depthSmall.test.ts b/packages/persistent-merkle-tree/test/perf/tree/depthSmall.test.ts index 39bb31cd..9b5d0c80 100644 --- a/packages/persistent-merkle-tree/test/perf/tree/depthSmall.test.ts +++ b/packages/persistent-merkle-tree/test/perf/tree/depthSmall.test.ts @@ -1,4 +1,4 @@ -import {itBench} from "@dapplion/benchmark"; +import {describe, bench} from "@chainsafe/benchmark"; import {getNodeAtDepth, getNodesAtDepth, setNodeAtDepth, setNodesAtDepth, zeroNode} from "../../../src/index.js"; import {linspace, fillArray} from "../../utils/misc.js"; @@ -15,7 +15,7 @@ describe("Tree opts with low depth", () => { const indexes = linspace(maxIndex); const nodesChanged = fillArray(maxIndex, zeroNode(0)); - itBench({ + bench({ id: `getNodeAtDepth depth ${depth} x${runsFactor}`, fn: () => { for (let i = 0; i < runsFactor; i++) { @@ -24,7 +24,7 @@ describe("Tree opts with low depth", () => { }, }); - itBench({ + bench({ id: `setNodeAtDepth depth ${depth} x${runsFactor}`, fn: () => { for (let i = 0; i < runsFactor; i++) { @@ -33,7 +33,7 @@ describe("Tree opts with low depth", () => { }, }); - itBench({ + bench({ id: `getNodesAtDepth depth ${depth} x${runsFactor}`, fn: () => { for (let i = 0; i < runsFactor; i++) { @@ -42,7 +42,7 @@ describe("Tree opts with low depth", () => { }, }); - itBench({ + bench({ id: `setNodesAtDepth depth ${depth} x${runsFactor}`, fn: () => { for (let i = 0; i < runsFactor; i++) { diff --git a/packages/persistent-merkle-tree/test/perf/tree/getNodes.test.ts b/packages/persistent-merkle-tree/test/perf/tree/getNodes.test.ts index 060e8c4f..fffef994 100644 --- a/packages/persistent-merkle-tree/test/perf/tree/getNodes.test.ts +++ b/packages/persistent-merkle-tree/test/perf/tree/getNodes.test.ts @@ -1,5 +1,13 @@ -import {itBench} from "@dapplion/benchmark"; -import {subtreeFillToContents, Tree, Node, LeafNode, getNodesAtDepth, zeroNode, BranchNode} from "../../../src/index.js"; +import {describe, bench, beforeAll} from "@chainsafe/benchmark"; +import { + subtreeFillToContents, + Tree, + Node, + LeafNode, + getNodesAtDepth, + zeroNode, + BranchNode, +} from "../../../src/index.js"; // Results in Linux Dec 2021 // @@ -16,7 +24,7 @@ describe("tree / getNodesAtDepth", () => { let tree: Tree; const initialNode = LeafNode.fromRoot(Buffer.alloc(32, 0xaa)); - before("Get base tree and data", () => { + beforeAll(() => { const initialNodes = new Array(length); for (let i = 0; i < length; i++) { initialNodes[i] = initialNode; @@ -25,14 +33,14 @@ describe("tree / getNodesAtDepth", () => { tree = new Tree(subtreeFillToContents(initialNodes, depth)); }); - itBench({ + bench({ id: "tree.getNodesAtDepth - gindexes", fn: () => { getNodesAtDepth(tree.rootNode, depth, 0, length); }, }); - itBench({ + bench({ id: "tree.getNodesAtDepth - push all nodes", fn: () => { const nodes = new Array(length); @@ -42,7 +50,7 @@ describe("tree / getNodesAtDepth", () => { }, }); - itBench({ + bench({ id: "tree.getNodesAtDepth - navigation", fn: () => { const branchNode = new BranchNode(zeroNode(0), zeroNode(0)); diff --git a/packages/persistent-merkle-tree/test/perf/tree/setNodes.test.ts b/packages/persistent-merkle-tree/test/perf/tree/setNodes.test.ts index e2b6c441..da3305be 100644 --- a/packages/persistent-merkle-tree/test/perf/tree/setNodes.test.ts +++ b/packages/persistent-merkle-tree/test/perf/tree/setNodes.test.ts @@ -1,4 +1,4 @@ -import {itBench} from "@dapplion/benchmark"; +import {describe, bench, beforeAll} from "@chainsafe/benchmark"; import {subtreeFillToContents, Tree, Node, LeafNode, toGindex, setNodesAtDepth} from "../../../src/index.js"; // Results in Linux Dec 2021 @@ -23,7 +23,7 @@ describe("tree / setNodes", () => { const initialNode = LeafNode.fromRoot(Buffer.alloc(32, 0xaa)); const changedNode = LeafNode.fromRoot(Buffer.alloc(32, 0xbb)); - before("Get base tree and data", () => { + beforeAll(() => { const length = Math.ceil(vc / itemsPerChunk); const initialNodes = new Array(length); for (let i = 0; i < length; i++) { @@ -43,7 +43,7 @@ describe("tree / setNodes", () => { } }); - itBench({ + bench({ id: "tree.setNodesAtDepth - indexes", beforeEach: () => tree.clone(), fn: (tree) => { diff --git a/packages/persistent-merkle-tree/test/perf/treeDepth.test.ts b/packages/persistent-merkle-tree/test/perf/treeDepth.test.ts index 6cf7f633..0668b87f 100644 --- a/packages/persistent-merkle-tree/test/perf/treeDepth.test.ts +++ b/packages/persistent-merkle-tree/test/perf/treeDepth.test.ts @@ -1,4 +1,4 @@ -import {itBench} from "@dapplion/benchmark"; +import {describe, bench} from "@chainsafe/benchmark"; import {Tree, iterateAtDepth, LeafNode, subtreeFillToDepth} from "../../src/index.js"; describe("Tree", () => { @@ -8,7 +8,7 @@ describe("Tree", () => { const backing = new Tree(n); const gindex = Array.from(iterateAtDepth(depth, BigInt(0), BigInt(1)))[0]; - itBench(`set at depth ${depth}`, () => { + bench(`set at depth ${depth}`, () => { backing.setNode(gindex, n2); }); } @@ -19,11 +19,11 @@ describe("Tree", () => { const startIndex = 0; const count = Math.min(250_000, 2 ** depth); - itBench(`iterateNodesAtDepth ${depth} ${count}`, () => { + bench(`iterateNodesAtDepth ${depth} ${count}`, () => { Array.from(backing.iterateNodesAtDepth(depth, startIndex, count)); }); - itBench(`getNodesAtDepth ${depth} ${count}`, () => { + bench(`getNodesAtDepth ${depth} ${count}`, () => { backing.getNodesAtDepth(depth, startIndex, count); }); } diff --git a/packages/persistent-merkle-tree/test/perf/validators.test.ts b/packages/persistent-merkle-tree/test/perf/validators.test.ts index 6da3c47f..93489b76 100644 --- a/packages/persistent-merkle-tree/test/perf/validators.test.ts +++ b/packages/persistent-merkle-tree/test/perf/validators.test.ts @@ -1,12 +1,5 @@ -import {itBench, setBenchOpts} from "@dapplion/benchmark"; -import { - LeafNode, - subtreeFillToContents, - Node, - countToDepth, - zeroNode, - getHashComputations, -} from "../../src/index.js"; +import {bench, describe, setBenchOpts} from "@chainsafe/benchmark"; +import {LeafNode, subtreeFillToContents, Node, countToDepth, zeroNode, getHashComputations} from "../../src/index.js"; import {MemoryTracker} from "../utils/memTracker.js"; import {batchHash} from "../utils/batchHash.js"; @@ -46,7 +39,7 @@ describe("Track the performance of validators", () => { node.root; tracker.logDiff("Calculate tree root"); - itBench({ + bench({ id: `${vc} validators root getter`, beforeEach: () => { resetNodes(node, depth); @@ -57,7 +50,7 @@ describe("Track the performance of validators", () => { }, }); - itBench({ + bench({ id: `${vc} validators batchHash()`, beforeEach: () => { resetNodes(node, depth); @@ -68,7 +61,7 @@ describe("Track the performance of validators", () => { }, }); - itBench({ + bench({ id: `${vc} validators hashComputations`, beforeEach: () => { resetNodes(node, depth); diff --git a/packages/persistent-ts/.eslintrc.cjs b/packages/persistent-ts/.eslintrc.cjs index 25a53312..fe89f981 100644 --- a/packages/persistent-ts/.eslintrc.cjs +++ b/packages/persistent-ts/.eslintrc.cjs @@ -4,7 +4,6 @@ module.exports = { browser: true, es6: true, node: true, - mocha: true }, globals: { BigInt: true, diff --git a/packages/persistent-ts/package.json b/packages/persistent-ts/package.json index 400ffdee..741c89f1 100644 --- a/packages/persistent-ts/package.json +++ b/packages/persistent-ts/package.json @@ -20,7 +20,7 @@ "lint": "eslint --color --ext .ts src/", "check-types": "tsc --noEmit", "test:unit": "vitest run --dir test/unit", - "test:perf": "mocha 'test/perf/**/*.test.ts'" + "test:perf": "node --loader=ts-node/esm' benchmark 'test/perf/**/*.test.ts'" }, "repository": { "type": "git", diff --git a/packages/persistent-ts/test/perf/Vector.test.ts b/packages/persistent-ts/test/perf/Vector.test.ts deleted file mode 100644 index a6935142..00000000 --- a/packages/persistent-ts/test/perf/Vector.test.ts +++ /dev/null @@ -1,104 +0,0 @@ -import {expect} from "chai"; -import {PersistentVector, TransientVector} from "../../src/Vector.js"; - -// TODO: @tuyennhv re-write with common benchmark runner -it.skip("PersistentVector - should be able to handle 10M elements", function () { - this.timeout(0); - let start = Date.now(); - let acc: PersistentVector = PersistentVector.empty; - const times = 10000000; - for (let i = 0; i < times; ++i) { - acc = acc.push(i); - } - expect(acc.length).to.be.equal(times); - console.log(`Finish push ${times} items in`, Date.now() - start); - start = Date.now(); - for (let i = 0; i < times; ++i) { - acc = acc.set(i, i); - } - console.log(`Finish set ${times} items in`, Date.now() - start); - start = Date.now(); - let index = 0; - for (const _ of acc) { - // expect(item).to.be.equal(index); - index++; - } - expect(index).to.be.equal(times); - console.log(`Finish regular iterator ${times} in`, Date.now() - start); - // start = Date.now(); - // for (let i = 0; i < times; ++i) { - // expect(acc.get(i)).to.be.equal(i); - // } - // console.log(`Finish regular for of ${times} items in`, Date.now() - start); - start = Date.now(); - let count = 0; - acc.forEach(() => { - count++; - }); - expect(count).to.be.equal(times); - console.log(`Finish forEach of ${times} items in`, Date.now() - start); - start = Date.now(); - const tsArray = acc.toArray(); - expect(tsArray.length).to.be.equal(times); - console.log(`Finish toArray of ${times} items in`, Date.now() - start); - start = Date.now(); - const newArr = acc.map((v) => v * 2); - console.log(`Finish map of ${times} items in`, Date.now() - start); - expect(newArr[1]).to.be.equal(2); - expect(newArr.length).to.be.equal(times); - start = Date.now(); - const newArr2 = tsArray.map((v) => v * 2); - console.log(`Finish regular map of regular array of ${times} items in`, Date.now() - start); - expect(newArr).to.be.deep.equal(newArr2); -}); - -// TODO: @tuyennhv re-write with common benchmark runner -it.skip("TransientVector - should be able to handle 10M elements", function () { - this.timeout(0); - let start = Date.now(); - let acc: TransientVector = TransientVector.empty(); - const times = 10000000; - for (let i = 0; i < times; ++i) { - acc = acc.push(i); - } - expect(acc.length).to.be.equal(times); - console.log(`Finish push ${times} items in`, Date.now() - start); - start = Date.now(); - for (let i = 0; i < times; ++i) { - acc = acc.set(i, i); - } - console.log(`Finish set ${times} items in`, Date.now() - start); - start = Date.now(); - let index = 0; - for (const _ of acc) { - // expect(item).to.be.equal(index); - index++; - } - expect(index).to.be.equal(times); - console.log(`Finish regular iterator ${times} in`, Date.now() - start); - // start = Date.now(); - // for (let i = 0; i < times; ++i) { - // expect(acc.get(i)).to.be.equal(i); - // } - // console.log(`Finish regular for of ${times} items in`, Date.now() - start); - start = Date.now(); - let count = 0; - acc.forEach(() => { - count++; - }); - expect(count).to.be.equal(times); - console.log(`Finish forEach of ${times} items in`, Date.now() - start); - start = Date.now(); - const tsArray = acc.toArray(); - expect(tsArray.length).to.be.equal(times); - console.log(`Finish toArray of ${times} items in`, Date.now() - start); - start = Date.now(); - const newArr = acc.map((v) => v * 2); - console.log(`Finish map of ${times} items in`, Date.now() - start); - expect(newArr[1]).to.be.equal(2); - expect(newArr.length).to.be.equal(times); - start = Date.now(); - const newArr2 = tsArray.map((v) => v * 2); - console.log(`Finish regular map of regular array of ${times} items in`, Date.now() - start); - expect(newArr).to.be.deep.equal(newArr2); -}); diff --git a/packages/ssz/package.json b/packages/ssz/package.json index ad056265..7a2299b4 100644 --- a/packages/ssz/package.json +++ b/packages/ssz/package.json @@ -30,7 +30,7 @@ "test": "yarn test:unit", "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:perf": "node --loader=ts-node/esm' benchmark 'test/perf/**/*.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": "vitest run --dir test/spec/generic", diff --git a/packages/ssz/test/perf/bitlist.test.ts b/packages/ssz/test/perf/bitlist.test.ts index f0bbea17..c0199c51 100644 --- a/packages/ssz/test/perf/bitlist.test.ts +++ b/packages/ssz/test/perf/bitlist.test.ts @@ -1,4 +1,4 @@ -import {itBench} from "@dapplion/benchmark"; +import {describe, bench} from "@chainsafe/benchmark"; import {BitArray, BitListType} from "../../src/index.js"; // running zipIndexesCommitteeBits() on `bitLen: 2048, bitsSet: 2048` takes 50.904 us/op @@ -20,11 +20,11 @@ describe("BitListType types", () => { const bitlistStruct = getBitsMany(bitLen, bitsSet); const bytes = CommitteeBits.serialize(bitlistStruct); - itBench(`bitlist bytes to struct (${bitLen},${bitsSet})`, () => { + bench(`bitlist bytes to struct (${bitLen},${bitsSet})`, () => { CommitteeBits.deserialize(bytes); }); - itBench(`bitlist bytes to tree (${bitLen},${bitsSet})`, () => { + bench(`bitlist bytes to tree (${bitLen},${bitsSet})`, () => { CommitteeBits.deserializeToView(bytes); }); } diff --git a/packages/ssz/test/perf/byType/listBasic.test.ts b/packages/ssz/test/perf/byType/listBasic.test.ts index 896efeeb..c56dc97c 100644 --- a/packages/ssz/test/perf/byType/listBasic.test.ts +++ b/packages/ssz/test/perf/byType/listBasic.test.ts @@ -1,4 +1,4 @@ -import {itBench} from "@dapplion/benchmark"; +import {describe, bench} from "@chainsafe/benchmark"; import {ListBasicType, UintNumberType} from "../../../src/index.js"; const byteType = new UintNumberType(1); @@ -8,41 +8,41 @@ describe("ListBasicType types", () => { for (const type of [new ListBasicType(byteType, 2 ** 36)]) { const viewDU = type.toViewDU(newFilledArray(len, 7)); - itBench(`${type.typeName} len ${len} ViewDU.getAll() + iterate`, () => { + bench(`${type.typeName} len ${len} ViewDU.getAll() + iterate`, () => { const values = viewDU.getAll(); for (let i = 0; i < len; i++) { values[i]; } }); - itBench(`${type.typeName} len ${len} ViewDU.get(i)`, () => { + bench(`${type.typeName} len ${len} ViewDU.get(i)`, () => { for (let i = 0; i < len; i++) { viewDU.get(i); } }); } - itBench(`Array.push len ${len} empty Array - number`, () => { + bench(`Array.push len ${len} empty Array - number`, () => { const array: number[] = []; for (let i = 0; i < len; i++) array.push(7); }); - itBench(`Array.set len ${len} from new Array - number`, () => { + bench(`Array.set len ${len} from new Array - number`, () => { const array = new Array(len); for (let i = 0; i < len; i++) array[i] = 7; }); - itBench(`Array.set len ${len} - number`, () => { + bench(`Array.set len ${len} - number`, () => { const array: number[] = []; for (let i = 0; i < len; i++) array[i] = 7; }); - itBench(`Uint8Array.set len ${len}`, () => { + bench(`Uint8Array.set len ${len}`, () => { const uint8Array = new Uint8Array(len); for (let i = 0; i < len; i++) uint8Array[i] = 7; }); - itBench(`Uint32Array.set len ${len}`, () => { + bench(`Uint32Array.set len ${len}`, () => { const uint32Array = new Uint32Array(len); for (let i = 0; i < len; i++) uint32Array[i] = 7; }); diff --git a/packages/ssz/test/perf/byType/listComposite.test.ts b/packages/ssz/test/perf/byType/listComposite.test.ts index 61b5de6c..f9c7508d 100644 --- a/packages/ssz/test/perf/byType/listComposite.test.ts +++ b/packages/ssz/test/perf/byType/listComposite.test.ts @@ -1,4 +1,4 @@ -import {itBench} from "@dapplion/benchmark"; +import {describe, bench} from "@chainsafe/benchmark"; import {ContainerNodeStructType, ContainerType, ListCompositeType, UintNumberType} from "../../../src/index.js"; const byteType = new UintNumberType(1); @@ -13,7 +13,7 @@ describe("ListCompositeType types", () => { const node = type.commitViewDU(viewDU); const cache = type.cacheOfViewDU(viewDU); - itBench(`${type.typeName} getViewDU x${len}`, () => { + bench(`${type.typeName} getViewDU x${len}`, () => { for (let i = 0; i < len; i++) { type.getViewDU(node, cache); } @@ -26,27 +26,27 @@ describe("ListCompositeType types", () => { ]) { const viewDU = type.toViewDU(newFilledArray(len, {a: 1, b: 2})); - itBench(`${type.typeName} len ${len} ViewDU.getAllReadonly() + iterate`, () => { + bench(`${type.typeName} len ${len} ViewDU.getAllReadonly() + iterate`, () => { const values = viewDU.getAllReadonly(); for (let i = 0; i < len; i++) { values[i]; } }); - itBench(`${type.typeName} len ${len} ViewDU.getAllReadonlyValues() + iterate`, () => { + bench(`${type.typeName} len ${len} ViewDU.getAllReadonlyValues() + iterate`, () => { const values = viewDU.getAllReadonlyValues(); for (let i = 0; i < len; i++) { values[i]; } }); - itBench(`${type.typeName} len ${len} ViewDU.get(i)`, () => { + bench(`${type.typeName} len ${len} ViewDU.get(i)`, () => { for (let i = 0; i < len; i++) { viewDU.get(i); } }); - itBench(`${type.typeName} len ${len} ViewDU.getReadonly(i)`, () => { + bench(`${type.typeName} len ${len} ViewDU.getReadonly(i)`, () => { for (let i = 0; i < len; i++) { viewDU.getReadonly(i); } @@ -55,17 +55,17 @@ describe("ListCompositeType types", () => { const sampleObj = {a: 1, b: []}; - itBench(`Array.push len ${len} empty Array - object`, () => { + bench(`Array.push len ${len} empty Array - object`, () => { const array: unknown[] = []; for (let i = 0; i < len; i++) array.push(sampleObj); }); - itBench(`Array.set len ${len} from new Array - object`, () => { + bench(`Array.set len ${len} from new Array - object`, () => { const array = new Array(len); for (let i = 0; i < len; i++) array[i] = sampleObj; }); - itBench(`Array.set len ${len} - object`, () => { + bench(`Array.set len ${len} - object`, () => { const array: unknown[] = []; for (let i = 0; i < len; i++) array[i] = sampleObj; }); diff --git a/packages/ssz/test/perf/bytelist.test.ts b/packages/ssz/test/perf/bytelist.test.ts index f0bbb9e0..7a0f9e97 100644 --- a/packages/ssz/test/perf/bytelist.test.ts +++ b/packages/ssz/test/perf/bytelist.test.ts @@ -1,4 +1,4 @@ -import {itBench} from "@dapplion/benchmark"; +import {describe, bench} from "@chainsafe/benchmark"; import {ByteListType, ListBasicType, UintNumberType} from "../../src/index.js"; describe("ByteListType vs BasicListType", () => { @@ -18,29 +18,29 @@ describe("ByteListType vs BasicListType", () => { const ROUNDS = 10000; - itBench("ByteListType - deserialize", () => { + bench("ByteListType - deserialize", () => { for (let i = 0; i < ROUNDS; i++) { byteLs.deserialize(tbByteLsSerialized); } }); - itBench("BasicListType - deserialize", () => { + bench("BasicListType - deserialize", () => { for (let i = 0; i < ROUNDS; i++) { basicLs.deserialize(tbBasicLsSerialized); } }); - itBench("ByteListType - serialize", () => { + bench("ByteListType - serialize", () => { for (let i = 0; i < ROUNDS; i++) { byteLs.serialize(tbByteLs); } }); - itBench("BasicListType - serialize", () => { + bench("BasicListType - serialize", () => { for (let i = 0; i < ROUNDS; i++) { tbBasicLs.serialize(); } }); - itBench("BasicListType - tree_convertToStruct", () => { + bench("BasicListType - tree_convertToStruct", () => { for (let i = 0; i < ROUNDS; i++) { tbBasicLs.toValue(); } diff --git a/packages/ssz/test/perf/cacheMutableRootStruct.test.ts b/packages/ssz/test/perf/cacheMutableRootStruct.test.ts index 407bc271..7e1bacc2 100644 --- a/packages/ssz/test/perf/cacheMutableRootStruct.test.ts +++ b/packages/ssz/test/perf/cacheMutableRootStruct.test.ts @@ -1,4 +1,4 @@ -import {itBench} from "@dapplion/benchmark"; +import {describe, bench} from "@chainsafe/benchmark"; import {BitVectorType, ContainerType, UintBigintType, ValueOf} from "../../src/index.js"; describe("cachePermanentRootStruct", () => { @@ -20,7 +20,7 @@ describe("cachePermanentRootStruct", () => { {cachePermanentRootStruct: true} ); - itBench, ValueOf>({ + bench, ValueOf>({ id: "cachePermanentRootStruct no cache", before: () => TestStruct.defaultValue(), beforeEach: (value) => value, @@ -29,7 +29,7 @@ describe("cachePermanentRootStruct", () => { }, }); - itBench, ValueOf>({ + bench, ValueOf>({ id: "cachePermanentRootStruct with cache", before: () => TestStructCache.defaultValue(), beforeEach: (value) => value, diff --git a/packages/ssz/test/perf/epochStatuses.test.ts b/packages/ssz/test/perf/epochStatuses.test.ts index e033f60e..f7117352 100644 --- a/packages/ssz/test/perf/epochStatuses.test.ts +++ b/packages/ssz/test/perf/epochStatuses.test.ts @@ -1,4 +1,4 @@ -import {itBench} from "@dapplion/benchmark"; +import {describe, bench} from "@chainsafe/benchmark"; import {CompositeViewDU} from "../../src/index.js"; import {EpochParticipation} from "../lodestarTypes/altair/sszTypes.js"; import {fillArray, linspace} from "../utils/misc.js"; @@ -8,7 +8,7 @@ describe("processAttestations() epochStatuses", () => { const readWrites = Math.round(len / 32); const indexes = shuffle(linspace(len)); - itBench, CompositeViewDU>({ + bench, CompositeViewDU>({ id: `epochParticipation len ${len} rws ${readWrites}`, before: () => { const epochParticipation = fillArray(len, 3); diff --git a/packages/ssz/test/perf/eth2/beaconState.test.ts b/packages/ssz/test/perf/eth2/beaconState.test.ts index e9c26616..aba8ff48 100644 --- a/packages/ssz/test/perf/eth2/beaconState.test.ts +++ b/packages/ssz/test/perf/eth2/beaconState.test.ts @@ -1,4 +1,4 @@ -import {itBench, setBenchOpts} from "@dapplion/benchmark"; +import {describe, bench, setBenchOpts} from "@chainsafe/benchmark"; import {HashComputationLevel, executeHashComputations, HashComputationGroup} from "@chainsafe/persistent-merkle-tree"; import {BeaconState} from "../../lodestarTypes/altair/sszTypes.js"; import {BitArray, CompositeViewDU, toHexString} from "../../../src/index.js"; @@ -22,7 +22,7 @@ describe(`BeaconState ViewDU partially modified tree vc=${vc} numModified=${numM minMs: 20_000, }); - itBench({ + bench({ id: `BeaconState ViewDU hashTreeRoot() vc=${vc}`, beforeEach: () => createPartiallyModifiedDenebState(), fn: (state: CompositeViewDU) => { @@ -33,7 +33,7 @@ describe(`BeaconState ViewDU partially modified tree vc=${vc} numModified=${numM }, }); - itBench({ + bench({ id: `BeaconState ViewDU recursive hash - commit step vc=${vc}`, beforeEach: () => createPartiallyModifiedDenebState(), fn: (state: CompositeViewDU) => { @@ -41,7 +41,7 @@ describe(`BeaconState ViewDU partially modified tree vc=${vc} numModified=${numM }, }); - itBench({ + bench({ id: `BeaconState ViewDU validator tree creation vc=${numModified}`, beforeEach: () => { const state = createPartiallyModifiedDenebState(); @@ -57,7 +57,7 @@ describe(`BeaconState ViewDU partially modified tree vc=${vc} numModified=${numM }); const hc = new HashComputationGroup(); - itBench({ + bench({ id: `BeaconState ViewDU batchHashTreeRoot vc=${vc}`, beforeEach: () => createPartiallyModifiedDenebState(), fn: (state: CompositeViewDU) => { @@ -69,7 +69,7 @@ describe(`BeaconState ViewDU partially modified tree vc=${vc} numModified=${numM }, }); - itBench({ + bench({ id: `BeaconState ViewDU hashTreeRoot - commit step vc=${vc}`, beforeEach: () => createPartiallyModifiedDenebState(), fn: (state: CompositeViewDU) => { @@ -77,7 +77,7 @@ describe(`BeaconState ViewDU partially modified tree vc=${vc} numModified=${numM }, }); - itBench({ + bench({ id: `BeaconState ViewDU hashTreeRoot - hash step vc=${vc}`, beforeEach: () => { const state = createPartiallyModifiedDenebState(); diff --git a/packages/ssz/test/perf/eth2/deserialize.test.ts b/packages/ssz/test/perf/eth2/deserialize.test.ts index c1601925..a5835f1f 100644 --- a/packages/ssz/test/perf/eth2/deserialize.test.ts +++ b/packages/ssz/test/perf/eth2/deserialize.test.ts @@ -1,4 +1,4 @@ -import {itBench} from "@dapplion/benchmark"; +import {describe, bench} from "@chainsafe/benchmark"; import {BeaconState} from "../../lodestarTypes/altair/types.js"; import * as sszPhase0 from "../../lodestarTypes/phase0/sszTypes.js"; import * as sszAltair from "../../lodestarTypes/altair/sszTypes.js"; @@ -14,14 +14,14 @@ import { import {CompositeType, isCompositeType, TreeViewDU, ValueOf} from "../../../src/index.js"; describe("Deserialize frequent eth2 objects", () => { - itBenchDeserialize(sszPhase0.Attestation, getAttestation(0)); - itBenchDeserialize(sszPhase0.SignedAggregateAndProof, getSignedAggregateAndProof(0)); - itBenchDeserialize(sszAltair.SyncCommitteeMessage, getSyncCommitteeMessage(0)); - itBenchDeserialize(sszAltair.SignedContributionAndProof, getSignedContributionAndProof(0)); - itBenchDeserialize(sszPhase0.SignedBeaconBlock, getSignedBeaconBlockPhase0(0)); + benchDeserialize(sszPhase0.Attestation, getAttestation(0)); + benchDeserialize(sszPhase0.SignedAggregateAndProof, getSignedAggregateAndProof(0)); + benchDeserialize(sszAltair.SyncCommitteeMessage, getSyncCommitteeMessage(0)); + benchDeserialize(sszAltair.SignedContributionAndProof, getSignedContributionAndProof(0)); + benchDeserialize(sszPhase0.SignedBeaconBlock, getSignedBeaconBlockPhase0(0)); - function itBenchDeserialize>(type: T, value: ValueOf): void { - itBench({ + function benchDeserialize>(type: T, value: ValueOf): void { + bench({ id: `deserialize ${type.typeName} - tree`, before: () => type.serialize(value), beforeEach: (bytes) => bytes, @@ -30,7 +30,7 @@ describe("Deserialize frequent eth2 objects", () => { }, }); - itBench({ + bench({ id: `deserialize ${type.typeName} - struct`, before: () => type.serialize(value), beforeEach: (bytes) => bytes, @@ -45,7 +45,7 @@ describe("Deserialize frequent eth2 objects", () => { const getStateVc = getOnce(() => getRandomState(validatorCount)); const getStateViewDU = getOnce(() => sszAltair.BeaconState.toViewDU(getStateVc())); - itBench({ + bench({ id: `BeaconState vc ${validatorCount} - deserialize tree`, before: () => getStateViewDU().serialize(), beforeEach: (bytes) => bytes, @@ -54,7 +54,7 @@ describe("Deserialize frequent eth2 objects", () => { }, }); - itBench({ + bench({ id: `BeaconState vc ${validatorCount} - serialize tree`, fn: () => { getStateViewDU().serialize(); @@ -67,7 +67,7 @@ describe("Deserialize frequent eth2 objects", () => { continue; } - itBench({ + bench({ id: `BeaconState.${fieldName} vc ${validatorCount} - deserialize tree`, before: () => (getStateViewDU()[fieldName] as TreeViewDU).serialize(), beforeEach: (bytes) => bytes, @@ -76,7 +76,7 @@ describe("Deserialize frequent eth2 objects", () => { }, }); - itBench({ + bench({ id: `BeaconState.${fieldName} vc ${validatorCount} - serialize tree`, fn: () => { (getStateViewDU()[fieldName] as TreeViewDU).serialize(); diff --git a/packages/ssz/test/perf/eth2/hashTreeRoot.test.ts b/packages/ssz/test/perf/eth2/hashTreeRoot.test.ts index 38058bf0..689890a4 100644 --- a/packages/ssz/test/perf/eth2/hashTreeRoot.test.ts +++ b/packages/ssz/test/perf/eth2/hashTreeRoot.test.ts @@ -1,4 +1,4 @@ -import {itBench} from "@dapplion/benchmark"; +import {describe, bench} from "@chainsafe/benchmark"; import {HashComputationGroup, hasher, uint8ArrayToHashObject} from "@chainsafe/persistent-merkle-tree"; import * as sszPhase0 from "../../lodestarTypes/phase0/sszTypes.js"; import * as sszAltair from "../../lodestarTypes/altair/sszTypes.js"; @@ -26,18 +26,18 @@ import {CompositeTypeAny} from "../../../src/type/composite.js"; import {HashObject} from "@chainsafe/as-sha256"; describe("HashTreeRoot frequent eth2 objects", () => { - itBenchHashTreeRoot(sszPhase0.Attestation, getAttestation(0)); - itBenchHashTreeRoot(sszPhase0.SignedAggregateAndProof, getSignedAggregateAndProof(0)); - itBenchHashTreeRoot(sszAltair.SyncCommitteeMessage, getSyncCommitteeMessage(0)); - itBenchHashTreeRoot(sszAltair.SignedContributionAndProof, getSignedContributionAndProof(0)); - itBenchHashTreeRoot(sszPhase0.SignedBeaconBlock, getSignedBeaconBlockPhase0(0)); - itBenchHashTreeRoot(sszPhase0.Validator, getValidator(0)); + benchHashTreeRoot(sszPhase0.Attestation, getAttestation(0)); + benchHashTreeRoot(sszPhase0.SignedAggregateAndProof, getSignedAggregateAndProof(0)); + benchHashTreeRoot(sszAltair.SyncCommitteeMessage, getSyncCommitteeMessage(0)); + benchHashTreeRoot(sszAltair.SignedContributionAndProof, getSignedContributionAndProof(0)); + benchHashTreeRoot(sszPhase0.SignedBeaconBlock, getSignedBeaconBlockPhase0(0)); + benchHashTreeRoot(sszPhase0.Validator, getValidator(0)); - function itBenchHashTreeRoot, unknown>>( + function benchHashTreeRoot, unknown>>( type: T, value: ValueOf ): void { - itBench({ + bench({ id: `hashTreeRoot ${type.typeName} - struct`, beforeEach: () => type.clone(value), fn: (value) => { @@ -45,7 +45,7 @@ describe("HashTreeRoot frequent eth2 objects", () => { }, }); - itBench({ + bench({ id: `hashTreeRoot ${type.typeName} - tree`, beforeEach: () => type.toView(value) as CompositeView, fn: (view) => { @@ -59,7 +59,7 @@ describe("HashTreeRoot frequent eth2 objects", () => { const getStateVc = getOnce(() => getRandomState(validatorCount)); const getStateViewDU = getOnce(() => sszAltair.BeaconState.toViewDU(getStateVc())); - itBench, Uint8Array>({ + bench, Uint8Array>({ id: `BeaconState vc ${validatorCount} - hashTreeRoot tree`, before: () => getStateViewDU().serialize(), beforeEach: (bytes) => sszAltair.BeaconState.deserializeToViewDU(bytes), @@ -69,7 +69,7 @@ describe("HashTreeRoot frequent eth2 objects", () => { }); const hc = new HashComputationGroup(); - itBench, Uint8Array>({ + bench, Uint8Array>({ id: `BeaconState vc ${validatorCount} - batchHashTreeRoot tree`, before: () => getStateViewDU().serialize(), beforeEach: (bytes) => sszAltair.BeaconState.deserializeToViewDU(bytes), @@ -84,7 +84,7 @@ describe("HashTreeRoot frequent eth2 objects", () => { continue; } - itBench, Uint8Array>({ + bench, Uint8Array>({ id: `BeaconState.${fieldName} vc ${validatorCount} - hashTreeRoot tree`, before: () => (getStateViewDU()[fieldName] as TreeViewDU).serialize(), beforeEach: (bytes) => fieldType.deserializeToViewDU(bytes) as TreeViewDU, @@ -136,12 +136,12 @@ describe("HashTreeRoot individual components", () => { const buf = Buffer.alloc(32, 0xaa); const ho = uint8ArrayToHashObject(buf); - itBench(`hash64 x${count}`, () => { + bench(`hash64 x${count}`, () => { for (let i = 0; i < count; i++) hash64(buf, buf); }); const hashResult = {} as HashObject; - itBench(`hashTwoObjects x${count}`, () => { + bench(`hashTwoObjects x${count}`, () => { for (let i = 0; i < count; i++) hasher.digest64HashObjects(ho, ho, hashResult); }); } diff --git a/packages/ssz/test/perf/eth2/validators.test.ts b/packages/ssz/test/perf/eth2/validators.test.ts index 7818ffd1..07ca01fb 100644 --- a/packages/ssz/test/perf/eth2/validators.test.ts +++ b/packages/ssz/test/perf/eth2/validators.test.ts @@ -1,4 +1,4 @@ -import {itBench} from "@dapplion/benchmark"; +import {describe, bench} from "@chainsafe/benchmark"; import {Validator} from "../../lodestarTypes/phase0/types.js"; import {ValidatorContainer, ValidatorNodeStruct} from "../../lodestarTypes/phase0/sszTypes.js"; import {CompositeViewDU} from "../../../src/index.js"; @@ -43,7 +43,7 @@ describe("Validator vs ValidatorLeafNodeStruct", () => { for (const [opId, op] of Object.entries(ops)) { for (const {id: valueId, value, type} of values) { - itBench(`${opId} - ${valueId}`, () => { + bench(`${opId} - ${valueId}`, () => { op(value, type); }); } diff --git a/packages/ssz/test/perf/iterate.test.ts b/packages/ssz/test/perf/iterate.test.ts index 218cb160..47c193d3 100644 --- a/packages/ssz/test/perf/iterate.test.ts +++ b/packages/ssz/test/perf/iterate.test.ts @@ -1,4 +1,4 @@ -import {itBench, setBenchOpts} from "@dapplion/benchmark"; +import {bench, setBenchOpts, describe} from "@chainsafe/benchmark"; import {ListBasicType, UintNumberType} from "../../src/index.js"; import {Validators} from "../lodestarTypes/phase0/sszTypes.js"; @@ -11,13 +11,13 @@ describe("iterate", () => { // ✓ Array - for of 100150.2 ops/s 9.985000 us/op - 971778 runs 10.0 s // ✓ Array - for(;;) 166805.7 ops/s 5.995000 us/op - 1589379 runs 10.1 s - itBench("Array - for of", () => { + bench("Array - for of", () => { for (const a of arr) { // eslint-disable-next-line @typescript-eslint/no-unused-vars const x = a.foo; } }); - itBench("Array - for(;;)", () => { + bench("Array - for(;;)", () => { for (let i = 0; i < arr.length; i++) { const a = arr[i]; // eslint-disable-next-line @typescript-eslint/no-unused-vars @@ -30,11 +30,11 @@ describe("readonly values - iterator vs array", () => { const length = 250_000; const balances = createBalanceList(length); - itBench("basicListValue.readonlyValuesArray()", () => { + bench("basicListValue.readonlyValuesArray()", () => { balances.getAll(); }); - itBench("basicListValue.readonlyValuesArray() + loop all", () => { + bench("basicListValue.readonlyValuesArray() + loop all", () => { const balancesArray = balances.getAll(); for (let i = 0; i < balancesArray.length; i++) { balancesArray[i] + 1; @@ -43,11 +43,11 @@ describe("readonly values - iterator vs array", () => { const validators = createValidatorList(length); - itBench("compositeListValue.readonlyValuesArray()", () => { + bench("compositeListValue.readonlyValuesArray()", () => { validators.getAllReadonly(); }); - itBench("compositeListValue.readonlyValuesArray() + loop all", () => { + bench("compositeListValue.readonlyValuesArray() + loop all", () => { const validatorsArray = validators.getAllReadonly(); for (let i = 0; i < validatorsArray.length; i++) { validatorsArray[i]; diff --git a/packages/ssz/test/perf/list.test.ts b/packages/ssz/test/perf/list.test.ts index af5ac94b..53ecdd65 100644 --- a/packages/ssz/test/perf/list.test.ts +++ b/packages/ssz/test/perf/list.test.ts @@ -1,5 +1,5 @@ import {LeafNode, subtreeFillToContents, Node} from "@chainsafe/persistent-merkle-tree"; -import {itBench} from "@dapplion/benchmark"; +import {describe, bench} from "@chainsafe/benchmark"; import {UintNumberType, ListBasicType} from "../../src/index.js"; describe("list", () => { @@ -8,20 +8,20 @@ describe("list", () => { const tbBalances = createBalanceList(numBalances); // using Number64UintType gives 20% improvement - itBench("Number64UintType - get balances list", () => { + bench("Number64UintType - get balances list", () => { for (let i = 0; i < numBalances; i++) { tbBalances.get(i); } }); // using Number64UintType gives 2% - 10% improvement - itBench("Number64UintType - set balances list", () => { + bench("Number64UintType - set balances list", () => { for (let i = 0; i < numBalances; i++) { tbBalances.set(i, 31217089836); } }); - itBench("Number64UintType - get and increase 10 then set", () => { + bench("Number64UintType - get and increase 10 then set", () => { const tbBalance = tbBalances.clone(); for (let i = 0; i < numBalances; i++) { tbBalance.set(i, 10 + tbBalances.get(i)); @@ -30,7 +30,7 @@ describe("list", () => { // using applyDelta gives 4x improvement to get and set // 2.7x improvement compared to set only - itBench("Number64UintType - increase 10 using applyDelta", () => { + bench("Number64UintType - increase 10 using applyDelta", () => { for (let i = 0; i < numBalances; i++) { tbBalances.set(i, 10 + tbBalances.get(i)); } @@ -43,7 +43,7 @@ describe("list", () => { // same performance to tree_applyUint64Delta, should be a little faster // if it operates on a subtree with hook - itBench("Number64UintType - increase 10 using applyDeltaInBatch", () => { + bench("Number64UintType - increase 10 using applyDeltaInBatch", () => { for (let i = 0; i < numBalances; i++) { tbBalances.set(i, 10 + tbBalances.get(i)); } @@ -59,7 +59,7 @@ describe("subtreeFillToContents", function () { /** tree_newTreeFromUint64Deltas is 17% faster than unsafeUint8ArrayToTree */ /** ✓ tree_newTreeFromUint64Deltas 28.72705 ops/s 34.81040 ms/op - 1149 runs 40.0 s */ - itBench("tree_newTreeFromUint64Deltas", () => { + bench("tree_newTreeFromUint64Deltas", () => { const balances = tbBalances64.getAll(); for (let i = 0, len = deltas.length; i < len; i++) { balances[i] += deltas[i]; @@ -71,7 +71,7 @@ describe("subtreeFillToContents", function () { const cachedBalances64 = tbBalances64.getAll(); /** ✓ unsafeUint8ArrayToTree 24.51560 ops/s 40.79035 ms/op - 981 runs 40.0 s */ - itBench("unsafeUint8ArrayToTree", () => { + bench("unsafeUint8ArrayToTree", () => { for (let i = 0; i < numBalances; i++) { newBalances[i] = BigInt(cachedBalances64[i] + deltas[i]); } diff --git a/packages/ssz/test/perf/merkleize.test.ts b/packages/ssz/test/perf/merkleize.test.ts index cbcea448..9d1b169e 100644 --- a/packages/ssz/test/perf/merkleize.test.ts +++ b/packages/ssz/test/perf/merkleize.test.ts @@ -1,13 +1,13 @@ -import {itBench} from "@dapplion/benchmark"; +import {describe, bench} from "@chainsafe/benchmark"; import {bitLength} from "../../src/util/merkleize.js"; describe("merkleize / bitLength", () => { for (const n of [50, 8000, 250000]) { - itBench(`bitLength(${n})`, () => { + bench(`bitLength(${n})`, () => { bitLength(n); }); - itBench(`bitLengthStr(${n})`, () => { + bench(`bitLengthStr(${n})`, () => { bitLengthStr(n); }); } diff --git a/packages/ssz/test/perf/misc/math_floor.test.ts b/packages/ssz/test/perf/misc/math_floor.test.ts index ec2f0554..21fba4f3 100644 --- a/packages/ssz/test/perf/misc/math_floor.test.ts +++ b/packages/ssz/test/perf/misc/math_floor.test.ts @@ -1,4 +1,4 @@ -import {itBench, setBenchOpts} from "@dapplion/benchmark"; +import {bench, setBenchOpts, describe} from "@chainsafe/benchmark"; describe("Math.floor hacks", () => { setBenchOpts({noThreshold: true}); @@ -6,10 +6,10 @@ describe("Math.floor hacks", () => { const runsFactor = 1e6; for (const n of [53, 512]) { - itBench({id: `floor - Math.floor (${n})`, runsFactor}, () => { + bench({id: `floor - Math.floor (${n})`, runsFactor}, () => { for (let i = 0; i < runsFactor; i++) Math.floor(n / 4); }); - itBench({id: `floor - << 0 (${n})`, runsFactor}, () => { + bench({id: `floor - << 0 (${n})`, runsFactor}, () => { for (let i = 0; i < runsFactor; i++) (n / 4) << 0; }); } diff --git a/packages/ssz/test/perf/misc/switch_if_cost.test.ts b/packages/ssz/test/perf/misc/switch_if_cost.test.ts index 1f87130b..afb2924c 100644 --- a/packages/ssz/test/perf/misc/switch_if_cost.test.ts +++ b/packages/ssz/test/perf/misc/switch_if_cost.test.ts @@ -1,4 +1,4 @@ -import {itBench, setBenchOpts} from "@dapplion/benchmark"; +import {bench, setBenchOpts, describe} from "@chainsafe/benchmark"; describe("big if vs obj", () => { setBenchOpts({noThreshold: true}); @@ -70,16 +70,16 @@ describe("big if vs obj", () => { const runsFactor = 1e6; for (const n of [0, 4, 9]) { - itBench({id: `fnIf(${n})`, runsFactor}, () => { + bench({id: `fnIf(${n})`, runsFactor}, () => { for (let i = 0; i < runsFactor; i++) fnIf(n); }); - itBench({id: `fnSwitch(${n})`, runsFactor}, () => { + bench({id: `fnSwitch(${n})`, runsFactor}, () => { for (let i = 0; i < runsFactor; i++) fnSwitch(n); }); - itBench({id: `fnObj(${n})`, runsFactor}, () => { + bench({id: `fnObj(${n})`, runsFactor}, () => { for (let i = 0; i < runsFactor; i++) fnObj(n); }); - itBench({id: `fnArr(${n})`, runsFactor}, () => { + bench({id: `fnArr(${n})`, runsFactor}, () => { for (let i = 0; i < runsFactor; i++) fnArr(n); }); } diff --git a/packages/ssz/test/perf/propertyGet.test.ts b/packages/ssz/test/perf/propertyGet.test.ts index fc6292ef..ff0106af 100644 --- a/packages/ssz/test/perf/propertyGet.test.ts +++ b/packages/ssz/test/perf/propertyGet.test.ts @@ -1,4 +1,4 @@ -import {itBench} from "@dapplion/benchmark"; +import {describe, bench} from "@chainsafe/benchmark"; import {UintNumberType, ContainerType, VectorBasicType} from "../../src/index.js"; describe("SSZ get property", () => { @@ -24,13 +24,13 @@ describe("SSZ get property", () => { stateStruct.b = 1400; const stateTree = type.toViewDU(stateStruct); - itBench(`${id} - as struct x${times}`, () => { + bench(`${id} - as struct x${times}`, () => { for (let i = 0; i < times; i++) { stateStruct.b; } }); - itBench(`${id} - as tree x${times}`, () => { + bench(`${id} - as tree x${times}`, () => { for (let i = 0; i < times; i++) { stateTree.b; } diff --git a/packages/ssz/test/perf/proxy.test.ts b/packages/ssz/test/perf/proxy.test.ts index 09488d09..d871256f 100644 --- a/packages/ssz/test/perf/proxy.test.ts +++ b/packages/ssz/test/perf/proxy.test.ts @@ -1,4 +1,4 @@ -import {itBench} from "@dapplion/benchmark"; +import {describe, bench} from "@chainsafe/benchmark"; describe("Access object properties in generated objects", () => { const rawObject = { @@ -25,21 +25,21 @@ describe("Access object properties in generated objects", () => { const times = 1e6; - itBench(`get 2 props x${times} - rawObject`, () => { + bench(`get 2 props x${times} - rawObject`, () => { for (let i = 0; i < times; i++) { rawObject.a; rawObject.b; } }); - itBench(`get 2 props x${times} - proxy`, () => { + bench(`get 2 props x${times} - proxy`, () => { for (let i = 0; i < times; i++) { proxy.a; proxy.b; } }); - itBench(`get 2 props x${times} - customObj`, () => { + bench(`get 2 props x${times} - customObj`, () => { for (let i = 0; i < times; i++) { customObj.a; customObj.b; diff --git a/packages/ssz/test/perf/serdes.test.ts b/packages/ssz/test/perf/serdes.test.ts index 17363f27..dc2b5c48 100644 --- a/packages/ssz/test/perf/serdes.test.ts +++ b/packages/ssz/test/perf/serdes.test.ts @@ -1,4 +1,4 @@ -import {itBench} from "@dapplion/benchmark"; +import {describe, bench} from "@chainsafe/benchmark"; import { UintBigintType, BitListType, @@ -101,27 +101,27 @@ describe("SSZ (de)serialize", () => { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment const view = type.toView(struct); - itBench(`${id} binary -> struct`, () => { + bench(`${id} binary -> struct`, () => { type.deserialize(bytes); }); - itBench(`${id} binary -> tree_backed`, () => { + bench(`${id} binary -> tree_backed`, () => { type.deserializeToView(bytes); }); // Don't track struct <-> tree_backed conversions since they are not required to be fast - itBench({id: `${id} struct -> tree_backed`, noThreshold: true}, () => { + bench({id: `${id} struct -> tree_backed`, noThreshold: true}, () => { type.toView(struct); }); - itBench({id: `${id} tree_backed -> struct`, noThreshold: true}, () => { + bench({id: `${id} tree_backed -> struct`, noThreshold: true}, () => { view.toValue(); }); - itBench(`${id} struct -> binary`, () => { + bench(`${id} struct -> binary`, () => { type.serialize(struct); }); - itBench(`${id} tree_backed -> binary`, () => { + bench(`${id} tree_backed -> binary`, () => { view.serialize(); }); } diff --git a/packages/ssz/test/perf/stateTransitionOps/processAttestations.test.ts b/packages/ssz/test/perf/stateTransitionOps/processAttestations.test.ts index 113f1b05..ccf1d42f 100644 --- a/packages/ssz/test/perf/stateTransitionOps/processAttestations.test.ts +++ b/packages/ssz/test/perf/stateTransitionOps/processAttestations.test.ts @@ -1,4 +1,4 @@ -import {itBench} from "@dapplion/benchmark"; +import {describe, bench, beforeAll} from "@chainsafe/benchmark"; import {MutableVector} from "@chainsafe/persistent-ts"; import {ListBasicType, UintNumberType, CompositeViewDU} from "../../../src/index.js"; @@ -16,7 +16,7 @@ describe("processAttestations", () => { type Statuses = typeof epochStatusesType; type StatusesViewDU = CompositeViewDU; - before("Compute attesterIndices", () => { + beforeAll(() => { for (let i = 0; i < vc; i += Math.floor(2 * attesterShare * Math.random())) { attesterIndices.push(i); } @@ -25,7 +25,7 @@ describe("processAttestations", () => { } }); - itBench, MutableVector>({ + bench, MutableVector>({ id: "get epochStatuses - MutableVector", before: () => MutableVector.from(statusArr), beforeEach: (epochStatuses) => epochStatuses, @@ -36,7 +36,7 @@ describe("processAttestations", () => { }, }); - itBench({ + bench({ id: "get epochStatuses - ViewDU", before: () => { const epochStatuses = epochStatusesType.toViewDU(statusArr); @@ -59,7 +59,7 @@ describe("processAttestations", () => { // maybe the instantiation of so many BranchNode classes? Initializing all the h values to 0? // consider not setting them at constructor time and doing it latter. Does it increase performance? Memory? // - Creating 250_000 / 32 `new LeafNode(leafNode)` takes 0.175 ms, so no. - itBench({ + bench({ id: "set epochStatuses - ListTreeView", before: () => { const epochStatuses = epochStatusesType.deserializeToViewDU(epochStatusesType.serialize(statusArr)); @@ -76,7 +76,7 @@ describe("processAttestations", () => { }, }); - itBench({ + bench({ id: "set epochStatuses - ListTreeView - set()", before: () => { const epochStatuses = epochStatusesType.deserializeToViewDU(epochStatusesType.serialize(statusArr)); @@ -92,7 +92,7 @@ describe("processAttestations", () => { }, }); - itBench({ + bench({ id: "set epochStatuses - ListTreeView - commit()", before: () => { const epochStatuses = epochStatusesType.deserializeToViewDU(epochStatusesType.serialize(statusArr)); diff --git a/packages/ssz/test/perf/tree.test.ts b/packages/ssz/test/perf/tree.test.ts index d69ccead..b79aca8e 100644 --- a/packages/ssz/test/perf/tree.test.ts +++ b/packages/ssz/test/perf/tree.test.ts @@ -1,4 +1,4 @@ -import {itBench} from "@dapplion/benchmark"; +import {describe, bench} from "@chainsafe/benchmark"; describe("tree", () => { const n = 4264957196; @@ -6,7 +6,7 @@ describe("tree", () => { const runsFactor = 1e6; - itBench({id: "bitstring", runsFactor}, () => { + bench({id: "bitstring", runsFactor}, () => { for (let j = 0; j < runsFactor; j++) { const s = n.toString(2); for (let i = 0; i < d; i++) { @@ -15,7 +15,7 @@ describe("tree", () => { } }); - itBench({id: "bit mask", runsFactor}, () => { + bench({id: "bit mask", runsFactor}, () => { for (let j = 0; j < runsFactor; j++) { for (let i = 0; i < d; i++) { const mask = 1 << i; diff --git a/packages/ssz/test/perf/uint.test.ts b/packages/ssz/test/perf/uint.test.ts index 5c8ec819..d028d7b1 100644 --- a/packages/ssz/test/perf/uint.test.ts +++ b/packages/ssz/test/perf/uint.test.ts @@ -1,4 +1,4 @@ -import {itBench} from "@dapplion/benchmark"; +import {describe, bench} from "@chainsafe/benchmark"; import {ContainerType, UintNumberType, UintBigintType} from "../../src/index.js"; describe("Uint64 types", () => { @@ -16,7 +16,7 @@ describe("Uint64 types", () => { const numLoop = 1_000_000; - itBench(`struct - increase slot to ${numLoop}`, () => { + bench(`struct - increase slot to ${numLoop}`, () => { const state: IBeaconState = { slot: 0, }; @@ -25,14 +25,14 @@ describe("Uint64 types", () => { } }); - itBench(`UintNumberType - increase slot to ${numLoop}`, () => { + bench(`UintNumberType - increase slot to ${numLoop}`, () => { const tbState = ContainerNumber.toViewDU({slot: 0}); for (let i = 0; i < numLoop; i++) { tbState.slot++; } }); - itBench(`UintBigintType - increase slot to ${numLoop}`, () => { + bench(`UintBigintType - increase slot to ${numLoop}`, () => { const tbState = ContainerBigint.toViewDU({slot: BigInt(0)}); for (let i = 0; i < numLoop; i++) { tbState.slot++; diff --git a/packages/ssz/test/perf/uintFromBytes.test.ts b/packages/ssz/test/perf/uintFromBytes.test.ts index be148330..4ec0bc68 100644 --- a/packages/ssz/test/perf/uintFromBytes.test.ts +++ b/packages/ssz/test/perf/uintFromBytes.test.ts @@ -1,5 +1,5 @@ import {LeafNode} from "@chainsafe/persistent-merkle-tree"; -import {itBench} from "@dapplion/benchmark"; +import {describe, bench, beforeAll} from "@chainsafe/benchmark"; import {UintNumberType, UintBigintType, uintNumberByteLens, uintBigintByteLens} from "../../src/type/uint.js"; const POW_32 = 2 ** 32; @@ -20,7 +20,7 @@ describe("Uint64 deserialize", () => { // Single leafNode - before("Create random bytes", () => { + beforeAll(() => { const firstValue = byteLength >= 8 ? 30e9 : 2 ** (bitLength - 1); const maxValue = byteLength >= 8 ? Number.MAX_SAFE_INTEGER : 2 ** bitLength; @@ -47,13 +47,13 @@ describe("Uint64 deserialize", () => { } }); - itBench(`UintBigint${bitLength} x ${numElements} tree_deserialize`, () => { + bench(`UintBigint${bitLength} x ${numElements} tree_deserialize`, () => { for (let i = 0; i < numElements; i++) { uintNumberType.tree_deserializeFromBytes({uint8Array, dataView}, i * byteLength, (i + 1) * byteLength); } }); - itBench(`UintBigint${bitLength} x ${numElements} tree_serialize`, () => { + bench(`UintBigint${bitLength} x ${numElements} tree_serialize`, () => { const arrayBuf = new ArrayBuffer(arrayBuffer.byteLength); const dataView = new DataView(arrayBuf); const uint8Array = new Uint8Array(arrayBuf); @@ -77,8 +77,7 @@ describe("Uint64 deserialize", () => { const values: number[] = []; // Single leafNode - - before("Create random bytes", () => { + beforeAll(() => { const firstValue = byteLength >= 8 ? 30e9 : 2 ** (bitLength - 1); const maxValue = byteLength >= 8 ? Number.MAX_SAFE_INTEGER : 2 ** bitLength; @@ -106,13 +105,13 @@ describe("Uint64 deserialize", () => { } }); - itBench(`UintBigint${bitLength} x ${numElements} value_deserialize`, () => { + bench(`UintBigint${bitLength} x ${numElements} value_deserialize`, () => { for (let i = 0; i < numElements; i++) { uintNumberType.value_deserializeFromBytes({uint8Array, dataView}, i * byteLength, (i + 1) * byteLength); } }); - itBench(`UintBigint${bitLength} x ${numElements} value_serialize`, () => { + bench(`UintBigint${bitLength} x ${numElements} value_serialize`, () => { const arrayBuf = new ArrayBuffer(arrayBuffer.byteLength); const dataView = new DataView(arrayBuf); for (let i = 0; i < numElements; i++) { @@ -134,7 +133,7 @@ describe("Uint64 deserialize", () => { let dataView: DataView; const values: bigint[] = []; - before("Create random bytes", () => { + beforeAll(() => { const firstValue = BigInt(2) ** BigInt(bitLength - 1); const maxValue = BigInt(2) ** BigInt(bitLength); @@ -162,7 +161,7 @@ describe("Uint64 deserialize", () => { } }); - itBench(`UintBigint${bitLength} x ${numElements} deserialize`, () => { + bench(`UintBigint${bitLength} x ${numElements} deserialize`, () => { const output: bigint[] = []; for (let i = 0; i < numElements; i++) { const value = uintBigintType.value_deserializeFromBytes( @@ -174,7 +173,7 @@ describe("Uint64 deserialize", () => { } }); - itBench(`UintBigint${bitLength} x ${numElements} serialize`, () => { + bench(`UintBigint${bitLength} x ${numElements} serialize`, () => { const arrayBuf = new ArrayBuffer(arrayBuffer.byteLength); const dataView = new DataView(arrayBuf); for (let i = 0; i < numElements; i++) { @@ -196,7 +195,7 @@ describe("Uint64 deserialize", () => { let dataView: DataView; let buffer: Buffer; - before("Create random bytes", () => { + beforeAll(() => { arrayBuffer = new ArrayBuffer(bytesTotal); uint8Array = new Uint8Array(arrayBuffer); uint32Array = new Uint32Array(arrayBuffer); @@ -207,25 +206,25 @@ describe("Uint64 deserialize", () => { } }); - itBench(`Slice from Uint8Array x${bytes32Elements}`, () => { + bench(`Slice from Uint8Array x${bytes32Elements}`, () => { for (let i = 0; i < bytesTotal; i += 32) { uint8Array.slice(i, i + 32); } }); - itBench(`Slice from ArrayBuffer x${bytes32Elements}`, () => { + bench(`Slice from ArrayBuffer x${bytes32Elements}`, () => { for (let i = 0; i < bytesTotal; i += 32) { arrayBuffer.slice(i, i + 32); } }); - itBench(`Slice from ArrayBuffer x${bytes32Elements} + new Uint8Array`, () => { + bench(`Slice from ArrayBuffer x${bytes32Elements} + new Uint8Array`, () => { for (let i = 0; i < bytesTotal; i += 32) { new Uint8Array(dataView.buffer.slice(i, i + 32)); } }); - itBench(`Copy Uint8Array ${numElements} iterate`, () => { + bench(`Copy Uint8Array ${numElements} iterate`, () => { const byteLen = uint8Array.length; const uint8ArrayB = new Uint8Array(byteLen); for (let i = 0; i < uint8Array.length; i++) { @@ -233,50 +232,50 @@ describe("Uint64 deserialize", () => { } }); - itBench(`Copy Uint8Array ${numElements} slice`, () => { + bench(`Copy Uint8Array ${numElements} slice`, () => { uint8Array.slice(0, uint8Array.length); }); - itBench(`Copy Uint8Array ${numElements} Uint8Array.prototype.slice.call`, () => { + bench(`Copy Uint8Array ${numElements} Uint8Array.prototype.slice.call`, () => { Uint8Array.prototype.slice.call(uint8Array, 0, uint8Array.length); }); - itBench(`Copy Buffer ${numElements} Uint8Array.prototype.slice.call`, () => { + bench(`Copy Buffer ${numElements} Uint8Array.prototype.slice.call`, () => { Uint8Array.prototype.slice.call(buffer, 0, uint8Array.length); }); - itBench(`Copy Uint8Array ${numElements} slice + set`, () => { + bench(`Copy Uint8Array ${numElements} slice + set`, () => { const byteLen = uint8Array.length; const uint8ArrayNew = new Uint8Array(byteLen); uint8ArrayNew.set(uint8Array.slice(0, byteLen)); }); - itBench(`Copy Uint8Array ${numElements} subarray + set`, () => { + bench(`Copy Uint8Array ${numElements} subarray + set`, () => { const byteLen = uint8Array.length; const uint8ArrayNew = new Uint8Array(byteLen); uint8ArrayNew.set(uint8Array.subarray(0, byteLen)); }); - itBench(`Copy Uint8Array ${numElements} slice arrayBuffer`, () => { + bench(`Copy Uint8Array ${numElements} slice arrayBuffer`, () => { const byteLen = uint8Array.length; new Uint8Array(arrayBuffer.slice(0, byteLen)); }); - itBench(`Uint64 deserialize ${numElements} - iterate Uint8Array`, () => { + bench(`Uint64 deserialize ${numElements} - iterate Uint8Array`, () => { const values: number[] = []; for (let i = 0; i < numElements; i++) { values.push(uint8Array[i]); } }); - itBench(`Uint64 deserialize ${numElements} - by Uint32A`, () => { + bench(`Uint64 deserialize ${numElements} - by Uint32A`, () => { const values: number[] = []; for (let i = 0; i < numElements; i++) { values.push(uint32Array[i * 2]); } }); - itBench(`Uint64 deserialize ${numElements} - by DataView.getUint32 x2`, () => { + bench(`Uint64 deserialize ${numElements} - by DataView.getUint32 x2`, () => { const values: number[] = []; for (let i = 0; i < numElements; i++) { const lo = dataView.getUint32(i * 8, true); @@ -285,7 +284,7 @@ describe("Uint64 deserialize", () => { } }); - itBench(`Uint64 deserialize ${numElements} - by DataView.getBigUint64`, () => { + bench(`Uint64 deserialize ${numElements} - by DataView.getBigUint64`, () => { const values: number[] = []; for (let i = 0; i < numElements; i++) { const bn = dataView.getBigUint64(i * 8, true); @@ -293,7 +292,7 @@ describe("Uint64 deserialize", () => { } }); - itBench(`Uint64 deserialize ${numElements} - by byte`, () => { + bench(`Uint64 deserialize ${numElements} - by byte`, () => { const byteLength = 8; const values: number[] = []; diff --git a/packages/ssz/test/spec/runValidTest.ts b/packages/ssz/test/spec/runValidTest.ts index 9f8839a0..1f0b0553 100644 --- a/packages/ssz/test/spec/runValidTest.ts +++ b/packages/ssz/test/spec/runValidTest.ts @@ -96,7 +96,7 @@ export function runValidSszTest(type: Type, testData: ValidTestCaseData // To print the chunk roots of a type value // - // $ RENDER_ROOTS=true ONLY_ID="4 arrays" ../../node_modules/.bin/mocha test/unit/byType/vector/valid.test.ts + // $ RENDER_ROOTS=true ONLY_ID="4 arrays" ../../node_modules/.bin/vitest test/unit/byType/vector/valid.test.ts // // 0x0000000000000000000000000000000000000000000000000000000000000000 if (process.env.RENDER_ROOTS) { @@ -137,7 +137,7 @@ export function runValidSszTest(type: Type, testData: ValidTestCaseData // To print a tree a single test you are debugging do // - // $ RENDER_TREE=true ONLY_ID="4 arrays" ../../node_modules/.bin/mocha test/unit/byType/vector/valid.test.ts + // $ RENDER_TREE=true ONLY_ID="4 arrays" ../../node_modules/.bin/vitest test/unit/byType/vector/valid.test.ts // // '1000' => '0x0000000000000000000000000000000000000000000000000000000000000000', // '1001' => '0x0000000000000000000000000000000000000000000000000000000000000000', diff --git a/yarn.lock b/yarn.lock index 8ceb785d..7df70ea2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,20 +2,30 @@ # yarn lockfile v1 -"@actions/cache@^1.0.7": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@actions/cache/-/cache-1.0.11.tgz#db7909ba7f7e7bc9bd1a761c172c48807586b996" - integrity sha512-L+VCF1JpFePAzxkYtpwYDWnd0WzSU1DoNPE2cuINKpEie27ONH0Cpqt40cG8NiJW4zbZLN+kNkEDo3F2MkUuRw== +"@actions/cache@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@actions/cache/-/cache-4.0.0.tgz#24845cced4326b11b6115fd3e2cff8e7ea3afed2" + integrity sha512-WIuxjnZ44lNYtIS4fqSaYvF00hORdy3cSin+jx8xNgBVGWnNIAiCBHjlwusVQlcgExoQC9pHXGrDsZyZr7rCDQ== dependencies: - "@actions/core" "^1.2.6" + "@actions/core" "^1.11.1" "@actions/exec" "^1.0.1" "@actions/glob" "^0.1.0" - "@actions/http-client" "^1.0.9" + "@actions/http-client" "^2.1.1" "@actions/io" "^1.0.1" + "@azure/abort-controller" "^1.1.0" "@azure/ms-rest-js" "^2.6.0" - "@azure/storage-blob" "^12.8.0" - semver "^6.1.0" - uuid "^3.3.3" + "@azure/storage-blob" "^12.13.0" + "@protobuf-ts/plugin" "^2.9.4" + semver "^6.3.1" + twirp-ts "^2.5.0" + +"@actions/core@^1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.11.1.tgz#ae683aac5112438021588030efb53b1adb86f172" + integrity sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A== + dependencies: + "@actions/exec" "^1.1.1" + "@actions/http-client" "^2.0.1" "@actions/core@^1.2.6": version "1.10.1" @@ -25,22 +35,22 @@ "@actions/http-client" "^2.0.1" uuid "^8.3.2" -"@actions/exec@^1.0.1": +"@actions/exec@^1.0.1", "@actions/exec@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@actions/exec/-/exec-1.1.1.tgz#2e43f28c54022537172819a7cf886c844221a611" integrity sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w== dependencies: "@actions/io" "^1.0.1" -"@actions/github@^5.0.0": - version "5.1.1" - resolved "https://registry.yarnpkg.com/@actions/github/-/github-5.1.1.tgz#40b9b9e1323a5efcf4ff7dadd33d8ea51651bbcb" - integrity sha512-Nk59rMDoJaV+mHCOJPXuvB1zIbomlKS0dmSIqPGxd0enAXBnOfn4VWF+CGtRCwXZG9Epa54tZA7VIRlJDS8A6g== +"@actions/github@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@actions/github/-/github-6.0.0.tgz#65883433f9d81521b782a64cc1fd45eef2191ea7" + integrity sha512-alScpSVnYmjNEXboZjarjukQEzgCRmjMv6Xj47fsdnqGS73bjJNDpiiXmp8jr0UZLdUB6d9jW63IcmddUP+l0g== dependencies: - "@actions/http-client" "^2.0.1" - "@octokit/core" "^3.6.0" - "@octokit/plugin-paginate-rest" "^2.17.0" - "@octokit/plugin-rest-endpoint-methods" "^5.13.0" + "@actions/http-client" "^2.2.0" + "@octokit/core" "^5.0.1" + "@octokit/plugin-paginate-rest" "^9.0.0" + "@octokit/plugin-rest-endpoint-methods" "^10.0.0" "@actions/glob@^0.1.0": version "0.1.2" @@ -50,13 +60,6 @@ "@actions/core" "^1.2.6" minimatch "^3.0.4" -"@actions/http-client@^1.0.9": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@actions/http-client/-/http-client-1.0.11.tgz#c58b12e9aa8b159ee39e7dd6cbd0e91d905633c0" - integrity sha512-VRYHGQV1rqnROJqdMvGUbY/Kn8vriQe/F9HR2AlYHzmKuM/p3kjNuXhmdBfcVgsvRWTz5C5XW5xvndZrVBuAYg== - dependencies: - tunnel "0.0.6" - "@actions/http-client@^2.0.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@actions/http-client/-/http-client-2.2.1.tgz#ed3fe7a5a6d317ac1d39886b0bb999ded229bb38" @@ -65,6 +68,14 @@ tunnel "^0.0.6" undici "^5.25.4" +"@actions/http-client@^2.1.1", "@actions/http-client@^2.2.0": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@actions/http-client/-/http-client-2.2.3.tgz#31fc0b25c0e665754ed39a9f19a8611fc6dab674" + integrity sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA== + dependencies: + tunnel "^0.0.6" + undici "^5.25.4" + "@actions/io@^1.0.1": version "1.1.3" resolved "https://registry.yarnpkg.com/@actions/io/-/io-1.1.3.tgz#4cdb6254da7962b07473ff5c335f3da485d94d71" @@ -78,21 +89,21 @@ "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.24" -"@azure/abort-controller@^1.0.0": +"@azure/abort-controller@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@azure/abort-controller/-/abort-controller-1.1.0.tgz#788ee78457a55af8a1ad342acb182383d2119249" integrity sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw== dependencies: tslib "^2.2.0" -"@azure/abort-controller@^2.0.0": +"@azure/abort-controller@^2.0.0", "@azure/abort-controller@^2.1.2": version "2.1.2" resolved "https://registry.yarnpkg.com/@azure/abort-controller/-/abort-controller-2.1.2.tgz#42fe0ccab23841d9905812c58f1082d27784566d" integrity sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA== dependencies: tslib "^2.6.2" -"@azure/core-auth@^1.1.4", "@azure/core-auth@^1.3.0": +"@azure/core-auth@^1.1.4": version "1.7.2" resolved "https://registry.yarnpkg.com/@azure/core-auth/-/core-auth-1.7.2.tgz#558b7cb7dd12b00beec07ae5df5907d74df1ebd9" integrity sha512-Igm/S3fDYmnMq1uKS38Ae1/m37B3zigdlZw+kocwEhh5GjyKjPrXKO2J6rzpC1wAxrNil/jX9BJRqBshyjnF3g== @@ -101,25 +112,36 @@ "@azure/core-util" "^1.1.0" tslib "^2.6.2" -"@azure/core-http@^3.0.0": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@azure/core-http/-/core-http-3.0.4.tgz#024b2909bbc0f2fce08c74f97a21312c4f42e922" - integrity sha512-Fok9VVhMdxAFOtqiiAtg74fL0UJkt0z3D+ouUUxcRLzZNBioPRAMJFVxiWoJljYpXsRi4GDQHzQHDc9AiYaIUQ== +"@azure/core-auth@^1.4.0", "@azure/core-auth@^1.8.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@azure/core-auth/-/core-auth-1.9.0.tgz#ac725b03fabe3c892371065ee9e2041bee0fd1ac" + integrity sha512-FPwHpZywuyasDSLMqJ6fhbOK3TqUdviZNF8OqRGA4W5Ewib2lEEZ+pBsYcBa88B2NGO/SEnYPGhyBqNlE8ilSw== + dependencies: + "@azure/abort-controller" "^2.0.0" + "@azure/core-util" "^1.11.0" + tslib "^2.6.2" + +"@azure/core-client@^1.3.0", "@azure/core-client@^1.6.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@azure/core-client/-/core-client-1.9.2.tgz#6fc69cee2816883ab6c5cdd653ee4f2ff9774f74" + integrity sha512-kRdry/rav3fUKHl/aDLd/pDLcB+4pOFwPPTVEExuMyaI5r+JBbMWqRbCY1pn5BniDaU3lRxO9eaQ1AmSMehl/w== dependencies: - "@azure/abort-controller" "^1.0.0" - "@azure/core-auth" "^1.3.0" - "@azure/core-tracing" "1.0.0-preview.13" - "@azure/core-util" "^1.1.1" + "@azure/abort-controller" "^2.0.0" + "@azure/core-auth" "^1.4.0" + "@azure/core-rest-pipeline" "^1.9.1" + "@azure/core-tracing" "^1.0.0" + "@azure/core-util" "^1.6.1" "@azure/logger" "^1.0.0" - "@types/node-fetch" "^2.5.0" - "@types/tunnel" "^0.0.3" - form-data "^4.0.0" - node-fetch "^2.6.7" - process "^0.11.10" - tslib "^2.2.0" - tunnel "^0.0.6" - uuid "^8.3.0" - xml2js "^0.5.0" + tslib "^2.6.2" + +"@azure/core-http-compat@^2.0.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@azure/core-http-compat/-/core-http-compat-2.1.2.tgz#d1585ada24ba750dc161d816169b33b35f762f0d" + integrity sha512-5MnV1yqzZwgNLLjlizsU3QqOeQChkIXw781Fwh1xdAqJR5AA32IUaq6xv1BICJvfbHoa+JYcaij2HFkhLbNTJQ== + dependencies: + "@azure/abort-controller" "^2.0.0" + "@azure/core-client" "^1.3.0" + "@azure/core-rest-pipeline" "^1.3.0" "@azure/core-lro@^2.2.0": version "2.7.2" @@ -138,15 +160,28 @@ dependencies: tslib "^2.6.2" -"@azure/core-tracing@1.0.0-preview.13": - version "1.0.0-preview.13" - resolved "https://registry.yarnpkg.com/@azure/core-tracing/-/core-tracing-1.0.0-preview.13.tgz#55883d40ae2042f6f1e12b17dd0c0d34c536d644" - integrity sha512-KxDlhXyMlh2Jhj2ykX6vNEU0Vou4nHr025KoSEiz7cS3BNiHNaZcdECk/DmLkEB0as5T7b/TpRcehJ5yV6NeXQ== +"@azure/core-rest-pipeline@^1.10.1", "@azure/core-rest-pipeline@^1.3.0", "@azure/core-rest-pipeline@^1.9.1": + version "1.18.2" + resolved "https://registry.yarnpkg.com/@azure/core-rest-pipeline/-/core-rest-pipeline-1.18.2.tgz#fa3a83b412d4b3e33edca30a71b1d5838306c075" + integrity sha512-IkTf/DWKyCklEtN/WYW3lqEsIaUDshlzWRlZNNwSYtFcCBQz++OtOjxNpm8rr1VcbMS6RpjybQa3u6B6nG0zNw== dependencies: - "@opentelemetry/api" "^1.0.1" - tslib "^2.2.0" + "@azure/abort-controller" "^2.0.0" + "@azure/core-auth" "^1.8.0" + "@azure/core-tracing" "^1.0.1" + "@azure/core-util" "^1.11.0" + "@azure/logger" "^1.0.0" + http-proxy-agent "^7.0.0" + https-proxy-agent "^7.0.0" + tslib "^2.6.2" + +"@azure/core-tracing@^1.0.0", "@azure/core-tracing@^1.0.1", "@azure/core-tracing@^1.1.2": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@azure/core-tracing/-/core-tracing-1.2.0.tgz#7be5d53c3522d639cf19042cbcdb19f71bc35ab2" + integrity sha512-UKTiEJPkWcESPYJz3X5uKRYyOcJD+4nYph+KpfdPRnQJVrZfk0KJgdnaAWKfhsBBtAf/D58Az4AvCJEmWgIBAg== + dependencies: + tslib "^2.6.2" -"@azure/core-util@^1.1.0", "@azure/core-util@^1.1.1", "@azure/core-util@^1.2.0": +"@azure/core-util@^1.1.0", "@azure/core-util@^1.2.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@azure/core-util/-/core-util-1.9.0.tgz#469afd7e6452d5388b189f90d33f7756b0b210d1" integrity sha512-AfalUQ1ZppaKuxPPMsFEUdX6GZPB3d9paR9d/TTL7Ow2De8cJaC7ibi7kWVlFAVPCYo31OcnGymc0R89DX8Oaw== @@ -154,6 +189,22 @@ "@azure/abort-controller" "^2.0.0" tslib "^2.6.2" +"@azure/core-util@^1.11.0", "@azure/core-util@^1.6.1": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@azure/core-util/-/core-util-1.11.0.tgz#f530fc67e738aea872fbdd1cc8416e70219fada7" + integrity sha512-DxOSLua+NdpWoSqULhjDyAZTXFdP/LKkqtYuxxz1SCN289zk3OG8UOpnCQAz/tygyACBtWp/BoO72ptK7msY8g== + dependencies: + "@azure/abort-controller" "^2.0.0" + tslib "^2.6.2" + +"@azure/core-xml@^1.4.3": + version "1.4.4" + resolved "https://registry.yarnpkg.com/@azure/core-xml/-/core-xml-1.4.4.tgz#a8656751943bf492762f758d147d33dfcd933d9e" + integrity sha512-J4FYAqakGXcbfeZjwjMzjNcpcH4E+JtEBv+xcV1yL0Ydn/6wbQfeFKTCHh9wttAi0lmajHw7yBbHPRG+YHckZQ== + dependencies: + fast-xml-parser "^4.4.1" + tslib "^2.6.2" + "@azure/logger@^1.0.0": version "1.1.2" resolved "https://registry.yarnpkg.com/@azure/logger/-/logger-1.1.2.tgz#3f4b876cefad328dc14aff8b850d63b611e249dc" @@ -175,16 +226,21 @@ uuid "^8.3.2" xml2js "^0.5.0" -"@azure/storage-blob@^12.8.0": - version "12.18.0" - resolved "https://registry.yarnpkg.com/@azure/storage-blob/-/storage-blob-12.18.0.tgz#9dd001c9aa5e972216f5af15131009086cfeb59e" - integrity sha512-BzBZJobMoDyjJsPRMLNHvqHycTGrT8R/dtcTx9qUFcqwSRfGVK9A/cZ7Nx38UQydT9usZGbaDCN75QRNjezSAA== +"@azure/storage-blob@^12.13.0": + version "12.26.0" + resolved "https://registry.yarnpkg.com/@azure/storage-blob/-/storage-blob-12.26.0.tgz#1fae3a0b68d8a91b56c89f353507916bf8705d1c" + integrity sha512-SriLPKezypIsiZ+TtlFfE46uuBIap2HeaQVS78e1P7rz5OSbq0rsd52WE1mC5f7vAeLiXqv7I7oRhL3WFZEw3Q== dependencies: - "@azure/abort-controller" "^1.0.0" - "@azure/core-http" "^3.0.0" + "@azure/abort-controller" "^2.1.2" + "@azure/core-auth" "^1.4.0" + "@azure/core-client" "^1.6.2" + "@azure/core-http-compat" "^2.0.0" "@azure/core-lro" "^2.2.0" "@azure/core-paging" "^1.1.1" - "@azure/core-tracing" "1.0.0-preview.13" + "@azure/core-rest-pipeline" "^1.10.1" + "@azure/core-tracing" "^1.1.2" + "@azure/core-util" "^1.6.1" + "@azure/core-xml" "^1.4.3" "@azure/logger" "^1.0.0" events "^3.0.0" tslib "^2.2.0" @@ -1312,6 +1368,11 @@ "@types/tough-cookie" "^4.0.5" tough-cookie "^4.1.4" +"@chainsafe/as-sha256@0.5.0", "@chainsafe/as-sha256@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@chainsafe/as-sha256/-/as-sha256-0.5.0.tgz#2523fbef2b80b5000f9aa71f4a76e5c2c5c076bb" + integrity sha512-dTIY6oUZNdC5yDTVP5Qc9hAlKAsn0QTQ2DnQvvsbTnKSTbYs3p5RPN0aIUqN0liXei/9h24c7V0dkV44cnWIQA== + "@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" @@ -1325,6 +1386,24 @@ core-js "2.6.10" require-resolve "0.0.2" +"@chainsafe/benchmark@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@chainsafe/benchmark/-/benchmark-1.1.0.tgz#4b5d569917377a8dc70de552bffae6e92a022fad" + integrity sha512-QjyN768ImQxhWaOUKLev7xNtnZQXoeVooK6/CRvAh+RGyKwtAnFnzn9YGSmEHzHFRJ33SeJn7biif0zCWfJ84g== + dependencies: + "@actions/cache" "^4.0.0" + "@actions/github" "^6.0.0" + "@vitest/runner" "^2.1.8" + ajv "^8.17.1" + aws-sdk "^2.932.0" + cli-table3 "^0.6.5" + csv-parse "^5.6.0" + csv-stringify "^6.5.2" + glob "^10.4.5" + log-symbols "^7.0.0" + yaml "^2.7.0" + yargs "^17.7.2" + "@chainsafe/hashtree-darwin-arm64@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@chainsafe/hashtree-darwin-arm64/-/hashtree-darwin-arm64-1.0.1.tgz#e2c60090c56a1c8dc8bdff329856184ad32e4cd5" @@ -1349,6 +1428,15 @@ "@chainsafe/hashtree-linux-arm64-gnu" "1.0.1" "@chainsafe/hashtree-linux-x64-gnu" "1.0.1" +"@chainsafe/persistent-merkle-tree@0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.8.0.tgz#18e2f0a5de3a0b59c6e5be8797a78e0d209dd7dc" + integrity sha512-hh6C1JO6SKlr0QGNTNtTLqgGVMA/Bc20wD6CeMHp+wqbFKCULRJuBUxhF4WDx/7mX8QlqF3nFriF/Eo8oYJ4/A== + dependencies: + "@chainsafe/as-sha256" "0.5.0" + "@chainsafe/hashtree" "1.0.1" + "@noble/hashes" "^1.3.0" + "@chainsafe/persistent-merkle-tree@^0.7.2": version "0.7.2" resolved "https://registry.yarnpkg.com/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.7.2.tgz#f0ef91daf36752f827432333cbc965f4bf6e750e" @@ -1365,6 +1453,19 @@ "@chainsafe/as-sha256" "^0.4.2" "@chainsafe/persistent-merkle-tree" "^0.7.2" +"@chainsafe/ssz@^0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@chainsafe/ssz/-/ssz-0.18.0.tgz#773d40df9dff3b6a2a4c6685d9797abceb9d36f7" + integrity sha512-1ikTjk3JK6+fsGWiT5IvQU0AP6gF3fDzGmPfkKthbcbgTUR8fjB83Ywp9ko/ZoiDGfrSFkATgT4hvRzclu0IAA== + dependencies: + "@chainsafe/as-sha256" "0.5.0" + "@chainsafe/persistent-merkle-tree" "0.8.0" + +"@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" @@ -1372,19 +1473,6 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" -"@dapplion/benchmark@^0.2.2": - version "0.2.4" - resolved "https://registry.yarnpkg.com/@dapplion/benchmark/-/benchmark-0.2.4.tgz#e75443a067af4c923c5c32c932750d297b3a34c0" - integrity sha512-57nIqyEEgEoSPzLTTgkt5NukLbZuYCg9lmNml+/QR4TcwwFugSuSPmNQTDKyqO92l8XmI8AfSxSoIioAXkJ7lw== - dependencies: - "@actions/cache" "^1.0.7" - "@actions/github" "^5.0.0" - ajv "^8.6.0" - aws-sdk "^2.932.0" - csv-parse "^4.16.0" - csv-stringify "^5.6.2" - yargs "^17.1.1" - "@discoveryjs/json-ext@^0.5.0": version "0.5.7" resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" @@ -2077,30 +2165,15 @@ resolved "https://registry.yarnpkg.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-19.0.4.tgz#1cf618594e442385d6bc33411acccb7759546546" integrity sha512-eHEdPjV0GlblyBM501xfe47tPRzugw2U+YOkZh++Ago9MDOrs/ULS9+RM3NhvZl2WnkpNYDbQMjzbQ0r7rxlTA== -"@octokit/auth-token@^2.4.4": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.5.0.tgz#27c37ea26c205f28443402477ffd261311f21e36" - integrity sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g== - dependencies: - "@octokit/types" "^6.0.3" - "@octokit/auth-token@^3.0.0": version "3.0.4" resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-3.0.4.tgz#70e941ba742bdd2b49bdb7393e821dea8520a3db" integrity sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ== -"@octokit/core@^3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@octokit/core/-/core-3.6.0.tgz#3376cb9f3008d9b3d110370d90e0a1fcd5fe6085" - integrity sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q== - dependencies: - "@octokit/auth-token" "^2.4.4" - "@octokit/graphql" "^4.5.8" - "@octokit/request" "^5.6.3" - "@octokit/request-error" "^2.0.5" - "@octokit/types" "^6.0.3" - before-after-hook "^2.2.0" - universal-user-agent "^6.0.0" +"@octokit/auth-token@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-4.0.0.tgz#40d203ea827b9f17f42a29c6afb93b7745ef80c7" + integrity sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA== "@octokit/core@^4.2.1": version "4.2.4" @@ -2115,13 +2188,17 @@ before-after-hook "^2.2.0" universal-user-agent "^6.0.0" -"@octokit/endpoint@^6.0.1": - version "6.0.12" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.12.tgz#3b4d47a4b0e79b1027fb8d75d4221928b2d05658" - integrity sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA== - dependencies: - "@octokit/types" "^6.0.3" - is-plain-object "^5.0.0" +"@octokit/core@^5.0.1": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@octokit/core/-/core-5.2.0.tgz#ddbeaefc6b44a39834e1bb2e58a49a117672a7ea" + integrity sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg== + dependencies: + "@octokit/auth-token" "^4.0.0" + "@octokit/graphql" "^7.1.0" + "@octokit/request" "^8.3.1" + "@octokit/request-error" "^5.1.0" + "@octokit/types" "^13.0.0" + before-after-hook "^2.2.0" universal-user-agent "^6.0.0" "@octokit/endpoint@^7.0.0": @@ -2133,13 +2210,12 @@ is-plain-object "^5.0.0" universal-user-agent "^6.0.0" -"@octokit/graphql@^4.5.8": - version "4.8.0" - resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.8.0.tgz#664d9b11c0e12112cbf78e10f49a05959aa22cc3" - integrity sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg== +"@octokit/endpoint@^9.0.1": + version "9.0.5" + resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-9.0.5.tgz#e6c0ee684e307614c02fc6ac12274c50da465c44" + integrity sha512-ekqR4/+PCLkEBF6qgj8WqJfvDq65RH85OAgrtnVp1mSxaXF03u2xW/hUdweGS5654IlC0wkNYC18Z50tSYTAFw== dependencies: - "@octokit/request" "^5.6.0" - "@octokit/types" "^6.0.3" + "@octokit/types" "^13.1.0" universal-user-agent "^6.0.0" "@octokit/graphql@^5.0.0": @@ -2151,28 +2227,35 @@ "@octokit/types" "^9.0.0" universal-user-agent "^6.0.0" -"@octokit/openapi-types@^12.11.0": - version "12.11.0" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-12.11.0.tgz#da5638d64f2b919bca89ce6602d059f1b52d3ef0" - integrity sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ== +"@octokit/graphql@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-7.1.0.tgz#9bc1c5de92f026648131f04101cab949eeffe4e0" + integrity sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ== + dependencies: + "@octokit/request" "^8.3.0" + "@octokit/types" "^13.0.0" + universal-user-agent "^6.0.0" "@octokit/openapi-types@^18.0.0": version "18.1.1" resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-18.1.1.tgz#09bdfdabfd8e16d16324326da5148010d765f009" integrity sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw== +"@octokit/openapi-types@^20.0.0": + version "20.0.0" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-20.0.0.tgz#9ec2daa0090eeb865ee147636e0c00f73790c6e5" + integrity sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA== + +"@octokit/openapi-types@^23.0.1": + version "23.0.1" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-23.0.1.tgz#3721646ecd36b596ddb12650e0e89d3ebb2dd50e" + integrity sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g== + "@octokit/plugin-enterprise-rest@6.0.1": version "6.0.1" resolved "https://registry.yarnpkg.com/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz#e07896739618dab8da7d4077c658003775f95437" integrity sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw== -"@octokit/plugin-paginate-rest@^2.17.0": - version "2.21.3" - resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz#7f12532797775640dbb8224da577da7dc210c87e" - integrity sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw== - dependencies: - "@octokit/types" "^6.40.0" - "@octokit/plugin-paginate-rest@^6.1.2": version "6.1.2" resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-6.1.2.tgz#f86456a7a1fe9e58fec6385a85cf1b34072341f8" @@ -2181,18 +2264,24 @@ "@octokit/tsconfig" "^1.0.2" "@octokit/types" "^9.2.3" +"@octokit/plugin-paginate-rest@^9.0.0": + version "9.2.1" + resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.2.1.tgz#2e2a2f0f52c9a4b1da1a3aa17dabe3c459b9e401" + integrity sha512-wfGhE/TAkXZRLjksFXuDZdmGnJQHvtU/joFQdweXUgzo1XwvBCD4o4+75NtFfjfLK5IwLf9vHTfSiU3sLRYpRw== + dependencies: + "@octokit/types" "^12.6.0" + "@octokit/plugin-request-log@^1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== -"@octokit/plugin-rest-endpoint-methods@^5.13.0": - version "5.16.2" - resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz#7ee8bf586df97dd6868cf68f641354e908c25342" - integrity sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw== +"@octokit/plugin-rest-endpoint-methods@^10.0.0": + version "10.4.1" + resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-10.4.1.tgz#41ba478a558b9f554793075b2e20cd2ef973be17" + integrity sha512-xV1b+ceKV9KytQe3zCVqjg+8GTGfDYwaT1ATU5isiUyVtlVAO3HNdzpS4sr4GBx4hxQ46s7ITtZrAsxG22+rVg== dependencies: - "@octokit/types" "^6.39.0" - deprecation "^2.3.1" + "@octokit/types" "^12.6.0" "@octokit/plugin-rest-endpoint-methods@^7.1.2": version "7.2.3" @@ -2201,15 +2290,6 @@ dependencies: "@octokit/types" "^10.0.0" -"@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.1.0.tgz#9e150357831bfc788d13a4fd4b1913d60c74d677" - integrity sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg== - dependencies: - "@octokit/types" "^6.0.3" - deprecation "^2.0.0" - once "^1.4.0" - "@octokit/request-error@^3.0.0": version "3.0.3" resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-3.0.3.tgz#ef3dd08b8e964e53e55d471acfe00baa892b9c69" @@ -2219,17 +2299,14 @@ deprecation "^2.0.0" once "^1.4.0" -"@octokit/request@^5.6.0", "@octokit/request@^5.6.3": - version "5.6.3" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.6.3.tgz#19a022515a5bba965ac06c9d1334514eb50c48b0" - integrity sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A== +"@octokit/request-error@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-5.1.0.tgz#ee4138538d08c81a60be3f320cd71063064a3b30" + integrity sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q== dependencies: - "@octokit/endpoint" "^6.0.1" - "@octokit/request-error" "^2.1.0" - "@octokit/types" "^6.16.1" - is-plain-object "^5.0.0" - node-fetch "^2.6.7" - universal-user-agent "^6.0.0" + "@octokit/types" "^13.1.0" + deprecation "^2.0.0" + once "^1.4.0" "@octokit/request@^6.0.0": version "6.2.8" @@ -2243,6 +2320,16 @@ node-fetch "^2.6.7" universal-user-agent "^6.0.0" +"@octokit/request@^8.3.0", "@octokit/request@^8.3.1": + version "8.4.0" + resolved "https://registry.yarnpkg.com/@octokit/request/-/request-8.4.0.tgz#7f4b7b1daa3d1f48c0977ad8fffa2c18adef8974" + integrity sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw== + dependencies: + "@octokit/endpoint" "^9.0.1" + "@octokit/request-error" "^5.1.0" + "@octokit/types" "^13.1.0" + universal-user-agent "^6.0.0" + "@octokit/rest@19.0.11": version "19.0.11" resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-19.0.11.tgz#2ae01634fed4bd1fca5b642767205ed3fd36177c" @@ -2265,12 +2352,19 @@ dependencies: "@octokit/openapi-types" "^18.0.0" -"@octokit/types@^6.0.3", "@octokit/types@^6.16.1", "@octokit/types@^6.39.0", "@octokit/types@^6.40.0": - version "6.41.0" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.41.0.tgz#e58ef78d78596d2fb7df9c6259802464b5f84a04" - integrity sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg== +"@octokit/types@^12.6.0": + version "12.6.0" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-12.6.0.tgz#8100fb9eeedfe083aae66473bd97b15b62aedcb2" + integrity sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw== dependencies: - "@octokit/openapi-types" "^12.11.0" + "@octokit/openapi-types" "^20.0.0" + +"@octokit/types@^13.0.0", "@octokit/types@^13.1.0": + version "13.7.0" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-13.7.0.tgz#22d0e26a8c9f53599bfb907213d8ccde547f36aa" + integrity sha512-BXfRP+3P3IN6fd4uF3SniaHKOO4UXWBfkdR3vA8mIvaoO/wLjGN5qivUtW0QRitBHHMcfC41SLhNVYIZZE+wkA== + dependencies: + "@octokit/openapi-types" "^23.0.1" "@octokit/types@^9.0.0", "@octokit/types@^9.2.3": version "9.3.2" @@ -2297,11 +2391,6 @@ 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" - integrity sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w== - "@pkgjs/parseargs@^0.11.0": version "0.11.0" resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" @@ -2319,6 +2408,42 @@ dependencies: spacetrim "0.11.59" +"@protobuf-ts/plugin-framework@^2.0.7", "@protobuf-ts/plugin-framework@^2.9.4": + version "2.9.4" + resolved "https://registry.yarnpkg.com/@protobuf-ts/plugin-framework/-/plugin-framework-2.9.4.tgz#d7a617dedda4a12c568fdc1db5aa67d5e4da2406" + integrity sha512-9nuX1kjdMliv+Pes8dQCKyVhjKgNNfwxVHg+tx3fLXSfZZRcUHMc1PMwB9/vTvc6gBKt9QGz5ERqSqZc0++E9A== + dependencies: + "@protobuf-ts/runtime" "^2.9.4" + typescript "^3.9" + +"@protobuf-ts/plugin@^2.9.4": + version "2.9.4" + resolved "https://registry.yarnpkg.com/@protobuf-ts/plugin/-/plugin-2.9.4.tgz#4e593e59013aaad313e7abbabe6e61964ef0ca28" + integrity sha512-Db5Laq5T3mc6ERZvhIhkj1rn57/p8gbWiCKxQWbZBBl20wMuqKoHbRw4tuD7FyXi+IkwTToaNVXymv5CY3E8Rw== + dependencies: + "@protobuf-ts/plugin-framework" "^2.9.4" + "@protobuf-ts/protoc" "^2.9.4" + "@protobuf-ts/runtime" "^2.9.4" + "@protobuf-ts/runtime-rpc" "^2.9.4" + typescript "^3.9" + +"@protobuf-ts/protoc@^2.9.4": + version "2.9.4" + resolved "https://registry.yarnpkg.com/@protobuf-ts/protoc/-/protoc-2.9.4.tgz#a92262ee64d252998540238701d2140f4ffec081" + integrity sha512-hQX+nOhFtrA+YdAXsXEDrLoGJqXHpgv4+BueYF0S9hy/Jq0VRTVlJS1Etmf4qlMt/WdigEes5LOd/LDzui4GIQ== + +"@protobuf-ts/runtime-rpc@^2.9.4": + version "2.9.4" + resolved "https://registry.yarnpkg.com/@protobuf-ts/runtime-rpc/-/runtime-rpc-2.9.4.tgz#d6ab2316c0ba67ce5a08863bb23203a837ff2a3b" + integrity sha512-y9L9JgnZxXFqH5vD4d7j9duWvIJ7AShyBRoNKJGhu9Q27qIbchfzli66H9RvrQNIFk5ER7z1Twe059WZGqERcA== + dependencies: + "@protobuf-ts/runtime" "^2.9.4" + +"@protobuf-ts/runtime@^2.9.4": + version "2.9.4" + resolved "https://registry.yarnpkg.com/@protobuf-ts/runtime/-/runtime-2.9.4.tgz#db8a78b1c409e26d258ca39464f4757d804add8f" + integrity sha512-vHRFWtJJB/SiogWDF0ypoKfRIZ41Kq+G9cEFj6Qm1eQaAhJ1LDFvgZ7Ja4tb3iLOQhz0PaoPnnOijF1qmEqTxg== + "@puppeteer/browsers@^2.2.0": version "2.4.1" resolved "https://registry.yarnpkg.com/@puppeteer/browsers/-/browsers-2.4.1.tgz#7afd271199cc920ece2ff25109278be0a3e8a225" @@ -2630,11 +2755,6 @@ dependencies: "@types/node" "*" -"@types/chai@^4.2.15": - version "4.3.20" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.20.tgz#cb291577ed342ca92600430841a00329ba05cecc" - integrity sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ== - "@types/cookie@^0.6.0": version "0.6.0" resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.6.0.tgz#eac397f28bf1d6ae0ae081363eca2f425bedf0d5" @@ -2703,19 +2823,6 @@ resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.5.tgz#ec10755e871497bcd83efe927e43ec46e8c0747e" integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag== -"@types/mocha@^8.2.2": - version "8.2.3" - resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-8.2.3.tgz#bbeb55fbc73f28ea6de601fbfa4613f58d785323" - integrity sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw== - -"@types/node-fetch@^2.5.0": - version "2.6.11" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.11.tgz#9b39b78665dae0e82a08f02f4967d62c66f95d24" - integrity sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g== - dependencies: - "@types/node" "*" - form-data "^4.0.0" - "@types/node@*": version "20.12.12" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.12.tgz#7cbecdf902085cec634fdb362172dfe12b8f2050" @@ -2807,13 +2914,6 @@ 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" - integrity sha512-sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA== - 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" @@ -2919,11 +3019,6 @@ "@typescript-eslint/types" "6.21.0" eslint-visitor-keys "^3.4.1" -"@ungap/promise-all-settled@1.1.2": - version "1.1.2" - 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" @@ -3017,7 +3112,7 @@ "@vitest/utils" "2.1.4" pathe "^1.1.2" -"@vitest/runner@2.1.8": +"@vitest/runner@2.1.8", "@vitest/runner@^2.1.8": version "2.1.8" resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-2.1.8.tgz#b0e2dd29ca49c25e9323ea2a45a5125d8729759f" integrity sha512-17ub8vQstRnRlIU5k50bG+QOMLHRhYPAna5tw8tYbj+jzjcspnwnwtPtiOlkuKC4+ixDPTuLZiqiWWQ2PSXHVg== @@ -3551,6 +3646,11 @@ agent-base@^7.0.2, agent-base@^7.1.0, agent-base@^7.1.1: dependencies: debug "^4.3.4" +agent-base@^7.1.2: + version "7.1.3" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.3.tgz#29435eb821bc4194633a5b89e5bc4703bafc25a1" + integrity sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw== + agentkeepalive@^4.2.1: version "4.5.0" resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.5.0.tgz#2673ad1389b3c418c5a20c5d7364f93ca04be923" @@ -3600,7 +3700,7 @@ ajv@6.12.6, ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.0.1, ajv@^8.6.0, ajv@^8.9.0: +ajv@^8.0.0, ajv@^8.0.1, ajv@^8.9.0: version "8.13.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.13.0.tgz#a3939eaec9fb80d217ddf0c3376948c023f28c91" integrity sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA== @@ -3610,6 +3710,16 @@ ajv@^8.0.0, ajv@^8.0.1, ajv@^8.6.0, ajv@^8.9.0: require-from-string "^2.0.2" uri-js "^4.4.1" +ajv@^8.17.1: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + ansi-align@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" @@ -3617,11 +3727,6 @@ ansi-align@^2.0.0: dependencies: string-width "^2.0.0" -ansi-colors@4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== - ansi-colors@^3.0.0: version "3.2.4" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" @@ -3999,10 +4104,10 @@ assert@^2.0.0: 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" @@ -4239,14 +4344,6 @@ before-after-hook@^2.2.0: resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c" integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== -benchmark@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/benchmark/-/benchmark-2.1.4.tgz#09f3de31c916425d498cc2ee565a0ebf3c2a5629" - integrity sha512-l9MlfN4M1K/H2fbhfMy3B7vJd6AGKJVQn2h6Sg/Yx+KckoUA7ewS5Vv6TjSq18ooE1kS9hhAlQRH3AkXIh/aOQ== - dependencies: - lodash "^4.17.4" - platform "^1.3.3" - big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -4403,11 +4500,6 @@ browser-resolve@^2.0.0: 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" - integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== - browserify-aes@^1.0.4, browserify-aes@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" @@ -4687,11 +4779,6 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.0.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - caniuse-lite@^1.0.30001587: version "1.0.30001620" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001620.tgz#78bb6f35b8fe315b96b8590597094145d0b146b4" @@ -4702,18 +4789,16 @@ case@^1.6.3: resolved "https://registry.yarnpkg.com/case/-/case-1.6.3.tgz#0a4386e3e9825351ca2e6216c60467ff5f1ea1c9" integrity sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ== -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== +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 "^1.1.0" - check-error "^1.0.3" - deep-eql "^4.1.3" - get-func-name "^2.0.2" - loupe "^2.3.6" - pathval "^1.1.1" - type-detect "^4.1.0" + assertion-error "^2.0.1" + check-error "^2.1.1" + deep-eql "^5.0.1" + loupe "^3.1.0" + pathval "^2.0.0" chalk@2.4.1: version "2.4.1" @@ -4759,12 +4844,10 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -check-error@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" - integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== - 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" @@ -4795,21 +4878,6 @@ cheerio@^1.0.0-rc.12: 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.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - "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" @@ -4916,6 +4984,15 @@ cli-spinners@^2.5.0: resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== +cli-table3@^0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.5.tgz#013b91351762739c16a9567c21a04632e449bf2f" + integrity sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ== + dependencies: + string-width "^4.2.0" + optionalDependencies: + "@colors/colors" "1.5.0" + cli-width@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" @@ -5053,6 +5130,11 @@ commander@^4.0.1: resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== +commander@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" + integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== + commander@^8.3.0: version "8.3.0" resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" @@ -5525,15 +5607,15 @@ csstype@^3.0.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== -csv-parse@^4.16.0: - version "4.16.3" - resolved "https://registry.yarnpkg.com/csv-parse/-/csv-parse-4.16.3.tgz#7ca624d517212ebc520a36873c3478fa66efbaf7" - integrity sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg== +csv-parse@^5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/csv-parse/-/csv-parse-5.6.0.tgz#219beace2a3e9f28929999d2aa417d3fb3071c7f" + integrity sha512-l3nz3euub2QMg5ouu5U09Ew9Wf6/wQ8I++ch1loQ0ljmzhmfZYrH9fflS22i/PQEvsPvxCwxgz5q7UB8K1JO4Q== -csv-stringify@^5.6.2: - version "5.6.5" - resolved "https://registry.yarnpkg.com/csv-stringify/-/csv-stringify-5.6.5.tgz#c6d74badda4b49a79bf4e72f91cce1e33b94de00" - integrity sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A== +csv-stringify@^6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/csv-stringify/-/csv-stringify-6.5.2.tgz#b51d61cd949906d5b5b790463f3055d95915193e" + integrity sha512-RFPahj0sXcmUyjrObAK+DOWtMvMIFV328n4qZJhgX3x2RqkQgOTU2mCUmiFR0CzM6AzChlRSUErjiJeEt8BaQA== cyclist@^1.0.1: version "1.0.2" @@ -5601,13 +5683,6 @@ debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1, d dependencies: ms "2.1.2" -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" - debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" @@ -5635,11 +5710,6 @@ decamelize@^1.1.0, decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== -decamelize@^4.0.0: - version "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" @@ -5655,12 +5725,10 @@ dedent@0.7.0: resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== -deep-eql@^4.1.3: - 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" @@ -5791,7 +5859,7 @@ depd@~1.1.2: resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== -deprecation@^2.0.0, deprecation@^2.3.1: +deprecation@^2.0.0: version "2.3.1" resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== @@ -5829,11 +5897,6 @@ diff-sequences@^29.6.3: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== -diff@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" - integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== - diff@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" @@ -5989,6 +6052,14 @@ dot-case@^3.0.4: no-case "^3.0.4" tslib "^2.0.3" +dot-object@^2.1.4: + version "2.1.5" + resolved "https://registry.yarnpkg.com/dot-object/-/dot-object-2.1.5.tgz#0ff0f1bff42c47ff06272081b208658c0a0231c2" + integrity sha512-xHF8EP4XH/Ba9fvAF2LDd5O3IITVolerVV6xvkxoM8zlGEiCUrggpAnHyOoKJKCrhvPcGATFAUwIujj7bRG5UA== + dependencies: + commander "^6.1.0" + glob "^7.1.6" + dot-prop@^5.1.0: version "5.3.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" @@ -6378,16 +6449,16 @@ escape-html@~1.0.3: resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== -escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + escodegen@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" @@ -6893,6 +6964,11 @@ fast-levenshtein@^2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== +fast-uri@^3.0.1: + version "3.0.5" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.5.tgz#19f5f9691d0dab9b85861a7bb5d98fca961da9cd" + integrity sha512-5JnBCWpFlMo0a3ciDy/JckMzzv1U9coZrIhedq+HXxxUfDTAiS0LA8OKVao4G9BxmCVck/jtA5r3KAtRWEyD8Q== + fast-url-parser@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/fast-url-parser/-/fast-url-parser-1.1.3.tgz#f4af3ea9f34d8a271cf58ad2b3759f431f0b318d" @@ -7030,14 +7106,6 @@ 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: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - find-up@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" @@ -7060,6 +7128,14 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.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== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + flat-cache@^3.0.4: version "3.2.0" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" @@ -7286,11 +7362,6 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-func-name@^2.0.1, get-func-name@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" - integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== - get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" @@ -7442,19 +7513,7 @@ 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.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" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^10.0.0, glob@^10.4.1: +glob@^10.0.0, glob@^10.4.1, glob@^10.4.5: version "10.4.5" resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== @@ -7477,7 +7536,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.2.0: +glob@^7.0.3, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, 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== @@ -7580,11 +7639,6 @@ graphql@^16.8.1: 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" - integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== - handle-thing@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" @@ -7714,7 +7768,7 @@ hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: dependencies: function-bind "^1.1.2" -he@1.2.0, he@^1.2.0: +he@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== @@ -7920,6 +7974,14 @@ https-proxy-agent@^5.0.0: agent-base "6" debug "4" +https-proxy-agent@^7.0.0: + version "7.0.6" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz#da8dfeac7da130b05c2ba4b59c9b6cd66611a6b9" + integrity sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw== + dependencies: + agent-base "^7.1.2" + debug "4" + https-proxy-agent@^7.0.1: version "7.0.4" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz#8e97b841a029ad8ddc8731f26595bad868cb4168" @@ -8443,11 +8505,6 @@ is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== -is-plain-obj@^2.1.0: - version "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" @@ -8540,6 +8597,11 @@ is-unicode-supported@^0.1.0: resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== +is-unicode-supported@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz#09f0ab0de6d3744d48d265ebb98f65d11f2a9b3a" + integrity sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ== + is-weakmap@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd" @@ -9121,12 +9183,12 @@ lodash.zip@^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: +lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-symbols@4.1.0, log-symbols@^4.0.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== @@ -9134,6 +9196,14 @@ log-symbols@4.1.0, log-symbols@^4.0.0, log-symbols@^4.1.0: chalk "^4.1.0" is-unicode-supported "^0.1.0" +log-symbols@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-7.0.0.tgz#953999bb9cec27a09049c8f45e1154ec81163061" + integrity sha512-zrc91EDk2M+2AXo/9BTvK91pqb7qrPg2nX/Hy+u8a5qQlbaOflCKO+6SqgZ+M+xUFxGdKTgwnGiL96b1W3ikRA== + dependencies: + is-unicode-supported "^2.0.0" + yoctocolors "^2.1.1" + 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" @@ -9161,14 +9231,7 @@ loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" -loupe@^2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" - integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== - dependencies: - get-func-name "^2.0.1" - -loupe@^3.1.2: +loupe@^3.1.0, 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== @@ -9499,13 +9562,6 @@ 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" @@ -9680,36 +9736,6 @@ mkdirp@^1.0.3: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -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.3" - debug "4.3.3" - diff "5.0.0" - escape-string-regexp "4.0.0" - find-up "5.0.0" - glob "7.2.0" - growl "1.10.5" - he "1.2.0" - js-yaml "4.1.0" - log-symbols "4.1.0" - minimatch "4.2.1" - ms "2.1.3" - nanoid "3.3.1" - serialize-javascript "6.0.0" - strip-json-comments "3.1.1" - supports-color "8.1.1" - which "2.0.2" - workerpool "6.2.0" - yargs "16.2.0" - yargs-parser "20.2.4" - yargs-unparser "2.0.0" - modify-values@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" @@ -9815,11 +9841,6 @@ nan@^2.12.1: resolved "https://registry.yarnpkg.com/nan/-/nan-2.19.0.tgz#bb58122ad55a6c5bc973303908d5b16cfdd5a8c0" integrity sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw== -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" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" @@ -10818,7 +10839,7 @@ 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: +path-to-regexp@^6.2.0, 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== @@ -10840,10 +10861,10 @@ pathe@^1.1.2: resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec" integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ== -pathval@^1.1.1: - version "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" @@ -10939,11 +10960,6 @@ pkg-dir@^5.0.0: 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" - integrity sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg== - portfinder@^1.0.26: version "1.0.32" resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.32.tgz#2fe1b9e58389712429dc2bea5beb2146146c7f81" @@ -11034,7 +11050,7 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^2.2.1: +prettier@^2.2.1, prettier@^2.5.1: version "2.8.8" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== @@ -12082,13 +12098,6 @@ serialize-error@^11.0.3: 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" - serialize-javascript@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" @@ -12866,7 +12875,7 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" -strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -12895,13 +12904,6 @@ style-loader@^3.0.0: resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.4.tgz#f30f786c36db03a45cbd55b6a70d930c479090e7" integrity sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w== -supports-color@8.1.1, supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -12923,6 +12925,13 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" @@ -13270,6 +13279,14 @@ ts-node@^10.9.2: v8-compile-cache-lib "^3.0.1" yn "3.1.1" +ts-poet@^4.5.0: + version "4.15.0" + resolved "https://registry.yarnpkg.com/ts-poet/-/ts-poet-4.15.0.tgz#637145fa554d3b27c56541578df0ce08cd9eb328" + integrity sha512-sLLR8yQBvHzi9d4R1F4pd+AzQxBfzOSSjfxiJxQhkUoH5bL7RsAC6wgvtVUQdGqiCsyS9rT6/8X2FI7ipdir5g== + dependencies: + lodash "^4.17.15" + prettier "^2.5.1" + tsconfig-paths@^3.15.0: version "3.15.0" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" @@ -13337,6 +13354,18 @@ tunnel@0.0.6, tunnel@^0.0.6: resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== +twirp-ts@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/twirp-ts/-/twirp-ts-2.5.0.tgz#b43f09e95868d68ecd5c755ecbb08a7e51388504" + integrity sha512-JTKIK5Pf/+3qCrmYDFlqcPPUx+ohEWKBaZy8GL8TmvV2VvC0SXVyNYILO39+GCRbqnuP6hBIF+BVr8ZxRz+6fw== + dependencies: + "@protobuf-ts/plugin-framework" "^2.0.7" + camel-case "^4.1.2" + dot-object "^2.1.4" + path-to-regexp "^6.2.0" + ts-poet "^4.5.0" + yaml "^1.10.2" + type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" @@ -13344,11 +13373,6 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" -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" @@ -13456,6 +13480,11 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== +typescript@^3.9: + version "3.9.10" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.10.tgz#70f3910ac7a51ed6bef79da7800690b19bf778b8" + integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q== + uglify-js@^3.1.4: version "3.17.4" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" @@ -13725,12 +13754,12 @@ uuid@8.0.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.0.0.tgz#bc6ccf91b5ff0ac07bbcdbf1c7c4e150db4dbb6c" integrity sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw== -uuid@^3.3.2, uuid@^3.3.3: +uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -uuid@^8.3.0, uuid@^8.3.2: +uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== @@ -14232,13 +14261,6 @@ 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: - 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.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -14246,6 +14268,13 @@ which@^1.2.9: dependencies: isexe "^2.0.0" +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@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/which/-/which-4.0.0.tgz#cd60b5e74503a3fbcfbf6cd6b4138a8bae644c1a" @@ -14304,11 +14333,6 @@ workerize-loader@^1.3.0: dependencies: loader-utils "^2.0.0" -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" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" @@ -14467,15 +14491,15 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^1.7.2: +yaml@^1.10.2, yaml@^1.7.2: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yargs-parser@20.2.4: - version "20.2.4" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" - integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== +yaml@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.7.0.tgz#aef9bb617a64c937a9a748803786ad8d3ffe1e98" + integrity sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA== yargs-parser@21.1.1, yargs-parser@^21.1.1: version "21.1.1" @@ -14495,30 +14519,7 @@ yargs-parser@^20.2.2, yargs-parser@^20.2.3: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -yargs-unparser@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" - integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== - dependencies: - camelcase "^6.0.0" - decamelize "^4.0.0" - flat "^5.0.2" - is-plain-obj "^2.1.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== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - -yargs@17.7.2, yargs@^17.1.1, yargs@^17.6.2, yargs@^17.7.2: +yargs@17.7.2, 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== @@ -14547,6 +14548,19 @@ yargs@^13.3.2: y18n "^4.0.0" yargs-parser "^13.1.2" +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== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + yauzl@^2.10.0: version "2.10.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" @@ -14570,6 +14584,11 @@ yoctocolors-cjs@^2.1.2: resolved "https://registry.yarnpkg.com/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz#f4b905a840a37506813a7acaa28febe97767a242" integrity sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA== +yoctocolors@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/yoctocolors/-/yoctocolors-2.1.1.tgz#e0167474e9fbb9e8b3ecca738deaa61dd12e56fc" + integrity sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ== + zip-stream@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-6.0.1.tgz#e141b930ed60ccaf5d7fa9c8260e0d1748a2bbfb"