From cb112c4c19c7aee029491b892ab10e0a7ce06609 Mon Sep 17 00:00:00 2001
From: Nazar Hussain <nazarhussain@gmail.com>
Date: Fri, 10 Jan 2025 17:03:00 +0100
Subject: [PATCH 01/26] Update the benchmark dependencies

---
 .benchrc.yaml                                 |   6 -
 .eslintrc.cjs                                 |   4 -
 package.json                                  |   8 +-
 packages/as-sha256/test/perf/index.test.ts    |  16 +-
 packages/as-sha256/test/perf/simd.test.ts     |  12 +-
 .../test/perf/gindex.test.ts                  |  10 +-
 .../test/perf/hashComputation.test.ts         |   6 +-
 .../test/perf/hasher.test.ts                  |  16 +-
 .../test/perf/node.test.ts                    |  18 +-
 .../test/perf/proof.test.ts                   |   8 +-
 .../test/perf/subtree.test.ts                 |   6 +-
 .../test/perf/tree.test.ts                    |  14 +-
 .../test/perf/tree/depthSmall.test.ts         |  10 +-
 .../test/perf/tree/getNodes.test.ts           |  20 +-
 .../test/perf/tree/setNodes.test.ts           |   6 +-
 .../test/perf/treeDepth.test.ts               |   8 +-
 .../test/perf/validators.test.ts              |  17 +-
 packages/persistent-ts/.eslintrc.cjs          |   1 -
 packages/persistent-ts/package.json           |   2 +-
 .../persistent-ts/test/perf/Vector.test.ts    | 206 +++++-----
 packages/ssz/package.json                     |   2 +-
 packages/ssz/test/perf/bitlist.test.ts        |   6 +-
 .../ssz/test/perf/byType/listBasic.test.ts    |  16 +-
 .../test/perf/byType/listComposite.test.ts    |  18 +-
 packages/ssz/test/perf/bytelist.test.ts       |  12 +-
 .../test/perf/cacheMutableRootStruct.test.ts  |   6 +-
 packages/ssz/test/perf/epochStatuses.test.ts  |   4 +-
 .../ssz/test/perf/eth2/beaconState.test.ts    |  14 +-
 .../ssz/test/perf/eth2/deserialize.test.ts    |  26 +-
 .../ssz/test/perf/eth2/hashTreeRoot.test.ts   |  30 +-
 .../ssz/test/perf/eth2/validators.test.ts     |   4 +-
 packages/ssz/test/perf/iterate.test.ts        |  14 +-
 packages/ssz/test/perf/list.test.ts           |  16 +-
 packages/ssz/test/perf/merkleize.test.ts      |   6 +-
 .../ssz/test/perf/misc/math_floor.test.ts     |   6 +-
 .../ssz/test/perf/misc/switch_if_cost.test.ts |  10 +-
 packages/ssz/test/perf/propertyGet.test.ts    |   6 +-
 packages/ssz/test/perf/proxy.test.ts          |   8 +-
 packages/ssz/test/perf/serdes.test.ts         |  14 +-
 .../processAttestations.test.ts               |  14 +-
 packages/ssz/test/perf/tree.test.ts           |   6 +-
 packages/ssz/test/perf/uint.test.ts           |   8 +-
 packages/ssz/test/perf/uintFromBytes.test.ts  |  52 +--
 packages/ssz/test/spec/runValidTest.ts        |   4 +-
 yarn.lock                                     | 382 ++++++------------
 45 files changed, 461 insertions(+), 617 deletions(-)

