diff --git a/package.json b/package.json index b2cb7f12..50aceeea 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "type": "module", "private": true, "engines": { - "node": "20.x" + "node": ">=20.11.0" }, "workspaces": [ "packages/*" @@ -14,7 +14,6 @@ "license": "MIT", "devDependencies": { "@types/chai": "^4.3.19", - "@types/mocha": "^10.0.7", "@types/node": "^22.5.3", "@typescript-eslint/eslint-plugin": "^8.4.0", "@typescript-eslint/parser": "^8.4.0", @@ -25,10 +24,9 @@ "eslint-plugin-import": "^2.30.0", "eslint-plugin-node": "^11.1.0", "eslint-plugin-prettier": "^5.2.1", - "mocha": "^10.7.3", "prettier": "^3.3.3", "rimraf": "^4.1.1", - "tsx": "^4.19.0", + "tsx": "^4.19.1", "typescript": "^5.5.4" }, "scripts": { @@ -42,5 +40,5 @@ "clean:libraries": "rimraf packages/**/node_modules && rimraf node_modules", "clean:build": "rimraf packages/**/dist && rimraf packages/**/build" }, - "packageManager": "yarn@4.4.1" + "packageManager": "yarn@4.5.0" } diff --git a/packages/brain/.dockerignore b/packages/brain/.dockerignore index ce72852e..edcf55e4 100644 --- a/packages/brain/.dockerignore +++ b/packages/brain/.dockerignore @@ -4,6 +4,5 @@ node_modules .eslintignore .eslintrc .gitignore -.mocharc.yaml .prettierrc tests \ No newline at end of file diff --git a/packages/brain/.mocharc.yaml b/packages/brain/.mocharc.yaml deleted file mode 100644 index 41e7c635..00000000 --- a/packages/brain/.mocharc.yaml +++ /dev/null @@ -1,8 +0,0 @@ -colors: true -exit: true -extension: [ts] -require: - - dotenv/config -node-option: - - experimental-specifier-resolution=node - - import=tsx/esm diff --git a/packages/brain/package.json b/packages/brain/package.json index 7fc4b1fa..5475bc9b 100644 --- a/packages/brain/package.json +++ b/packages/brain/package.json @@ -7,7 +7,7 @@ "types": "dist/types.d.ts", "scripts": { "test": "yarn run test:unit", - "test:unit": "mocha --exit --recursive 'test/**/*.unit.test.ts'", + "test:unit": "node --test --import tsx test/**/*.unit.test.ts", "dev": "yarn run link:ui && tsx --watch src/index.ts", "link:ui": "ln -s ../ui/build/ ./uiBuild", "build": "yarn run clean:dist && yarn run clean:ln && tsc -p tsconfig.json", @@ -32,9 +32,7 @@ "@types/express": "^4.17.15", "@types/lodash-es": "^4.17.12", "@types/lowdb": "^1.0.15", - "@types/mocha": "^10.0.7", "@types/sinon": "^10.0.13", - "mocha": "^10.7.3", "rimraf": "^4.1.1", "sinon": "^15.0.1", "typescript": "^5.5.4" diff --git a/packages/brain/test/unit/modules/apiClients/cron.unit.test.ts b/packages/brain/test/unit/modules/apiClients/cron.unit.test.ts index 41e41cf2..6d22c035 100644 --- a/packages/brain/test/unit/modules/apiClients/cron.unit.test.ts +++ b/packages/brain/test/unit/modules/apiClients/cron.unit.test.ts @@ -1,5 +1,5 @@ import { expect } from "chai"; -import { before } from "mocha"; +import { describe, it } from "node:test"; import { ValidatorApi, Web3SignerApi } from "../../../../src/modules/apiClients/index.js"; import { execSync } from "node:child_process"; import { BrainDataBase } from "../../../../src/modules/db/index.js"; @@ -69,7 +69,7 @@ describe.skip("Cron: Prater", () => { const host = "web3signer.web3signer-prater.dappnode"; - before(() => { + function before(): void { const consensusIp = execSync( `docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ${consensusClient.containerName}` ) @@ -99,11 +99,10 @@ describe.skip("Cron: Prater", () => { if (fs.existsSync(testDbName)) fs.unlinkSync(testDbName); brainDb = new BrainDataBase(testDbName); - }); - - beforeEach(async function () { - this.timeout(40000); + } + before(); + async function beforeEach(): Promise { console.log("Cleaning DB, validator and signer"); //Clean DB @@ -114,9 +113,10 @@ describe.skip("Cron: Prater", () => { //Clean signer await signerApi.deleteRemoteKeys({ pubkeys }); - }); + } it("Should post fee recipient in DB to validator", async () => { + await beforeEach(); await addSampleValidatorsToAllSources(1); const pubkeyToTest = pubkeys[0]; @@ -138,9 +138,10 @@ describe.skip("Cron: Prater", () => { expect(validatorFeeRecipient.data.ethaddress).to.be.equal(feeRecipient); expect(validatorFeeRecipient.data.ethaddress).to.be.equal(feeRecipient); - }).timeout(15000); + }); it("Should remove 1 keystore from signer to match pubkeys in DB", async () => { + await beforeEach(); addSampleValidatorsToDB(1); await addSampleKeystoresToSigner(2); @@ -153,9 +154,10 @@ describe.skip("Cron: Prater", () => { expect(dbPubkeys.length).to.be.equal(1); expect(signerPubkeys.data[0].validating_pubkey).to.be.equal(dbPubkeys[0]); - }).timeout(15000); + }); it("Should remove 1 keystore from DB to match keystores in signer", async () => { + await beforeEach(); addSampleValidatorsToDB(2); await addSampleKeystoresToSigner(1); @@ -168,9 +170,10 @@ describe.skip("Cron: Prater", () => { expect(dbPubkeys.length).to.be.equal(1); expect(signerPubkeys.data[0].validating_pubkey).to.be.equal(dbPubkeys[0]); - }).timeout(15000); + }); it("Should remove all the pubkeys in DB and keystores in signer to match each other", async () => { + await beforeEach(); addSampleValidatorsToDB(2); await addSampleKeystoresToSigner(2); @@ -184,9 +187,10 @@ describe.skip("Cron: Prater", () => { expect(signerPubkeys.data.length).to.be.equal(0); expect(dbPubkeys.length).to.be.equal(0); - }).timeout(15000); + }); it("Should keep all the keystores in the signer and the pubkeys in the DB", async () => { + await beforeEach(); addSampleValidatorsToDB(2); await addSampleKeystoresToSigner(2); @@ -201,9 +205,10 @@ describe.skip("Cron: Prater", () => { //Expect the same pubkeys in both sources (could not be in the same order) expect(signerPubkeys.data[0].validating_pubkey).to.be.oneOf(dbPubkeys); expect(signerPubkeys.data[1].validating_pubkey).to.be.oneOf(dbPubkeys); - }).timeout(15000); + }); it("Should delete all pubkeys from validator with empty DB", async () => { + await beforeEach(); await addSamplePubkeysToValidator(1); console.log("Added pubkeys to validator"); @@ -217,9 +222,10 @@ describe.skip("Cron: Prater", () => { console.log("Got validator pubkeys"); expect(validatorPubkeys.data.length).to.be.equal(0); - }).timeout(50000); + }); it("Should add the pubkeys in the DB to the validator", async () => { + await beforeEach(); addSampleValidatorsToDB(2); await addSampleKeystoresToSigner(2); @@ -234,7 +240,7 @@ describe.skip("Cron: Prater", () => { //Expect the same pubkeys in both sources (could not be in the same order) expect(validatorPubkeys.data[0].pubkey).to.be.oneOf(pubkeysToTest); expect(validatorPubkeys.data[1].pubkey).to.be.oneOf(pubkeysToTest); - }).timeout(15000); + }); // AUXILIARY FUNCTIONS // diff --git a/packages/brain/test/unit/modules/apiClients/fetchValidatorIndex.unit.test.ts b/packages/brain/test/unit/modules/apiClients/fetchValidatorIndex.unit.test.ts index 38baeae2..db02bce5 100644 --- a/packages/brain/test/unit/modules/apiClients/fetchValidatorIndex.unit.test.ts +++ b/packages/brain/test/unit/modules/apiClients/fetchValidatorIndex.unit.test.ts @@ -1,6 +1,7 @@ import { expect } from "chai"; import { Network } from "@stakingbrain/common"; import { BlockExplorerApi } from "../../../../src/modules/apiClients"; +import { describe, it } from "node:test"; import { ApiParams } from "../../../../src/modules/apiClients/types.js"; describe.skip("Test for fetching validator indexes in every available network", () => { diff --git a/packages/brain/test/unit/modules/apiClients/postgresClient.unit.test.ts b/packages/brain/test/unit/modules/apiClients/postgresClient.unit.test.ts index 38c6033e..00451510 100644 --- a/packages/brain/test/unit/modules/apiClients/postgresClient.unit.test.ts +++ b/packages/brain/test/unit/modules/apiClients/postgresClient.unit.test.ts @@ -1,9 +1,9 @@ import { PostgresClient } from "../../../../src/modules/apiClients/index.js"; +import { describe, it } from "node:test"; // This test must be executed with a real database connection describe.skip("Postgres client", function () { - this.timeout(10 * 1000); // change the dbUrl on demmand const dbUrl = "postgres://postgres:password@postgres.web3signer-holesky.dappnode:5432/web3signer"; const postgresClient = new PostgresClient(dbUrl); diff --git a/packages/brain/test/unit/modules/apiClients/validatorApi.unit.test.ts b/packages/brain/test/unit/modules/apiClients/validatorApi.unit.test.ts index c7c8c324..c05f6446 100644 --- a/packages/brain/test/unit/modules/apiClients/validatorApi.unit.test.ts +++ b/packages/brain/test/unit/modules/apiClients/validatorApi.unit.test.ts @@ -1,5 +1,5 @@ import { expect } from "chai"; -import { before } from "mocha"; +import { describe, it } from "node:test"; import { ValidatorApi } from "../../../../src/modules/apiClients/index.js"; import { execSync } from "node:child_process"; import { Network } from "@stakingbrain/common"; @@ -47,7 +47,7 @@ describe.skip("Validator API: Prater", () => { describe(`Consensus client: ${consensusClient.name}`, () => { let validatorApi: ValidatorApi; - before(() => { + function before(): void { const consensusIp = execSync( `docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ${consensusClient.containerName}` ) @@ -60,7 +60,8 @@ describe.skip("Validator API: Prater", () => { }, stakerSpecs.network ); - }); + } + before(); it("Should post validators", async () => { const response = await validatorApi.postRemoteKeys({ diff --git a/packages/brain/test/unit/modules/apiClients/web3signerApi.unit.test.ts b/packages/brain/test/unit/modules/apiClients/web3signerApi.unit.test.ts index 48142af1..3d362550 100644 --- a/packages/brain/test/unit/modules/apiClients/web3signerApi.unit.test.ts +++ b/packages/brain/test/unit/modules/apiClients/web3signerApi.unit.test.ts @@ -1,5 +1,5 @@ +import { describe, it } from "node:test"; import { expect } from "chai"; -import { before } from "mocha"; import path from "path"; import fs from "fs"; import { execSync } from "node:child_process"; @@ -20,7 +20,7 @@ describe.skip("Signer API: Prater", () => { const host = "web3signer.web3signer-prater.dappnode"; let signerApi: Web3SignerApi; - before(() => { + function before(): void { // Get consensus client IP const signerIp = execSync( `docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ${signerContainerName}` @@ -34,7 +34,9 @@ describe.skip("Signer API: Prater", () => { }, Network.Prater ); - }); + } + + before(); it("Should post validators", async () => { const keystoresPaths = fs.readdirSync(keystoresPath).filter((file) => file.endsWith(".json")); @@ -47,7 +49,7 @@ describe.skip("Signer API: Prater", () => { }); expect(response.data).to.be.an("array"); - }).timeout(10000); + }); it("Should get validators", async () => { const response = await signerApi.listRemoteKeys(); diff --git a/packages/brain/test/unit/modules/db/index.unit.test.ts b/packages/brain/test/unit/modules/db/index.unit.test.ts index f78ef27e..eebb4e1a 100644 --- a/packages/brain/test/unit/modules/db/index.unit.test.ts +++ b/packages/brain/test/unit/modules/db/index.unit.test.ts @@ -1,4 +1,5 @@ import { expect } from "chai"; +import { describe, it } from "node:test"; import sinon from "sinon"; import { BrainDataBase } from "../../../../src/modules/db/index.js"; import fs from "fs"; @@ -12,9 +13,9 @@ describe("DataBase", () => { const signerDnp = "DAppNodePackage-web3signer.web3signer-prater.dnp.dappnode.eth"; const consensusClientDnp = "DAppNodePackage-validator.prysm-prater.dnp.dappnode.eth"; - beforeEach(() => { + function setup(): void { if (fs.existsSync(testDbName)) fs.unlinkSync(testDbName); - }); + } /** * Test public initializeDb() @@ -24,6 +25,7 @@ describe("DataBase", () => { * Should do migration if the database file is not found */ it.skip("Should do migration if database file not found", async () => { + setup(); const expectedDb = { "0x821a80380122281580ba8a56cd21956933d43c62fdc8f5b4ec31b2c620e8534e80b6b816c9a2cc8d25568dc4ebcfd47a": { tag: "solo", @@ -98,12 +100,13 @@ describe("DataBase", () => { console.log(db.data); // check database expect(db.data).to.deep.equal(expectedDb); - }).timeout(10000); + }); /** * Create a new empty database if migration fails */ it("Should create a new empty database if migration fails", async () => { + setup(); const db = new BrainDataBase(testDbName); async function databaseMigration(): Promise { throw new Error("Database migration failed"); @@ -117,12 +120,13 @@ describe("DataBase", () => { expect(fs.existsSync(testDbName)).to.be.true; db.read(); expect(db.data).to.be.empty; - }).timeout(10000); + }); /** * Do nothing if the database file exists and is valid */ it("Should do nothing if the database file exists and is valid", () => { + setup(); const db = new BrainDataBase(testDbName); fs.writeFileSync(testDbName, JSON.stringify({})); const signerApi = sinon.createStubInstance(Web3SignerApi); @@ -168,7 +172,9 @@ describe("DataBase", () => { it("Should add the pubkeys to the database", () => {}); }); - after(() => { + function after(): void { if (fs.existsSync(testDbName)) fs.unlinkSync(testDbName); - }); + } + + after(); }); diff --git a/packages/common/.dockerignore b/packages/common/.dockerignore index cb00a019..352eee5e 100644 --- a/packages/common/.dockerignore +++ b/packages/common/.dockerignore @@ -3,6 +3,5 @@ node_modules .eslintignore .eslintrc .gitignore -.mocharc.yaml .prettierrc tests \ No newline at end of file diff --git a/packages/common/.mocharc.yaml b/packages/common/.mocharc.yaml deleted file mode 100644 index 41e7c635..00000000 --- a/packages/common/.mocharc.yaml +++ /dev/null @@ -1,8 +0,0 @@ -colors: true -exit: true -extension: [ts] -require: - - dotenv/config -node-option: - - experimental-specifier-resolution=node - - import=tsx/esm diff --git a/packages/common/package.json b/packages/common/package.json index c507ed4a..34de3c64 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -9,7 +9,7 @@ "dev": "tsc -w", "build": "tsc -p tsconfig.json", "test": "yarn run test:unit", - "test:unit": "mocha -r dotenv/config --exit --recursive 'test/**/*.unit.test.ts'" + "test:unit": "node --test --import tsx test/**/*.unit.test.ts" }, "devDependencies": { "@types/sinon": "^10.0.13", diff --git a/packages/common/test/unit/utils/addressValidation.unit.test.ts b/packages/common/test/unit/utils/addressValidation.unit.test.ts index b855fdbe..5c237404 100644 --- a/packages/common/test/unit/utils/addressValidation.unit.test.ts +++ b/packages/common/test/unit/utils/addressValidation.unit.test.ts @@ -1,4 +1,5 @@ import { isValidNonWithdrawableBlsAddress, isValidWithdrawableBlsAddress } from "../../../src/utils/index.js"; +import { describe, it } from "node:test"; import { expect } from "chai"; describe("isValidWithdrawableBlsAddress", () => { diff --git a/packages/ui/.mocharc.yaml b/packages/ui/.mocharc.yaml deleted file mode 100644 index 41e7c635..00000000 --- a/packages/ui/.mocharc.yaml +++ /dev/null @@ -1,8 +0,0 @@ -colors: true -exit: true -extension: [ts] -require: - - dotenv/config -node-option: - - experimental-specifier-resolution=node - - import=tsx/esm diff --git a/packages/ui/package.json b/packages/ui/package.json index ef82f920..d6ad3417 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -26,7 +26,7 @@ "start": "vite", "build": "tsc -b && vite build", "serve": "vite preview", - "test": "mocha -r dotenv/config --exit --recursive 'test/**/*.test.ts'", + "test": "node --test --import tsx test/**/*.test.ts", "dev": "vite build --watch --mode=development" }, "eslintConfig": { diff --git a/packages/ui/test/testBuildSummaryUrl.test.ts b/packages/ui/test/testBuildSummaryUrl.test.ts index 287b1ca4..ddec73f6 100644 --- a/packages/ui/test/testBuildSummaryUrl.test.ts +++ b/packages/ui/test/testBuildSummaryUrl.test.ts @@ -1,4 +1,5 @@ -import { BeaconchaGetResponse } from "@stakingbrain/common"; +import type { BeaconchaGetResponse } from "@stakingbrain/brain"; +import { describe, it } from "node:test"; import { expect } from "chai"; import buildValidatorSummaryURL from "../src/utils/buildValidatorSummaryURL.js"; diff --git a/tsconfig.json b/tsconfig.json index c6822502..042dec7b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,7 +3,7 @@ "target": "ES2023", // Use the latest stable ECMAScript target "module": "ES2022", // Use the latest stable ECMAScript module "lib": ["es2020", "esnext.bigint", "es2020.string", "es2020.symbol.wellknown", "dom"], - "types": ["node", "mocha", "chai"], + "types": ["node", "chai"], "moduleResolution": "node", diff --git a/yarn.lock b/yarn.lock index 259b32dd..05f983a2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3045,7 +3045,6 @@ __metadata: "@types/express": "npm:^4.17.15" "@types/lodash-es": "npm:^4.17.12" "@types/lowdb": "npm:^1.0.15" - "@types/mocha": "npm:^10.0.7" "@types/sinon": "npm:^10.0.13" ajv: "npm:^8.12.0" cors: "npm:^2.8.5" @@ -3053,7 +3052,6 @@ __metadata: express: "npm:^4.18.2" lodash-es: "npm:^4.17.21" lowdb: "npm:^7.0.1" - mocha: "npm:^10.7.3" postgres: "npm:^3.4.4" rimraf: "npm:^4.1.1" sinon: "npm:^15.0.1" @@ -3271,13 +3269,6 @@ __metadata: languageName: node linkType: hard -"@types/mocha@npm:^10.0.7": - version: 10.0.7 - resolution: "@types/mocha@npm:10.0.7" - checksum: 10c0/48a2df4dd02b6e66a11129dca6a23cf0cc3995faf8525286eb851043685bd8b7444780f4bb29a1c42df7559ed63294e5308bfce3a6b862ad2e0359cb21c21329 - languageName: node - linkType: hard - "@types/node@npm:*, @types/node@npm:>=10.0.0": version: 18.14.0 resolution: "@types/node@npm:18.14.0" @@ -3752,13 +3743,6 @@ __metadata: languageName: node linkType: hard -"ansi-colors@npm:^4.1.3": - version: 4.1.3 - resolution: "ansi-colors@npm:4.1.3" - checksum: 10c0/ec87a2f59902f74e61eada7f6e6fe20094a628dab765cfdbd03c3477599368768cffccdb5d3bb19a1b6c99126783a143b1fee31aab729b31ffe5836c7e5e28b9 - languageName: node - linkType: hard - "ansi-regex@npm:^5.0.1": version: 5.0.1 resolution: "ansi-regex@npm:5.0.1" @@ -3798,16 +3782,6 @@ __metadata: languageName: node linkType: hard -"anymatch@npm:~3.1.2": - version: 3.1.3 - resolution: "anymatch@npm:3.1.3" - dependencies: - normalize-path: "npm:^3.0.0" - picomatch: "npm:^2.0.4" - checksum: 10c0/57b06ae984bc32a0d22592c87384cd88fe4511b1dd7581497831c56d41939c8a001b28e7b853e1450f2bf61992dfcaa8ae2d0d161a0a90c4fb631ef07098fbac - languageName: node - linkType: hard - "argparse@npm:^2.0.1": version: 2.0.1 resolution: "argparse@npm:2.0.1" @@ -4081,13 +4055,6 @@ __metadata: languageName: node linkType: hard -"binary-extensions@npm:^2.0.0": - version: 2.3.0 - resolution: "binary-extensions@npm:2.3.0" - checksum: 10c0/75a59cafc10fb12a11d510e77110c6c7ae3f4ca22463d52487709ca7f18f69d886aa387557cc9864fbdb10153d0bdb4caacabf11541f55e89ed6e18d12ece2b5 - languageName: node - linkType: hard - "body-parser@npm:1.20.1": version: 1.20.1 resolution: "body-parser@npm:1.20.1" @@ -4127,7 +4094,7 @@ __metadata: languageName: node linkType: hard -"braces@npm:^3.0.3, braces@npm:~3.0.2": +"braces@npm:^3.0.3": version: 3.0.3 resolution: "braces@npm:3.0.3" dependencies: @@ -4136,13 +4103,6 @@ __metadata: languageName: node linkType: hard -"browser-stdout@npm:^1.3.1": - version: 1.3.1 - resolution: "browser-stdout@npm:1.3.1" - checksum: 10c0/c40e482fd82be872b6ea7b9f7591beafbf6f5ba522fe3dade98ba1573a1c29a11101564993e4eb44e5488be8f44510af072df9a9637c739217eb155ceb639205 - languageName: node - linkType: hard - "browserslist@npm:^4.21.3": version: 4.21.5 resolution: "browserslist@npm:4.21.5" @@ -4228,13 +4188,6 @@ __metadata: languageName: node linkType: hard -"camelcase@npm:^6.0.0": - version: 6.3.0 - resolution: "camelcase@npm:6.3.0" - checksum: 10c0/0d701658219bd3116d12da3eab31acddb3f9440790c0792e0d398f0a520a6a4058018e546862b6fba89d7ae990efaeb97da71e1913e9ebf5a8b5621a3d55c710 - languageName: node - linkType: hard - "caniuse-lite@npm:^1.0.30001449": version: 1.0.30001562 resolution: "caniuse-lite@npm:1.0.30001562" @@ -4273,7 +4226,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^4.0.0, chalk@npm:^4.1.0": +"chalk@npm:^4.0.0": version: 4.1.2 resolution: "chalk@npm:4.1.2" dependencies: @@ -4290,25 +4243,6 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:^3.5.3": - version: 3.6.0 - resolution: "chokidar@npm:3.6.0" - dependencies: - anymatch: "npm:~3.1.2" - braces: "npm:~3.0.2" - fsevents: "npm:~2.3.2" - glob-parent: "npm:~5.1.2" - is-binary-path: "npm:~2.1.0" - is-glob: "npm:~4.0.1" - normalize-path: "npm:~3.0.0" - readdirp: "npm:~3.6.0" - dependenciesMeta: - fsevents: - optional: true - checksum: 10c0/8361dcd013f2ddbe260eacb1f3cb2f2c6f2b0ad118708a343a5ed8158941a39cb8fb1d272e0f389712e74ee90ce8ba864eece9e0e62b9705cb468a2f6d917462 - languageName: node - linkType: hard - "chownr@npm:^2.0.0": version: 2.0.0 resolution: "chownr@npm:2.0.0" @@ -4323,17 +4257,6 @@ __metadata: languageName: node linkType: hard -"cliui@npm:^7.0.2": - version: 7.0.4 - resolution: "cliui@npm:7.0.4" - dependencies: - string-width: "npm:^4.2.0" - strip-ansi: "npm:^6.0.0" - wrap-ansi: "npm:^7.0.0" - checksum: 10c0/6035f5daf7383470cef82b3d3db00bec70afb3423538c50394386ffbbab135e26c3689c41791f911fa71b62d13d3863c712fdd70f0fbdffd938a1e6fd09aac00 - languageName: node - linkType: hard - "clsx@npm:^1.2.1": version: 1.2.1 resolution: "clsx@npm:1.2.1" @@ -4558,25 +4481,6 @@ __metadata: languageName: node linkType: hard -"debug@npm:^4.3.5": - version: 4.3.6 - resolution: "debug@npm:4.3.6" - dependencies: - ms: "npm:2.1.2" - peerDependenciesMeta: - supports-color: - optional: true - checksum: 10c0/3293416bff072389c101697d4611c402a6bacd1900ac20c0492f61a9cdd6b3b29750fc7f5e299f8058469ef60ff8fb79b86395a30374fbd2490113c1c7112285 - languageName: node - linkType: hard - -"decamelize@npm:^4.0.0": - version: 4.0.0 - resolution: "decamelize@npm:4.0.0" - checksum: 10c0/e06da03fc05333e8cd2778c1487da67ffbea5b84e03ca80449519b8fa61f888714bbc6f459ea963d5641b4aa98832130eb5cd193d90ae9f0a27eee14be8e278d - languageName: node - linkType: hard - "deep-eql@npm:^5.0.1": version: 5.0.2 resolution: "deep-eql@npm:5.0.2" @@ -4660,13 +4564,6 @@ __metadata: languageName: node linkType: hard -"diff@npm:^5.2.0": - version: 5.2.0 - resolution: "diff@npm:5.2.0" - checksum: 10c0/aed0941f206fe261ecb258dc8d0ceea8abbde3ace5827518ff8d302f0fc9cc81ce116c4d8f379151171336caf0516b79e01abdc1ed1201b6440d895a66689eb4 - languageName: node - linkType: hard - "dir-glob@npm:^3.0.1": version: 3.0.1 resolution: "dir-glob@npm:3.0.1" @@ -5742,15 +5639,6 @@ __metadata: languageName: node linkType: hard -"flat@npm:^5.0.2": - version: 5.0.2 - resolution: "flat@npm:5.0.2" - bin: - flat: cli.js - checksum: 10c0/f178b13482f0cd80c7fede05f4d10585b1f2fdebf26e12edc138e32d3150c6ea6482b7f12813a1091143bad52bb6d3596bca51a162257a21163c0ff438baa5fe - languageName: node - linkType: hard - "flatted@npm:^3.2.9": version: 3.3.1 resolution: "flatted@npm:3.3.1" @@ -5809,13 +5697,6 @@ __metadata: languageName: node linkType: hard -"fs.realpath@npm:^1.0.0": - version: 1.0.0 - resolution: "fs.realpath@npm:1.0.0" - checksum: 10c0/444cf1291d997165dfd4c0d58b69f0e4782bfd9149fd72faa4fe299e68e0e93d6db941660b37dd29153bf7186672ececa3b50b7e7249477b03fdf850f287c948 - languageName: node - linkType: hard - "fsevents@npm:~2.3.2": version: 2.3.2 resolution: "fsevents@npm:2.3.2" @@ -5894,13 +5775,6 @@ __metadata: languageName: node linkType: hard -"get-caller-file@npm:^2.0.5": - version: 2.0.5 - resolution: "get-caller-file@npm:2.0.5" - checksum: 10c0/c6c7b60271931fa752aeb92f2b47e355eac1af3a2673f47c9589e8f8a41adc74d45551c1bc57b5e66a80609f10ffb72b6f575e4370d61cc3f7f3aaff01757cde - languageName: node - linkType: hard - "get-func-name@npm:^2.0.1": version: 2.0.2 resolution: "get-func-name@npm:2.0.2" @@ -5952,7 +5826,7 @@ __metadata: languageName: node linkType: hard -"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": +"glob-parent@npm:^5.1.2": version: 5.1.2 resolution: "glob-parent@npm:5.1.2" dependencies: @@ -5986,19 +5860,6 @@ __metadata: languageName: node linkType: hard -"glob@npm:^8.1.0": - version: 8.1.0 - resolution: "glob@npm:8.1.0" - dependencies: - fs.realpath: "npm:^1.0.0" - inflight: "npm:^1.0.4" - inherits: "npm:2" - minimatch: "npm:^5.0.1" - once: "npm:^1.3.0" - checksum: 10c0/cb0b5cab17a59c57299376abe5646c7070f8acb89df5595b492dba3bfb43d301a46c01e5695f01154e6553168207cb60d4eaf07d3be4bc3eb9b0457c5c561d0f - languageName: node - linkType: hard - "globals@npm:^11.1.0": version: 11.12.0 resolution: "globals@npm:11.12.0" @@ -6138,15 +5999,6 @@ __metadata: languageName: node linkType: hard -"he@npm:^1.2.0": - version: 1.2.0 - resolution: "he@npm:1.2.0" - bin: - he: bin/he - checksum: 10c0/a27d478befe3c8192f006cdd0639a66798979dfa6e2125c6ac582a19a5ebfec62ad83e8382e6036170d873f46e4536a7e795bf8b95bf7c247f4cc0825ccc8c17 - languageName: node - linkType: hard - "history@npm:5": version: 5.3.0 resolution: "history@npm:5.3.0" @@ -6261,17 +6113,7 @@ __metadata: languageName: node linkType: hard -"inflight@npm:^1.0.4": - version: 1.0.6 - resolution: "inflight@npm:1.0.6" - dependencies: - once: "npm:^1.3.0" - wrappy: "npm:1" - checksum: 10c0/7faca22584600a9dc5b9fca2cd5feb7135ac8c935449837b315676b4c90aa4f391ec4f42240178244b5a34e8bede1948627fda392ca3191522fc46b34e985ab2 - languageName: node - linkType: hard - -"inherits@npm:2, inherits@npm:2.0.4": +"inherits@npm:2.0.4": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 @@ -6351,15 +6193,6 @@ __metadata: languageName: node linkType: hard -"is-binary-path@npm:~2.1.0": - version: 2.1.0 - resolution: "is-binary-path@npm:2.1.0" - dependencies: - binary-extensions: "npm:^2.0.0" - checksum: 10c0/a16eaee59ae2b315ba36fad5c5dcaf8e49c3e27318f8ab8fa3cdb8772bf559c8d1ba750a589c2ccb096113bb64497084361a25960899cb6172a6925ab6123d38 - languageName: node - linkType: hard - "is-boolean-object@npm:^1.1.0": version: 1.1.2 resolution: "is-boolean-object@npm:1.1.2" @@ -6445,7 +6278,7 @@ __metadata: languageName: node linkType: hard -"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": +"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3": version: 4.0.3 resolution: "is-glob@npm:4.0.3" dependencies: @@ -6498,13 +6331,6 @@ __metadata: languageName: node linkType: hard -"is-plain-obj@npm:^2.1.0": - version: 2.1.0 - resolution: "is-plain-obj@npm:2.1.0" - checksum: 10c0/e5c9814cdaa627a9ad0a0964ded0e0491bfd9ace405c49a5d63c88b30a162f1512c069d5b80997893c4d0181eadc3fed02b4ab4b81059aba5620bfcdfdeb9c53 - languageName: node - linkType: hard - "is-regex@npm:^1.1.4": version: 1.1.4 resolution: "is-regex@npm:1.1.4" @@ -6558,13 +6384,6 @@ __metadata: languageName: node linkType: hard -"is-unicode-supported@npm:^0.1.0": - version: 0.1.0 - resolution: "is-unicode-supported@npm:0.1.0" - checksum: 10c0/00cbe3455c3756be68d2542c416cab888aebd5012781d6819749fefb15162ff23e38501fe681b3d751c73e8ff561ac09a5293eba6f58fdf0178462ce6dcb3453 - languageName: node - linkType: hard - "is-weakmap@npm:^2.0.2": version: 2.0.2 resolution: "is-weakmap@npm:2.0.2" @@ -6848,16 +6667,6 @@ __metadata: languageName: node linkType: hard -"log-symbols@npm:^4.1.0": - version: 4.1.0 - resolution: "log-symbols@npm:4.1.0" - dependencies: - chalk: "npm:^4.1.0" - is-unicode-supported: "npm:^0.1.0" - checksum: 10c0/67f445a9ffa76db1989d0fa98586e5bc2fd5247260dafb8ad93d9f0ccd5896d53fb830b0e54dade5ad838b9de2006c826831a3c528913093af20dff8bd24aca6 - languageName: node - linkType: hard - "loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0": version: 1.4.0 resolution: "loose-envify@npm:1.4.0" @@ -7004,15 +6813,6 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^5.0.1, minimatch@npm:^5.1.6": - version: 5.1.6 - resolution: "minimatch@npm:5.1.6" - dependencies: - brace-expansion: "npm:^2.0.1" - checksum: 10c0/3defdfd230914f22a8da203747c42ee3c405c39d4d37ffda284dac5e45b7e1f6c49aa8be606509002898e73091ff2a3bbfc59c2c6c71d4660609f63aa92f98e3 - languageName: node - linkType: hard - "minimatch@npm:^9.0.4": version: 9.0.5 resolution: "minimatch@npm:9.0.5" @@ -7129,37 +6929,6 @@ __metadata: languageName: node linkType: hard -"mocha@npm:^10.7.3": - version: 10.7.3 - resolution: "mocha@npm:10.7.3" - dependencies: - ansi-colors: "npm:^4.1.3" - browser-stdout: "npm:^1.3.1" - chokidar: "npm:^3.5.3" - debug: "npm:^4.3.5" - diff: "npm:^5.2.0" - escape-string-regexp: "npm:^4.0.0" - find-up: "npm:^5.0.0" - glob: "npm:^8.1.0" - he: "npm:^1.2.0" - js-yaml: "npm:^4.1.0" - log-symbols: "npm:^4.1.0" - minimatch: "npm:^5.1.6" - ms: "npm:^2.1.3" - serialize-javascript: "npm:^6.0.2" - strip-json-comments: "npm:^3.1.1" - supports-color: "npm:^8.1.1" - workerpool: "npm:^6.5.1" - yargs: "npm:^16.2.0" - yargs-parser: "npm:^20.2.9" - yargs-unparser: "npm:^2.0.0" - bin: - _mocha: bin/_mocha - mocha: bin/mocha.js - checksum: 10c0/76a205905ec626262d903954daca31ba8e0dd4347092f627b98b8508dcdb5b30be62ec8f7a405fab3b2e691bdc099721c3291b330c3ee85b8ec40d3d179f8728 - languageName: node - linkType: hard - "ms@npm:2.0.0": version: 2.0.0 resolution: "ms@npm:2.0.0" @@ -7174,7 +6943,7 @@ __metadata: languageName: node linkType: hard -"ms@npm:2.1.3, ms@npm:^2.1.1, ms@npm:^2.1.3": +"ms@npm:2.1.3, ms@npm:^2.1.1": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 @@ -7269,13 +7038,6 @@ __metadata: languageName: node linkType: hard -"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": - version: 3.0.0 - resolution: "normalize-path@npm:3.0.0" - checksum: 10c0/e008c8142bcc335b5e38cf0d63cfd39d6cf2d97480af9abdbe9a439221fd4d749763bab492a8ee708ce7a194bb00c9da6d0a115018672310850489137b3da046 - languageName: node - linkType: hard - "object-assign@npm:^4, object-assign@npm:^4.1.1": version: 4.1.1 resolution: "object-assign@npm:4.1.1" @@ -7380,15 +7142,6 @@ __metadata: languageName: node linkType: hard -"once@npm:^1.3.0": - version: 1.4.0 - resolution: "once@npm:1.4.0" - dependencies: - wrappy: "npm:1" - checksum: 10c0/5d48aca287dfefabd756621c5dfce5c91a549a93e9fdb7b8246bc4c4790aa2ec17b34a260530474635147aeb631a2dcc8b32c613df0675f96041cbb8244517d0 - languageName: node - linkType: hard - "optionator@npm:^0.9.3": version: 0.9.4 resolution: "optionator@npm:0.9.4" @@ -7540,7 +7293,7 @@ __metadata: languageName: node linkType: hard -"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.3.1": +"picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" checksum: 10c0/26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be @@ -7658,15 +7411,6 @@ __metadata: languageName: node linkType: hard -"randombytes@npm:^2.1.0": - version: 2.1.0 - resolution: "randombytes@npm:2.1.0" - dependencies: - safe-buffer: "npm:^5.1.0" - checksum: 10c0/50395efda7a8c94f5dffab564f9ff89736064d32addf0cc7e8bf5e4166f09f8ded7a0849ca6c2d2a59478f7d90f78f20d8048bca3cdf8be09d8e8a10790388f3 - languageName: node - linkType: hard - "range-parser@npm:~1.2.1": version: 1.2.1 resolution: "range-parser@npm:1.2.1" @@ -7780,15 +7524,6 @@ __metadata: languageName: node linkType: hard -"readdirp@npm:~3.6.0": - version: 3.6.0 - resolution: "readdirp@npm:3.6.0" - dependencies: - picomatch: "npm:^2.2.1" - checksum: 10c0/6fa848cf63d1b82ab4e985f4cf72bd55b7dcfd8e0a376905804e48c3634b7e749170940ba77b32804d5fe93b3cc521aa95a8d7e7d725f830da6d93f3669ce66b - languageName: node - linkType: hard - "reflect.getprototypeof@npm:^1.0.4": version: 1.0.6 resolution: "reflect.getprototypeof@npm:1.0.6" @@ -7887,13 +7622,6 @@ __metadata: languageName: node linkType: hard -"require-directory@npm:^2.1.1": - version: 2.1.1 - resolution: "require-directory@npm:2.1.1" - checksum: 10c0/83aa76a7bc1531f68d92c75a2ca2f54f1b01463cb566cf3fbc787d0de8be30c9dbc211d1d46be3497dac5785fe296f2dd11d531945ac29730643357978966e99 - languageName: node - linkType: hard - "require-from-string@npm:^2.0.2": version: 2.0.2 resolution: "require-from-string@npm:2.0.2" @@ -8107,7 +7835,7 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:5.2.1, safe-buffer@npm:^5.1.0": +"safe-buffer@npm:5.2.1": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 @@ -8200,15 +7928,6 @@ __metadata: languageName: node linkType: hard -"serialize-javascript@npm:^6.0.2": - version: 6.0.2 - resolution: "serialize-javascript@npm:6.0.2" - dependencies: - randombytes: "npm:^2.1.0" - checksum: 10c0/2dd09ef4b65a1289ba24a788b1423a035581bef60817bea1f01eda8e3bda623f86357665fe7ac1b50f6d4f583f97db9615b3f07b2a2e8cbcb75033965f771dd2 - languageName: node - linkType: hard - "serve-static@npm:1.15.0": version: 1.15.0 resolution: "serve-static@npm:1.15.0" @@ -8430,7 +8149,6 @@ __metadata: resolution: "stakingbrain@workspace:." dependencies: "@types/chai": "npm:^4.3.19" - "@types/mocha": "npm:^10.0.7" "@types/node": "npm:^22.5.3" "@typescript-eslint/eslint-plugin": "npm:^8.4.0" "@typescript-eslint/parser": "npm:^8.4.0" @@ -8441,10 +8159,9 @@ __metadata: eslint-plugin-import: "npm:^2.30.0" eslint-plugin-node: "npm:^11.1.0" eslint-plugin-prettier: "npm:^5.2.1" - mocha: "npm:^10.7.3" prettier: "npm:^3.3.3" rimraf: "npm:^4.1.1" - tsx: "npm:^4.19.0" + tsx: "npm:^4.19.1" typescript: "npm:^5.5.4" languageName: unknown linkType: soft @@ -8479,7 +8196,7 @@ __metadata: languageName: node linkType: hard -"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0": +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0": version: 4.2.3 resolution: "string-width@npm:4.2.3" dependencies: @@ -8632,15 +8349,6 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^8.1.1": - version: 8.1.1 - resolution: "supports-color@npm:8.1.1" - dependencies: - has-flag: "npm:^4.0.0" - checksum: 10c0/ea1d3c275dd604c974670f63943ed9bd83623edc102430c05adb8efc56ba492746b6e95386e7831b872ec3807fd89dd8eb43f735195f37b5ec343e4234cc7e89 - languageName: node - linkType: hard - "supports-preserve-symlinks-flag@npm:^1.0.0": version: 1.0.0 resolution: "supports-preserve-symlinks-flag@npm:1.0.0" @@ -8783,9 +8491,9 @@ __metadata: languageName: node linkType: hard -"tsx@npm:^4.19.0": - version: 4.19.0 - resolution: "tsx@npm:4.19.0" +"tsx@npm:^4.19.1": + version: 4.19.1 + resolution: "tsx@npm:4.19.1" dependencies: esbuild: "npm:~0.23.0" fsevents: "npm:~2.3.3" @@ -8795,7 +8503,7 @@ __metadata: optional: true bin: tsx: dist/cli.mjs - checksum: 10c0/d14463a78067c6db84c677b79b14861de6d7f6fb0ffa5727cc500c4552459e936395a3854ad0112af0fd7b263bcedd62ce3929b036188eb10cd9902a607ffe34 + checksum: 10c0/cbea9baf57e7406fa0ecc2c03b9bb2501ee740dc28c938f949180a646a28e5d65e7cccbfba340508923bfd45e90320ef9eef7f815cae4515b6ef2ee429edc7ee languageName: node linkType: hard @@ -9169,14 +8877,7 @@ __metadata: languageName: node linkType: hard -"workerpool@npm:^6.5.1": - version: 6.5.1 - resolution: "workerpool@npm:6.5.1" - checksum: 10c0/58e8e969782292cb3a7bfba823f1179a7615250a0cefb4841d5166234db1880a3d0fe83a31dd8d648329ec92c2d0cd1890ad9ec9e53674bb36ca43e9753cdeac - languageName: node - linkType: hard - -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version: 7.0.0 resolution: "wrap-ansi@npm:7.0.0" dependencies: @@ -9198,13 +8899,6 @@ __metadata: languageName: node linkType: hard -"wrappy@npm:1": - version: 1.0.2 - resolution: "wrappy@npm:1.0.2" - checksum: 10c0/56fece1a4018c6a6c8e28fbc88c87e0fbf4ea8fd64fc6c63b18f4acc4bd13e0ad2515189786dd2c30d3eec9663d70f4ecf699330002f8ccb547e4a18231fc9f0 - languageName: node - linkType: hard - "ws@npm:~8.11.0": version: 8.11.0 resolution: "ws@npm:8.11.0" @@ -9242,13 +8936,6 @@ __metadata: languageName: node linkType: hard -"y18n@npm:^5.0.5": - version: 5.0.8 - resolution: "y18n@npm:5.0.8" - checksum: 10c0/4df2842c36e468590c3691c894bc9cdbac41f520566e76e24f59401ba7d8b4811eb1e34524d57e54bc6d864bcb66baab7ffd9ca42bf1eda596618f9162b91249 - languageName: node - linkType: hard - "yallist@npm:^3.0.2": version: 3.1.1 resolution: "yallist@npm:3.1.1" @@ -9270,40 +8957,6 @@ __metadata: languageName: node linkType: hard -"yargs-parser@npm:^20.2.2, yargs-parser@npm:^20.2.9": - version: 20.2.9 - resolution: "yargs-parser@npm:20.2.9" - checksum: 10c0/0685a8e58bbfb57fab6aefe03c6da904a59769bd803a722bb098bd5b0f29d274a1357762c7258fb487512811b8063fb5d2824a3415a0a4540598335b3b086c72 - languageName: node - linkType: hard - -"yargs-unparser@npm:^2.0.0": - version: 2.0.0 - resolution: "yargs-unparser@npm:2.0.0" - dependencies: - camelcase: "npm:^6.0.0" - decamelize: "npm:^4.0.0" - flat: "npm:^5.0.2" - is-plain-obj: "npm:^2.1.0" - checksum: 10c0/a5a7d6dc157efa95122e16780c019f40ed91d4af6d2bac066db8194ed0ec5c330abb115daa5a79ff07a9b80b8ea80c925baacf354c4c12edd878c0529927ff03 - languageName: node - linkType: hard - -"yargs@npm:^16.2.0": - version: 16.2.0 - resolution: "yargs@npm:16.2.0" - dependencies: - cliui: "npm:^7.0.2" - escalade: "npm:^3.1.1" - get-caller-file: "npm:^2.0.5" - require-directory: "npm:^2.1.1" - string-width: "npm:^4.2.0" - y18n: "npm:^5.0.5" - yargs-parser: "npm:^20.2.2" - checksum: 10c0/b1dbfefa679848442454b60053a6c95d62f2d2e21dd28def92b647587f415969173c6e99a0f3bab4f1b67ee8283bf735ebe3544013f09491186ba9e8a9a2b651 - languageName: node - linkType: hard - "yocto-queue@npm:^0.1.0": version: 0.1.0 resolution: "yocto-queue@npm:0.1.0"