diff --git a/.benchrc.yaml b/.benchrc.yaml
index 4772b534..52a88098 100644
--- a/.benchrc.yaml
+++ b/.benchrc.yaml
@@ -1,9 +1,3 @@
-# Mocha opts
-colors: true
-require:
-  - ts-node/register
-  - setHasher.mjs
-
 # benchmark opts
 threshold: 3
 maxMs: 60_000
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..af2d6463 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-rc.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/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..f67d247b 100644
--- a/packages/persistent-merkle-tree/test/perf/hashComputation.test.ts
+++ b/packages/persistent-merkle-tree/test/perf/hashComputation.test.ts
@@ -1,4 +1,4 @@
-import {itBench} from "@dapplion/benchmark";
+import {describe, bench} from "@chainsafe/benchmark";
 import { HashComputation, HashComputationLevel, LeafNode, zeroHash } from "../../src/index.js";
 
 /**
@@ -15,7 +15,7 @@ describe("HashComputationLevel", function () {
 
   const length = 2_000_000;
 
-  itBench({
+  bench({
     id: "HashComputationLevel.push then loop",
     before: () => new HashComputationLevel(),
     beforeEach: (level) => {
@@ -33,7 +33,7 @@ describe("HashComputationLevel", function () {
     }
   });
 
-  itBench({
+  bench({
     id: "HashComputation[] push then loop",
     fn: () => {
       const level: HashComputation[] = [];
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<Node>(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<Node>(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<Node>(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
index a6935142..060f3ea2 100644
--- a/packages/persistent-ts/test/perf/Vector.test.ts
+++ b/packages/persistent-ts/test/perf/Vector.test.ts
@@ -1,104 +1,106 @@
-import {expect} from "chai";
-import {PersistentVector, TransientVector} from "../../src/Vector.js";
+// Need to write this test with right pattern
 
-// 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<number> = 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<number>((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);
-});
+// import {expect} from "chai";
+// import {PersistentVector, TransientVector} from "../../src/Vector.js";
 
-// 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<number> = 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<number>((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("PersistentVector - should be able to handle 10M elements", function () {
+//   this.timeout(0);
+//   let start = Date.now();
+//   let acc: PersistentVector<number> = 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<number>((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<number> = 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<number>((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<number>(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<unknown>(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<byte>", () => {
@@ -18,29 +18,29 @@ describe("ByteListType vs BasicListType<byte>", () => {
 
   const ROUNDS = 10000;
 
-  itBench("ByteListType - deserialize", () => {
+  bench("ByteListType - deserialize", () => {
     for (let i = 0; i < ROUNDS; i++) {
       byteLs.deserialize(tbByteLsSerialized);
     }
   });
-  itBench("BasicListType<byte> - deserialize", () => {
+  bench("BasicListType<byte> - 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<byte> - serialize", () => {
+  bench("BasicListType<byte> - serialize", () => {
     for (let i = 0; i < ROUNDS; i++) {
       tbBasicLs.serialize();
     }
   });
 
-  itBench("BasicListType<byte> - tree_convertToStruct", () => {
+  bench("BasicListType<byte> - 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<typeof TestStruct>, ValueOf<typeof TestStruct>>({
+  bench<ValueOf<typeof TestStruct>, ValueOf<typeof TestStruct>>({
     id: "cachePermanentRootStruct no cache",
     before: () => TestStruct.defaultValue(),
     beforeEach: (value) => value,
@@ -29,7 +29,7 @@ describe("cachePermanentRootStruct", () => {
     },
   });
 
-  itBench<ValueOf<typeof TestStruct>, ValueOf<typeof TestStruct>>({
+  bench<ValueOf<typeof TestStruct>, ValueOf<typeof TestStruct>>({
     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<typeof EpochParticipation>, CompositeViewDU<typeof EpochParticipation>>({
+  bench<CompositeViewDU<typeof EpochParticipation>, CompositeViewDU<typeof EpochParticipation>>({
     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<typeof BeaconState>) => {
@@ -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<typeof BeaconState>) => {
@@ -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<typeof BeaconState>) => {
@@ -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<typeof BeaconState>) => {
@@ -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<T extends CompositeType<unknown, unknown, unknown>>(type: T, value: ValueOf<T>): void {
-    itBench<Uint8Array, Uint8Array>({
+  function benchDeserialize<T extends CompositeType<unknown, unknown, unknown>>(type: T, value: ValueOf<T>): void {
+    bench<Uint8Array, Uint8Array>({
       id: `deserialize ${type.typeName} - tree`,
       before: () => type.serialize(value),
       beforeEach: (bytes) => bytes,
@@ -30,7 +30,7 @@ describe("Deserialize frequent eth2 objects", () => {
       },
     });
 
-    itBench<Uint8Array, Uint8Array>({
+    bench<Uint8Array, Uint8Array>({
       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<Uint8Array, Uint8Array>({
+    bench<Uint8Array, Uint8Array>({
       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<Uint8Array, Uint8Array>({
+      bench<Uint8Array, Uint8Array>({
         id: `BeaconState.${fieldName} vc ${validatorCount} - deserialize tree`,
         before: () => (getStateViewDU()[fieldName] as TreeViewDU<any>).serialize(),
         beforeEach: (bytes) => bytes,
@@ -76,7 +76,7 @@ describe("Deserialize frequent eth2 objects", () => {
         },
       });
 
-      itBench<BeaconState, BeaconState>({
+      bench<BeaconState, BeaconState>({
         id: `BeaconState.${fieldName} vc ${validatorCount} - serialize tree`,
         fn: () => {
           (getStateViewDU()[fieldName] as TreeViewDU<any>).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<T extends CompositeType<unknown, TreeView<CompositeTypeAny>, unknown>>(
+  function benchHashTreeRoot<T extends CompositeType<unknown, TreeView<CompositeTypeAny>, unknown>>(
     type: T,
     value: ValueOf<T>
   ): 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<T>,
       fn: (view) => {
@@ -59,7 +59,7 @@ describe("HashTreeRoot frequent eth2 objects", () => {
     const getStateVc = getOnce(() => getRandomState(validatorCount));
     const getStateViewDU = getOnce(() => sszAltair.BeaconState.toViewDU(getStateVc()));
 
-    itBench<CompositeViewDU<typeof sszAltair.BeaconState>, Uint8Array>({
+    bench<CompositeViewDU<typeof sszAltair.BeaconState>, 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<CompositeViewDU<typeof sszAltair.BeaconState>, Uint8Array>({
+    bench<CompositeViewDU<typeof sszAltair.BeaconState>, 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<TreeViewDU<CompositeTypeAny>, Uint8Array>({
+      bench<TreeViewDU<CompositeTypeAny>, Uint8Array>({
         id: `BeaconState.${fieldName} vc ${validatorCount} - hashTreeRoot tree`,
         before: () => (getStateViewDU()[fieldName] as TreeViewDU<any>).serialize(),
         beforeEach: (bytes) => fieldType.deserializeToViewDU(bytes) as TreeViewDU<CompositeTypeAny>,
@@ -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<Statuses>;
 
-  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<number>, MutableVector<number>>({
+  bench<MutableVector<number>, MutableVector<number>>({
     id: "get epochStatuses - MutableVector",
     before: () => MutableVector.from(statusArr),
     beforeEach: (epochStatuses) => epochStatuses,
@@ -36,7 +36,7 @@ describe("processAttestations", () => {
     },
   });
 
-  itBench<StatusesViewDU, StatusesViewDU>({
+  bench<StatusesViewDU, StatusesViewDU>({
     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<StatusesViewDU, StatusesViewDU>({
+  bench<StatusesViewDU, StatusesViewDU>({
     id: "set epochStatuses - ListTreeView",
     before: () => {
       const epochStatuses = epochStatusesType.deserializeToViewDU(epochStatusesType.serialize(statusArr));
@@ -76,7 +76,7 @@ describe("processAttestations", () => {
     },
   });
 
-  itBench<StatusesViewDU, StatusesViewDU>({
+  bench<StatusesViewDU, StatusesViewDU>({
     id: "set epochStatuses - ListTreeView - set()",
     before: () => {
       const epochStatuses = epochStatusesType.deserializeToViewDU(epochStatusesType.serialize(statusArr));
@@ -92,7 +92,7 @@ describe("processAttestations", () => {
     },
   });
 
-  itBench<StatusesViewDU, StatusesViewDU>({
+  bench<StatusesViewDU, StatusesViewDU>({
     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..571445a7 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);
@@ -78,7 +78,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;
 
@@ -106,13 +106,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 +134,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 +162,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 +174,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 +196,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 +207,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 +233,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 +285,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 +293,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<unknown>, 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<unknown>, 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..4a6ebd01 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1325,6 +1325,23 @@
     core-js "2.6.10"
     require-resolve "0.0.2"
 
+"@chainsafe/benchmark@^1.1.0-rc.0":
+  version "1.1.0-rc.0"
+  resolved "https://registry.yarnpkg.com/@chainsafe/benchmark/-/benchmark-1.1.0-rc.0.tgz#14f8620cb9b497a2021a2c5cb4cf2b77f9220266"
+  integrity sha512-C1d/DJgQ4cxgKv8/6J1CzDOT1RVBEMv2OWfzJr9eIuFQYx38LN/dZ0OnDnTgToMnnbvIJUVvmUnfH8z64GH22g==
+  dependencies:
+    "@actions/cache" "^1.0.7"
+    "@actions/github" "^5.0.0"
+    "@vitest/runner" "^2.1.6"
+    ajv "^8.6.0"
+    aws-sdk "^2.932.0"
+    cli-table3 "^0.6.5"
+    csv-parse "^4.16.0"
+    csv-stringify "^5.6.2"
+    glob "^10.4.5"
+    log-symbols "^7.0.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"
@@ -1365,6 +1382,11 @@
     "@chainsafe/as-sha256" "^0.4.2"
     "@chainsafe/persistent-merkle-tree" "^0.7.2"
 
+"@colors/colors@1.5.0":
+  version "1.5.0"
+  resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9"
+  integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==
+
 "@cspotcode/source-map-support@^0.8.0":
   version "0.8.1"
   resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1"
@@ -1372,19 +1394,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"
@@ -2630,11 +2639,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,11 +2707,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"
@@ -2919,11 +2918,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 +3011,7 @@
     "@vitest/utils" "2.1.4"
     pathe "^1.1.2"
 
-"@vitest/runner@2.1.8":
+"@vitest/runner@2.1.8", "@vitest/runner@^2.1.6":
   version "2.1.8"
   resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-2.1.8.tgz#b0e2dd29ca49c25e9323ea2a45a5125d8729759f"
   integrity sha512-17ub8vQstRnRlIU5k50bG+QOMLHRhYPAna5tw8tYbj+jzjcspnwnwtPtiOlkuKC4+ixDPTuLZiqiWWQ2PSXHVg==
@@ -3617,11 +3611,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 +3988,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"
@@ -4403,11 +4392,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 +4671,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 +4681,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 +4736,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 +4770,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 +4876,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"
@@ -5601,13 +5570,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 +5597,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 +5612,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"
@@ -5829,11 +5784,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"
@@ -6378,16 +6328,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"
@@ -7030,14 +6980,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 +7002,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 +7236,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 +7387,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==
@@ -7580,11 +7513,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 +7642,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==
@@ -8443,11 +8371,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 +8463,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"
@@ -9126,7 +9054,7 @@ lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17
   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 +9062,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 +9097,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 +9428,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 +9602,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 +9707,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"
@@ -10840,10 +10727,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"
@@ -12082,13 +11969,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 +12746,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 +12775,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 +12796,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"
@@ -13344,11 +13224,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"
@@ -14232,13 +14107,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 +14114,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 +14179,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"
@@ -14472,11 +14342,6 @@ yaml@^1.7.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==
-
 yargs-parser@21.1.1, yargs-parser@^21.1.1:
   version "21.1.1"
   resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"
@@ -14495,30 +14360,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 +14389,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 +14425,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"

From c81b7d4903402243a9de69138f00ab7c0d9e5a03 Mon Sep 17 00:00:00 2001
From: Nazar Hussain <nazarhussain@gmail.com>
Date: Fri, 10 Jan 2025 17:07:21 +0100
Subject: [PATCH 02/26] Fix lint error

---
 packages/ssz/test/perf/uintFromBytes.test.ts | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/packages/ssz/test/perf/uintFromBytes.test.ts b/packages/ssz/test/perf/uintFromBytes.test.ts
index 571445a7..4ec0bc68 100644
--- a/packages/ssz/test/perf/uintFromBytes.test.ts
+++ b/packages/ssz/test/perf/uintFromBytes.test.ts
@@ -77,8 +77,7 @@ describe("Uint64 deserialize", () => {
       const values: number[] = [];
 
       // Single leafNode
-
-      beforeAll( () => {
+      beforeAll(() => {
         const firstValue = byteLength >= 8 ? 30e9 : 2 ** (bitLength - 1);
         const maxValue = byteLength >= 8 ? Number.MAX_SAFE_INTEGER : 2 ** bitLength;
 
@@ -134,7 +133,7 @@ describe("Uint64 deserialize", () => {
       let dataView: DataView;
       const values: bigint[] = [];
 
-      beforeAll( () => {
+      beforeAll(() => {
         const firstValue = BigInt(2) ** BigInt(bitLength - 1);
         const maxValue = BigInt(2) ** BigInt(bitLength);
 

From da9049c9c8f0bfb582232e2b3e6988249a7f0cde Mon Sep 17 00:00:00 2001
From: Nazar Hussain <nazarhussain@gmail.com>
Date: Mon, 13 Jan 2025 10:48:59 +0100
Subject: [PATCH 03/26] Fix the benchmark files

---
 packages/as-sha256/package.json |  3 +--
 yarn.lock                       | 15 +--------------
 2 files changed, 2 insertions(+), 16 deletions(-)

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/yarn.lock b/yarn.lock
index 4a6ebd01..fe41eb3a 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4228,14 +4228,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"
@@ -9049,7 +9041,7 @@ 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==
@@ -10826,11 +10818,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"

From f80a3e6940607e65eddd09bdbb0d40d04a77808c Mon Sep 17 00:00:00 2001
From: Nazar Hussain <nazarhussain@gmail.com>
Date: Mon, 13 Jan 2025 14:42:26 +0100
Subject: [PATCH 04/26] Update the benchmark version

---
 package.json |   2 +-
 yarn.lock    | 502 +++++++++++++++++++++++++++++++++------------------
 2 files changed, 324 insertions(+), 180 deletions(-)

diff --git a/package.json b/package.json
index af2d6463..efe9c431 100644
--- a/package.json
+++ b/package.json
@@ -26,7 +26,7 @@
     "@babel/preset-react": "^7.14.5",
     "@babel/preset-typescript": "^7.14.5",
     "@babel/register": "^7.15.3",
-    "@chainsafe/benchmark": "^1.1.0-rc.0",
+    "@chainsafe/benchmark": "^1.1.0-rc.1",
     "@types/node": "^22.10.2",
     "@typescript-eslint/eslint-plugin": "^6",
     "@typescript-eslint/parser": "^6",
diff --git a/yarn.lock b/yarn.lock
index fe41eb3a..109099bf 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" "^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-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" "^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"
@@ -1325,19 +1381,19 @@
     core-js "2.6.10"
     require-resolve "0.0.2"
 
-"@chainsafe/benchmark@^1.1.0-rc.0":
-  version "1.1.0-rc.0"
-  resolved "https://registry.yarnpkg.com/@chainsafe/benchmark/-/benchmark-1.1.0-rc.0.tgz#14f8620cb9b497a2021a2c5cb4cf2b77f9220266"
-  integrity sha512-C1d/DJgQ4cxgKv8/6J1CzDOT1RVBEMv2OWfzJr9eIuFQYx38LN/dZ0OnDnTgToMnnbvIJUVvmUnfH8z64GH22g==
+"@chainsafe/benchmark@^1.1.0-rc.1":
+  version "1.1.0-rc.1"
+  resolved "https://registry.yarnpkg.com/@chainsafe/benchmark/-/benchmark-1.1.0-rc.1.tgz#eceda8196816f2f5ff79a85e8c17ec2f5991e5e3"
+  integrity sha512-TCAn1bSYXKmAZyXTxepyJVadBv9FFgyM3AczoDI1mQnl97UdlTjRUPo5pIPWzTdzlzbI58Twho88RhWw7etxeg==
   dependencies:
-    "@actions/cache" "^1.0.7"
-    "@actions/github" "^5.0.0"
-    "@vitest/runner" "^2.1.6"
-    ajv "^8.6.0"
+    "@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 "^4.16.0"
-    csv-stringify "^5.6.2"
+    csv-parse "^5.6.0"
+    csv-stringify "^6.5.2"
     glob "^10.4.5"
     log-symbols "^7.0.0"
     yargs "^17.7.2"
@@ -2086,30 +2142,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"
@@ -2124,13 +2165,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":
@@ -2142,13 +2187,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":
@@ -2160,28 +2204,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"
@@ -2190,18 +2241,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"
@@ -2210,15 +2267,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"
@@ -2228,17 +2276,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"
@@ -2252,6 +2297,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"
@@ -2274,12 +2329,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" "^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" "^12.11.0"
+    "@octokit/openapi-types" "^23.0.1"
 
 "@octokit/types@^9.0.0", "@octokit/types@^9.2.3":
   version "9.3.2"
@@ -2306,11 +2368,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"
@@ -2328,6 +2385,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"
@@ -2707,14 +2800,6 @@
   resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.5.tgz#ec10755e871497bcd83efe927e43ec46e8c0747e"
   integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==
 
-"@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"
@@ -2806,13 +2891,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"
@@ -3011,7 +3089,7 @@
     "@vitest/utils" "2.1.4"
     pathe "^1.1.2"
 
-"@vitest/runner@2.1.8", "@vitest/runner@^2.1.6":
+"@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==
@@ -3545,6 +3623,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"
@@ -3594,7 +3677,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==
@@ -3604,6 +3687,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"
@@ -5014,6 +5107,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"
@@ -5486,15 +5584,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"
@@ -5738,7 +5836,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==
@@ -5931,6 +6029,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"
@@ -6835,6 +6941,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"
@@ -7402,7 +7513,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==
@@ -7840,6 +7951,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"
@@ -10697,7 +10816,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==
@@ -10908,7 +11027,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==
@@ -13137,6 +13256,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"
@@ -13204,6 +13331,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"
@@ -13318,6 +13457,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"
@@ -13587,12 +13731,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==
@@ -14324,7 +14468,7 @@ 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==

From 65c6516d467e21993fdadeb3af9433a443b4bcab Mon Sep 17 00:00:00 2001
From: Nazar Hussain <nazarhussain@gmail.com>
Date: Mon, 13 Jan 2025 15:29:12 +0100
Subject: [PATCH 05/26] Remove dead code

---
 .../test/perf/hashComputation.test.ts         |   8 +-
 .../persistent-ts/test/perf/Vector.test.ts    | 106 ------------------
 2 files changed, 4 insertions(+), 110 deletions(-)
 delete mode 100644 packages/persistent-ts/test/perf/Vector.test.ts

diff --git a/packages/persistent-merkle-tree/test/perf/hashComputation.test.ts b/packages/persistent-merkle-tree/test/perf/hashComputation.test.ts
index f67d247b..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 {describe, bench} from "@chainsafe/benchmark";
-import { HashComputation, HashComputationLevel, LeafNode, zeroHash } from "../../src/index.js";
+import {HashComputation, HashComputationLevel, LeafNode, zeroHash} from "../../src/index.js";
 
 /**
  * HashComputationLevel push then loop is faster than HashComputation[] push then loop
@@ -30,7 +30,7 @@ describe("HashComputationLevel", function () {
       for (const hc of level) {
         const {src0, src1, dest} = hc;
       }
-    }
+    },
   });
 
   bench({
@@ -43,6 +43,6 @@ describe("HashComputationLevel", function () {
       for (const hc of level) {
         const {src0, src1, dest} = hc;
       }
-    }
-  })
+    },
+  });
 });
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 060f3ea2..00000000
--- a/packages/persistent-ts/test/perf/Vector.test.ts
+++ /dev/null
@@ -1,106 +0,0 @@
-// Need to write this test with right pattern
-
-// 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<number> = 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<number>((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<number> = 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<number>((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);
-// });

From c855577e521b2ef92f75383b306735a8ff2f20e0 Mon Sep 17 00:00:00 2001
From: Nazar Hussain <nazarhussain@gmail.com>
Date: Mon, 13 Jan 2025 17:28:25 +0100
Subject: [PATCH 06/26] Update package version

---
 .benchrc.yaml | 2 ++
 package.json  | 4 ++--
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/.benchrc.yaml b/.benchrc.yaml
index 52a88098..6b020dbd 100644
--- a/.benchrc.yaml
+++ b/.benchrc.yaml
@@ -2,3 +2,5 @@
 threshold: 3
 maxMs: 60_000
 minRuns: 10
+setupFiles: 
+  - ./setHasher.mjs
diff --git a/package.json b/package.json
index efe9c431..4ec91b1f 100644
--- a/package.json
+++ b/package.json
@@ -26,7 +26,7 @@
     "@babel/preset-react": "^7.14.5",
     "@babel/preset-typescript": "^7.14.5",
     "@babel/register": "^7.15.3",
-    "@chainsafe/benchmark": "^1.1.0-rc.1",
+    "@chainsafe/benchmark": "^1.1.0-rc.2",
     "@types/node": "^22.10.2",
     "@typescript-eslint/eslint-plugin": "^6",
     "@typescript-eslint/parser": "^6",
@@ -53,4 +53,4 @@
   "resolutions": {
     "@types/react": "^17.0"
   }
-}
\ No newline at end of file
+}

From 072e47b5ce2120bc7837f5abdcec11b143fac82f Mon Sep 17 00:00:00 2001
From: Nazar Hussain <nazarhussain@gmail.com>
Date: Mon, 13 Jan 2025 17:28:31 +0100
Subject: [PATCH 07/26] Update package version

---
 yarn.lock | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/yarn.lock b/yarn.lock
index 109099bf..a429f212 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1381,10 +1381,10 @@
     core-js "2.6.10"
     require-resolve "0.0.2"
 
-"@chainsafe/benchmark@^1.1.0-rc.1":
-  version "1.1.0-rc.1"
-  resolved "https://registry.yarnpkg.com/@chainsafe/benchmark/-/benchmark-1.1.0-rc.1.tgz#eceda8196816f2f5ff79a85e8c17ec2f5991e5e3"
-  integrity sha512-TCAn1bSYXKmAZyXTxepyJVadBv9FFgyM3AczoDI1mQnl97UdlTjRUPo5pIPWzTdzlzbI58Twho88RhWw7etxeg==
+"@chainsafe/benchmark@^1.1.0-rc.2":
+  version "1.1.0-rc.2"
+  resolved "https://registry.yarnpkg.com/@chainsafe/benchmark/-/benchmark-1.1.0-rc.2.tgz#699832c38ec1d29bfddb8b5f0880f2afb79f8545"
+  integrity sha512-02DA3hU73CIH2jeeF/xmM5baSr8kpEGlD/7E/VVeDSpFQQIEndeRAkiRxslkHm9yo4FUv8PwjMsBC1fAUgwdaw==
   dependencies:
     "@actions/cache" "^4.0.0"
     "@actions/github" "^6.0.0"
@@ -1396,6 +1396,7 @@
     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":
@@ -14473,6 +14474,11 @@ yaml@^1.10.2, yaml@^1.7.2:
   resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
   integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
 
+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"
   resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"

From ba7ae16f402dafcbbfb0ea9aec69c280c1ff6758 Mon Sep 17 00:00:00 2001
From: Nazar Hussain <nazarhussain@gmail.com>
Date: Tue, 14 Jan 2025 09:29:38 +0100
Subject: [PATCH 08/26] Test the hasher for performance regression

---
 package.json                                        | 2 +-
 packages/ssz/test/perf/byType/listComposite.test.ts | 4 ++++
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/package.json b/package.json
index 4ec91b1f..08c8e062 100644
--- a/package.json
+++ b/package.json
@@ -15,7 +15,7 @@
     "test:browsers": "lerna run test:browsers",
     "test": "lerna run test",
     "benchmark:files": "NODE_OPTIONS='--max_old_space_size=4096 --loader=ts-node/esm' benchmark --config .benchrc.yaml",
-    "benchmark": "yarn benchmark:files 'packages/*/test/perf/**/*.test.ts'",
+    "benchmark": "yarn benchmark:files 'packages/ssz/test/perf/byType/listComposite.test.ts'",
     "benchmark:local": "yarn benchmark --local",
     "check-readme": "lerna run check-readme"
   },
diff --git a/packages/ssz/test/perf/byType/listComposite.test.ts b/packages/ssz/test/perf/byType/listComposite.test.ts
index f9c7508d..b427f149 100644
--- a/packages/ssz/test/perf/byType/listComposite.test.ts
+++ b/packages/ssz/test/perf/byType/listComposite.test.ts
@@ -1,6 +1,10 @@
 import {describe, bench} from "@chainsafe/benchmark";
+import {hasher} from "@chainsafe/persistent-merkle-tree";
 import {ContainerNodeStructType, ContainerType, ListCompositeType, UintNumberType} from "../../../src/index.js";
 
+console.log("%%%%%%%%%%%%%% INSIDE TEST FILE %%%%%%%%%%%%%%");
+console.log(hasher);
+
 const byteType = new UintNumberType(1);
 
 describe("ListCompositeType types", () => {

From c9be823bfd5adb0800d441b1df83c8b5ff8cf215 Mon Sep 17 00:00:00 2001
From: Nazar Hussain <nazarhussain@gmail.com>
Date: Tue, 14 Jan 2025 09:37:24 +0100
Subject: [PATCH 09/26] Revert "Test the hasher for performance regression"

This reverts commit d98e64fed7d21c55caf570c65d46d7bfe4ae8287.
---
 package.json                                        | 2 +-
 packages/ssz/test/perf/byType/listComposite.test.ts | 4 ----
 2 files changed, 1 insertion(+), 5 deletions(-)

diff --git a/package.json b/package.json
index 08c8e062..4ec91b1f 100644
--- a/package.json
+++ b/package.json
@@ -15,7 +15,7 @@
     "test:browsers": "lerna run test:browsers",
     "test": "lerna run test",
     "benchmark:files": "NODE_OPTIONS='--max_old_space_size=4096 --loader=ts-node/esm' benchmark --config .benchrc.yaml",
-    "benchmark": "yarn benchmark:files 'packages/ssz/test/perf/byType/listComposite.test.ts'",
+    "benchmark": "yarn benchmark:files 'packages/*/test/perf/**/*.test.ts'",
     "benchmark:local": "yarn benchmark --local",
     "check-readme": "lerna run check-readme"
   },
diff --git a/packages/ssz/test/perf/byType/listComposite.test.ts b/packages/ssz/test/perf/byType/listComposite.test.ts
index b427f149..f9c7508d 100644
--- a/packages/ssz/test/perf/byType/listComposite.test.ts
+++ b/packages/ssz/test/perf/byType/listComposite.test.ts
@@ -1,10 +1,6 @@
 import {describe, bench} from "@chainsafe/benchmark";
-import {hasher} from "@chainsafe/persistent-merkle-tree";
 import {ContainerNodeStructType, ContainerType, ListCompositeType, UintNumberType} from "../../../src/index.js";
 
-console.log("%%%%%%%%%%%%%% INSIDE TEST FILE %%%%%%%%%%%%%%");
-console.log(hasher);
-
 const byteType = new UintNumberType(1);
 
 describe("ListCompositeType types", () => {

From 6f96c503d567762c4a921568d181e18dcf8834c3 Mon Sep 17 00:00:00 2001
From: Nazar Hussain <nazarhussain@gmail.com>
Date: Tue, 14 Jan 2025 11:22:03 +0100
Subject: [PATCH 10/26] Update the package version

---
 package.json | 2 +-
 yarn.lock    | 8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/package.json b/package.json
index 4ec91b1f..e0a87a39 100644
--- a/package.json
+++ b/package.json
@@ -26,7 +26,7 @@
     "@babel/preset-react": "^7.14.5",
     "@babel/preset-typescript": "^7.14.5",
     "@babel/register": "^7.15.3",
-    "@chainsafe/benchmark": "^1.1.0-rc.2",
+    "@chainsafe/benchmark": "^1.1.0-rc.3",
     "@types/node": "^22.10.2",
     "@typescript-eslint/eslint-plugin": "^6",
     "@typescript-eslint/parser": "^6",
diff --git a/yarn.lock b/yarn.lock
index a429f212..76ebf9c5 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1381,10 +1381,10 @@
     core-js "2.6.10"
     require-resolve "0.0.2"
 
-"@chainsafe/benchmark@^1.1.0-rc.2":
-  version "1.1.0-rc.2"
-  resolved "https://registry.yarnpkg.com/@chainsafe/benchmark/-/benchmark-1.1.0-rc.2.tgz#699832c38ec1d29bfddb8b5f0880f2afb79f8545"
-  integrity sha512-02DA3hU73CIH2jeeF/xmM5baSr8kpEGlD/7E/VVeDSpFQQIEndeRAkiRxslkHm9yo4FUv8PwjMsBC1fAUgwdaw==
+"@chainsafe/benchmark@^1.1.0-rc.3":
+  version "1.1.0-rc.3"
+  resolved "https://registry.yarnpkg.com/@chainsafe/benchmark/-/benchmark-1.1.0-rc.3.tgz#f88927dbc3bef623373295430e21386a7b54158e"
+  integrity sha512-etcHcNzIR1WDPw3TVwdlL8AbyaBHyhyb8tlBQRAdAkMUf3N1BXRvS/0ZGk7ehb9OZT4s92xwXg/l79awCeganA==
   dependencies:
     "@actions/cache" "^4.0.0"
     "@actions/github" "^6.0.0"

From 7632f54d36d772926e8bf752a919c28baa4a60db Mon Sep 17 00:00:00 2001
From: Nazar Hussain <nazarhussain@gmail.com>
Date: Tue, 14 Jan 2025 15:28:34 +0100
Subject: [PATCH 11/26] Update the rc version of benchmark

---
 package.json | 2 +-
 yarn.lock    | 8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/package.json b/package.json
index e0a87a39..518b3d35 100644
--- a/package.json
+++ b/package.json
@@ -26,7 +26,7 @@
     "@babel/preset-react": "^7.14.5",
     "@babel/preset-typescript": "^7.14.5",
     "@babel/register": "^7.15.3",
-    "@chainsafe/benchmark": "^1.1.0-rc.3",
+    "@chainsafe/benchmark": "^1.1.0-rc.4",
     "@types/node": "^22.10.2",
     "@typescript-eslint/eslint-plugin": "^6",
     "@typescript-eslint/parser": "^6",
diff --git a/yarn.lock b/yarn.lock
index 76ebf9c5..ef8b9966 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1381,10 +1381,10 @@
     core-js "2.6.10"
     require-resolve "0.0.2"
 
-"@chainsafe/benchmark@^1.1.0-rc.3":
-  version "1.1.0-rc.3"
-  resolved "https://registry.yarnpkg.com/@chainsafe/benchmark/-/benchmark-1.1.0-rc.3.tgz#f88927dbc3bef623373295430e21386a7b54158e"
-  integrity sha512-etcHcNzIR1WDPw3TVwdlL8AbyaBHyhyb8tlBQRAdAkMUf3N1BXRvS/0ZGk7ehb9OZT4s92xwXg/l79awCeganA==
+"@chainsafe/benchmark@^1.1.0-rc.4":
+  version "1.1.0-rc.4"
+  resolved "https://registry.yarnpkg.com/@chainsafe/benchmark/-/benchmark-1.1.0-rc.4.tgz#e791fd938044bdc81ff09643df069fdb768c6356"
+  integrity sha512-ekDBTaG2OjgOuvwK28NXgBA/68SvovPMMwvvqfggN27/xpBZ3PDE7Id8tg2RgskGV49qUAIOMg2FjUd5Pk43dQ==
   dependencies:
     "@actions/cache" "^4.0.0"
     "@actions/github" "^6.0.0"

From bfe1ddddd1c112da2a1cca6155eea649990c8420 Mon Sep 17 00:00:00 2001
From: Nazar Hussain <nazarhussain@gmail.com>
Date: Tue, 14 Jan 2025 16:54:52 +0100
Subject: [PATCH 12/26] Update the benchmark version

---
 .benchrc.yaml | 1 +
 package.json  | 4 ++--
 yarn.lock     | 8 ++++----
 3 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/.benchrc.yaml b/.benchrc.yaml
index 6b020dbd..4259b6a1 100644
--- a/.benchrc.yaml
+++ b/.benchrc.yaml
@@ -2,5 +2,6 @@
 threshold: 3
 maxMs: 60_000
 minRuns: 10
+triggerGC: true
 setupFiles: 
   - ./setHasher.mjs
diff --git a/package.json b/package.json
index 518b3d35..fe3dab74 100644
--- a/package.json
+++ b/package.json
@@ -14,7 +14,7 @@
     "test:unit": "lerna run test:unit",
     "test:browsers": "lerna run test:browsers",
     "test": "lerna run test",
-    "benchmark:files": "NODE_OPTIONS='--max_old_space_size=4096 --loader=ts-node/esm' benchmark --config .benchrc.yaml",
+    "benchmark:files": "NODE_OPTIONS='--max_old_space_size=4096 --expose-gc --loader=ts-node/esm' benchmark --config .benchrc.yaml",
     "benchmark": "yarn benchmark:files 'packages/*/test/perf/**/*.test.ts'",
     "benchmark:local": "yarn benchmark --local",
     "check-readme": "lerna run check-readme"
@@ -26,7 +26,7 @@
     "@babel/preset-react": "^7.14.5",
     "@babel/preset-typescript": "^7.14.5",
     "@babel/register": "^7.15.3",
-    "@chainsafe/benchmark": "^1.1.0-rc.4",
+    "@chainsafe/benchmark": "^1.1.0-rc.5",
     "@types/node": "^22.10.2",
     "@typescript-eslint/eslint-plugin": "^6",
     "@typescript-eslint/parser": "^6",
diff --git a/yarn.lock b/yarn.lock
index ef8b9966..1b9f8248 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1381,10 +1381,10 @@
     core-js "2.6.10"
     require-resolve "0.0.2"
 
-"@chainsafe/benchmark@^1.1.0-rc.4":
-  version "1.1.0-rc.4"
-  resolved "https://registry.yarnpkg.com/@chainsafe/benchmark/-/benchmark-1.1.0-rc.4.tgz#e791fd938044bdc81ff09643df069fdb768c6356"
-  integrity sha512-ekDBTaG2OjgOuvwK28NXgBA/68SvovPMMwvvqfggN27/xpBZ3PDE7Id8tg2RgskGV49qUAIOMg2FjUd5Pk43dQ==
+"@chainsafe/benchmark@^1.1.0-rc.5":
+  version "1.1.0-rc.5"
+  resolved "https://registry.yarnpkg.com/@chainsafe/benchmark/-/benchmark-1.1.0-rc.5.tgz#bb9b311bcd20c875c366428f07aef7e0cc14cd5f"
+  integrity sha512-d09Z35Hc4SkkzJ0ugNIiLMldC7AIa6KavO5l1dZxSGb0pSm/DMNHliztmwVZfG3p+iO8/xmRjwvqNiLDsW1ETg==
   dependencies:
     "@actions/cache" "^4.0.0"
     "@actions/github" "^6.0.0"

From e2d4fb6cc97e3596a06153ecb1c2ee1aedae97ef Mon Sep 17 00:00:00 2001
From: Nazar Hussain <nazarhussain@gmail.com>
Date: Tue, 14 Jan 2025 17:25:54 +0100
Subject: [PATCH 13/26] Sort the benchmarks

---
 .benchrc.yaml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.benchrc.yaml b/.benchrc.yaml
index 4259b6a1..e23c57b6 100644
--- a/.benchrc.yaml
+++ b/.benchrc.yaml
@@ -3,5 +3,6 @@ threshold: 3
 maxMs: 60_000
 minRuns: 10
 triggerGC: true
+sort: true
 setupFiles: 
   - ./setHasher.mjs

From 955bf5f884eab14d2f3444d68abc368408b2b169 Mon Sep 17 00:00:00 2001
From: Nazar Hussain <nazarhussain@gmail.com>
Date: Wed, 15 Jan 2025 12:57:44 +0100
Subject: [PATCH 14/26] Update the benchmark rc file

---
 .benchrc.yaml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.benchrc.yaml b/.benchrc.yaml
index e23c57b6..121251e8 100644
--- a/.benchrc.yaml
+++ b/.benchrc.yaml
@@ -1,8 +1,8 @@
 # benchmark opts
 threshold: 3
-maxMs: 60_000
+maxMs: 60000
 minRuns: 10
-triggerGC: true
+triggerGC: false
 sort: true
 setupFiles: 
   - ./setHasher.mjs

From c0dcf4b085c3d6b2b813e9737c4b9b2c039ef786 Mon Sep 17 00:00:00 2001
From: Nazar Hussain <nazarhussain@gmail.com>
Date: Wed, 15 Jan 2025 13:38:29 +0100
Subject: [PATCH 15/26] Celanup GC

---
 .benchrc.yaml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.benchrc.yaml b/.benchrc.yaml
index 121251e8..f98a8d98 100644
--- a/.benchrc.yaml
+++ b/.benchrc.yaml
@@ -2,7 +2,7 @@
 threshold: 3
 maxMs: 60000
 minRuns: 10
-triggerGC: false
+triggerGC: true
 sort: true
 setupFiles: 
   - ./setHasher.mjs

From 3c084738d66fdeac2cfe8cdc4354e99ae603e55f Mon Sep 17 00:00:00 2001
From: Nazar Hussain <nazarhussain@gmail.com>
Date: Wed, 15 Jan 2025 14:08:52 +0100
Subject: [PATCH 16/26] Disable hasher to test

---
 setHasher.mjs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/setHasher.mjs b/setHasher.mjs
index cb2888f4..6b983d49 100644
--- a/setHasher.mjs
+++ b/setHasher.mjs
@@ -2,6 +2,6 @@
 // Used to run benchmarks with with visibility into hashtree performance, useful for Lodestar
 import {setHasher} from "@chainsafe/persistent-merkle-tree/lib/cjs/hasher/index.js";
 import {hasher} from "@chainsafe/persistent-merkle-tree/lib/cjs/hasher/hashtree.js";
-setHasher(hasher);
+// setHasher(hasher);
 
 export {};

From 164d920e63fca3bb73425813ac809e3de4da441e Mon Sep 17 00:00:00 2001
From: Nazar Hussain <nazarhussain@gmail.com>
Date: Wed, 15 Jan 2025 15:00:00 +0100
Subject: [PATCH 17/26] Disable hasher to test

---
 .benchrc.yaml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.benchrc.yaml b/.benchrc.yaml
index f98a8d98..121251e8 100644
--- a/.benchrc.yaml
+++ b/.benchrc.yaml
@@ -2,7 +2,7 @@
 threshold: 3
 maxMs: 60000
 minRuns: 10
-triggerGC: true
+triggerGC: false
 sort: true
 setupFiles: 
   - ./setHasher.mjs

From 80e83573a9e6478d3419174803ad9f8ece941509 Mon Sep 17 00:00:00 2001
From: Nazar Hussain <nazarhussain@gmail.com>
Date: Wed, 15 Jan 2025 16:35:44 +0100
Subject: [PATCH 18/26] Revert hasher change

---
 setHasher.mjs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/setHasher.mjs b/setHasher.mjs
index 6b983d49..cb2888f4 100644
--- a/setHasher.mjs
+++ b/setHasher.mjs
@@ -2,6 +2,6 @@
 // Used to run benchmarks with with visibility into hashtree performance, useful for Lodestar
 import {setHasher} from "@chainsafe/persistent-merkle-tree/lib/cjs/hasher/index.js";
 import {hasher} from "@chainsafe/persistent-merkle-tree/lib/cjs/hasher/hashtree.js";
-// setHasher(hasher);
+setHasher(hasher);
 
 export {};

From 7989235f5b3b97760852f2b3b50cbed90fb8e8cf Mon Sep 17 00:00:00 2001
From: Nazar Hussain <nazarhussain@gmail.com>
Date: Thu, 16 Jan 2025 12:35:17 +0100
Subject: [PATCH 19/26] Update the setup file to include a hook

---
 setHasher.mjs | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/setHasher.mjs b/setHasher.mjs
index cb2888f4..673ed1f2 100644
--- a/setHasher.mjs
+++ b/setHasher.mjs
@@ -1,7 +1,20 @@
 // Set the hasher to hashtree
 // Used to run benchmarks with with visibility into hashtree performance, useful for Lodestar
+import {beforeEach} from "@chainsafe/benchmark";
 import {setHasher} from "@chainsafe/persistent-merkle-tree/lib/cjs/hasher/index.js";
 import {hasher} from "@chainsafe/persistent-merkle-tree/lib/cjs/hasher/hashtree.js";
 setHasher(hasher);
 
+beforeEach(() => {
+  console.log("-----------------------------------");
+  const memory = process.memoryUsage();
+  console.log(
+    `HT: ${(memory.heapTotal / 1024 / 1024).toFixed(2)}MB, HU: ${(
+      memory.heapUsed /
+      1024 /
+      1024
+    ).toFixed(2)}MB, RSS: ${(memory.rss / 1024 / 1024).toFixed(2)}MB`
+  );
+});
+
 export {};

From cfc0721a635d2e8d5da5d7aa94c955605067b37d Mon Sep 17 00:00:00 2001
From: Nazar Hussain <nazarhussain@gmail.com>
Date: Thu, 16 Jan 2025 12:42:19 +0100
Subject: [PATCH 20/26] Update the sethasher loging

---
 setHasher.mjs | 1 -
 1 file changed, 1 deletion(-)

diff --git a/setHasher.mjs b/setHasher.mjs
index 673ed1f2..f794f986 100644
--- a/setHasher.mjs
+++ b/setHasher.mjs
@@ -6,7 +6,6 @@ import {hasher} from "@chainsafe/persistent-merkle-tree/lib/cjs/hasher/hashtree.
 setHasher(hasher);
 
 beforeEach(() => {
-  console.log("-----------------------------------");
   const memory = process.memoryUsage();
   console.log(
     `HT: ${(memory.heapTotal / 1024 / 1024).toFixed(2)}MB, HU: ${(

From 698a35641bb4985c6f038f67265f981965ae390b Mon Sep 17 00:00:00 2001
From: Nazar Hussain <nazarhussain@gmail.com>
Date: Thu, 16 Jan 2025 17:33:38 +0100
Subject: [PATCH 21/26] Update the benchmark lib version

---
 package.json |  2 +-
 yarn.lock    | 30 ++++++++++++++++++++++++++----
 2 files changed, 27 insertions(+), 5 deletions(-)

diff --git a/package.json b/package.json
index fe3dab74..3bf0095a 100644
--- a/package.json
+++ b/package.json
@@ -26,7 +26,7 @@
     "@babel/preset-react": "^7.14.5",
     "@babel/preset-typescript": "^7.14.5",
     "@babel/register": "^7.15.3",
-    "@chainsafe/benchmark": "^1.1.0-rc.5",
+    "@chainsafe/benchmark": "^1.1.0-rc.6",
     "@types/node": "^22.10.2",
     "@typescript-eslint/eslint-plugin": "^6",
     "@typescript-eslint/parser": "^6",
diff --git a/yarn.lock b/yarn.lock
index 1b9f8248..36df7844 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1368,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"
@@ -1381,10 +1386,10 @@
     core-js "2.6.10"
     require-resolve "0.0.2"
 
-"@chainsafe/benchmark@^1.1.0-rc.5":
-  version "1.1.0-rc.5"
-  resolved "https://registry.yarnpkg.com/@chainsafe/benchmark/-/benchmark-1.1.0-rc.5.tgz#bb9b311bcd20c875c366428f07aef7e0cc14cd5f"
-  integrity sha512-d09Z35Hc4SkkzJ0ugNIiLMldC7AIa6KavO5l1dZxSGb0pSm/DMNHliztmwVZfG3p+iO8/xmRjwvqNiLDsW1ETg==
+"@chainsafe/benchmark@^1.1.0-rc.6":
+  version "1.1.0-rc.6"
+  resolved "https://registry.yarnpkg.com/@chainsafe/benchmark/-/benchmark-1.1.0-rc.6.tgz#128c65fb6373bc3b606ff3ca3a6d7218b39a0fbc"
+  integrity sha512-I3FCg86zqB57B0iFLucrhCK6MF1BDs1a0UEFmDrhB4X3YtiYmUYTwUHET3m4ihYvjWnxESDYA1+qJMQTZ2x2ow==
   dependencies:
     "@actions/cache" "^4.0.0"
     "@actions/github" "^6.0.0"
@@ -1423,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"
@@ -1439,6 +1453,14 @@
     "@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"

From 1cf85ee37df816c4526fcf53a279c4b90db3bb62 Mon Sep 17 00:00:00 2001
From: Nazar Hussain <nazarhussain@gmail.com>
Date: Thu, 16 Jan 2025 18:06:43 +0100
Subject: [PATCH 22/26] Cleanup the hasher

---
 setHasher.mjs | 12 ------------
 1 file changed, 12 deletions(-)

diff --git a/setHasher.mjs b/setHasher.mjs
index f794f986..cb2888f4 100644
--- a/setHasher.mjs
+++ b/setHasher.mjs
@@ -1,19 +1,7 @@
 // Set the hasher to hashtree
 // Used to run benchmarks with with visibility into hashtree performance, useful for Lodestar
-import {beforeEach} from "@chainsafe/benchmark";
 import {setHasher} from "@chainsafe/persistent-merkle-tree/lib/cjs/hasher/index.js";
 import {hasher} from "@chainsafe/persistent-merkle-tree/lib/cjs/hasher/hashtree.js";
 setHasher(hasher);
 
-beforeEach(() => {
-  const memory = process.memoryUsage();
-  console.log(
-    `HT: ${(memory.heapTotal / 1024 / 1024).toFixed(2)}MB, HU: ${(
-      memory.heapUsed /
-      1024 /
-      1024
-    ).toFixed(2)}MB, RSS: ${(memory.rss / 1024 / 1024).toFixed(2)}MB`
-  );
-});
-
 export {};

From e258332df524bdd7cc91f2a088f01e275c4f78ad Mon Sep 17 00:00:00 2001
From: Nazar Hussain <nazarhussain@gmail.com>
Date: Thu, 16 Jan 2025 18:15:25 +0100
Subject: [PATCH 23/26] Bump package version

---
 package.json | 2 +-
 yarn.lock    | 8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/package.json b/package.json
index 3bf0095a..2cc22f68 100644
--- a/package.json
+++ b/package.json
@@ -26,7 +26,7 @@
     "@babel/preset-react": "^7.14.5",
     "@babel/preset-typescript": "^7.14.5",
     "@babel/register": "^7.15.3",
-    "@chainsafe/benchmark": "^1.1.0-rc.6",
+    "@chainsafe/benchmark": "^1.1.0",
     "@types/node": "^22.10.2",
     "@typescript-eslint/eslint-plugin": "^6",
     "@typescript-eslint/parser": "^6",
diff --git a/yarn.lock b/yarn.lock
index 36df7844..7df70ea2 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1386,10 +1386,10 @@
     core-js "2.6.10"
     require-resolve "0.0.2"
 
-"@chainsafe/benchmark@^1.1.0-rc.6":
-  version "1.1.0-rc.6"
-  resolved "https://registry.yarnpkg.com/@chainsafe/benchmark/-/benchmark-1.1.0-rc.6.tgz#128c65fb6373bc3b606ff3ca3a6d7218b39a0fbc"
-  integrity sha512-I3FCg86zqB57B0iFLucrhCK6MF1BDs1a0UEFmDrhB4X3YtiYmUYTwUHET3m4ihYvjWnxESDYA1+qJMQTZ2x2ow==
+"@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"

From 68d8ab1207a2b8efb73946bed7e5893e6f8a9664 Mon Sep 17 00:00:00 2001
From: Nazar Hussain <nazarhussain@gmail.com>
Date: Thu, 16 Jan 2025 18:47:53 +0100
Subject: [PATCH 24/26] Remove gc flag

---
 package.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package.json b/package.json
index 2cc22f68..3a7e34d2 100644
--- a/package.json
+++ b/package.json
@@ -14,7 +14,7 @@
     "test:unit": "lerna run test:unit",
     "test:browsers": "lerna run test:browsers",
     "test": "lerna run test",
-    "benchmark:files": "NODE_OPTIONS='--max_old_space_size=4096 --expose-gc --loader=ts-node/esm' benchmark --config .benchrc.yaml",
+    "benchmark:files": "NODE_OPTIONS='--max_old_space_size=4096 --loader=ts-node/esm' benchmark --config .benchrc.yaml",
     "benchmark": "yarn benchmark:files 'packages/*/test/perf/**/*.test.ts'",
     "benchmark:local": "yarn benchmark --local",
     "check-readme": "lerna run check-readme"

From 9c20000abf9e4f2ed005682f32d09ccc3bed4be8 Mon Sep 17 00:00:00 2001
From: matthewkeil <me@matthewkeil.com>
Date: Fri, 17 Jan 2025 23:03:35 +0800
Subject: [PATCH 25/26] fix(persistent-ts): empty commit to trigger release
 from package.json fix


From bf5581a45ac7c7a8c3d649344162d234764c6305 Mon Sep 17 00:00:00 2001
From: matthewkeil <me@matthewkeil.com>
Date: Fri, 17 Jan 2025 23:03:49 +0800
Subject: [PATCH 26/26] fix(ssz): empty commit to trigger release from
 package.json fix