From fe888dc03deac90896999059aa6fc5f2108b4349 Mon Sep 17 00:00:00 2001 From: Zahin Mohammad Date: Thu, 21 Aug 2025 09:16:24 -0400 Subject: [PATCH 01/14] feat: update nvmrc TICKET: WP-5599 --- .nvmrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.nvmrc b/.nvmrc index 5b540673a8..91d5f6ff8e 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -22.16.0 +22.18.0 From ea180b43001d8e956196bc07b32798e3a7031eeb Mon Sep 17 00:00:00 2001 From: Zahin Mohammad Date: Thu, 21 Aug 2025 09:27:36 -0400 Subject: [PATCH 02/14] feat(root): migrate ts-node -> tsx ts-node is no longer maintained, and as such introduces friction with newer versions of nodejs. [Example](https://github.com/nodejs/node/issues/59364) This commit moves to an actively maintained alternative. TICKET: WP-5599 TICKET: WP-5599 --- .github/workflows/publish.yml | 4 +- examples/docs/get-fee-estimate.md | 4 +- ...ecipients-transfer-for-non-erc20-tokens.md | 4 +- examples/ts/README.md | 4 +- examples/ts/btc/changeAddress/index.ts | 2 +- examples/ts/btc/legacySafe/recover.ts | 2 +- examples/ts/btc/legacySafe/sweep.ts | 2 +- examples/ts/btc/omni/index.ts | 2 +- .../ts/btc/v1/wallet-recovery-validation.ts | 2 +- examples/ts/http-proxy/README.md | 6 +- examples/ts/http-proxy/package.json | 6 +- examples/ts/http-proxy/yarn.lock | 519 ++++++++++-------- examples/ts/proxy/package.json | 2 +- .../nonce-account-creation/create-account.ts | 2 +- .../generate-nonce-accounts.ts | 2 +- examples/ts/tss-recovery/README.md | 4 +- examples/ts/tss-recovery/package.json | 6 +- examples/ts/tss-smc/README.md | 4 +- examples/ts/tss-smc/package.json | 8 +- modules/abstract-cosmos/.mocharc.yml | 2 +- modules/abstract-eth/.mocharc.js | 2 +- modules/abstract-lightning/.mocharc.yml | 2 +- modules/abstract-substrate/.mocharc.yml | 2 +- modules/abstract-utxo/.mocharc.js | 2 +- modules/account-lib/.mocharc.js | 2 +- modules/bitgo/.mocharc.yml | 2 +- modules/blockapis/.mocharc.js | 2 +- modules/deser-lib/.mocharc.json | 2 +- modules/express/.mocharc.js | 2 +- modules/express/EXTERNAL_SIGNER.md | 2 +- modules/key-card/.mocharc.js | 2 +- modules/sdk-api/.mocharc.js | 2 +- modules/sdk-coin-ada/.mocharc.yml | 2 +- modules/sdk-coin-algo/.mocharc.yml | 2 +- modules/sdk-coin-apechain/.mocharc.yml | 2 +- modules/sdk-coin-apt/.mocharc.yml | 2 +- modules/sdk-coin-arbeth/.mocharc.yml | 2 +- modules/sdk-coin-asi/.mocharc.yml | 2 +- modules/sdk-coin-atom/.mocharc.yml | 2 +- modules/sdk-coin-avaxc/.mocharc.yml | 2 +- modules/sdk-coin-avaxp/.mocharc.yml | 2 +- modules/sdk-coin-baby/.mocharc.yml | 2 +- modules/sdk-coin-bch/.mocharc.yml | 2 +- modules/sdk-coin-bcha/.mocharc.yml | 2 +- modules/sdk-coin-bera/.mocharc.yml | 2 +- modules/sdk-coin-bld/.mocharc.yml | 2 +- modules/sdk-coin-bsc/.mocharc.yml | 2 +- modules/sdk-coin-bsv/.mocharc.yml | 2 +- modules/sdk-coin-btc/.mocharc.yml | 2 +- modules/sdk-coin-btg/.mocharc.yml | 2 +- modules/sdk-coin-celo/.mocharc.yml | 2 +- modules/sdk-coin-coredao/.mocharc.yml | 2 +- modules/sdk-coin-coreum/.mocharc.yml | 2 +- modules/sdk-coin-cosmos/.mocharc.yml | 2 +- modules/sdk-coin-cronos/.mocharc.yml | 2 +- modules/sdk-coin-cspr/.mocharc.yml | 2 +- modules/sdk-coin-dash/.mocharc.yml | 2 +- modules/sdk-coin-doge/.mocharc.yml | 2 +- modules/sdk-coin-dot/.mocharc.yml | 2 +- modules/sdk-coin-eos/.mocharc.yml | 2 +- modules/sdk-coin-etc/.mocharc.yml | 2 +- modules/sdk-coin-eth/.mocharc.yml | 2 +- modules/sdk-coin-ethlike/.mocharc.yml | 2 +- modules/sdk-coin-ethw/.mocharc.yml | 2 +- modules/sdk-coin-evm/.mocharc.yml | 2 +- modules/sdk-coin-flr/.mocharc.yml | 2 +- modules/sdk-coin-hash/.mocharc.yml | 2 +- modules/sdk-coin-hbar/.mocharc.yml | 2 +- modules/sdk-coin-icp/.mocharc.yml | 2 +- modules/sdk-coin-initia/.mocharc.yml | 2 +- modules/sdk-coin-injective/.mocharc.yml | 2 +- modules/sdk-coin-islm/.mocharc.yml | 2 +- modules/sdk-coin-lnbtc/.mocharc.yml | 2 +- modules/sdk-coin-ltc/.mocharc.yml | 2 +- modules/sdk-coin-mantra/.mocharc.yml | 2 +- modules/sdk-coin-mon/.mocharc.yml | 2 +- modules/sdk-coin-near/.mocharc.yml | 2 +- modules/sdk-coin-oas/.mocharc.yml | 2 +- modules/sdk-coin-opeth/.mocharc.yml | 2 +- modules/sdk-coin-osmo/.mocharc.yml | 2 +- modules/sdk-coin-polygon/.mocharc.yml | 2 +- modules/sdk-coin-polyx/.mocharc.yml | 2 +- modules/sdk-coin-rbtc/.mocharc.yml | 2 +- modules/sdk-coin-rune/.mocharc.yml | 2 +- modules/sdk-coin-sei/.mocharc.yml | 2 +- modules/sdk-coin-sgb/.mocharc.yml | 2 +- modules/sdk-coin-sol/.mocharc.yml | 2 +- modules/sdk-coin-soneium/.mocharc.yml | 2 +- modules/sdk-coin-stt/.mocharc.yml | 2 +- modules/sdk-coin-stx/.mocharc.yml | 2 +- modules/sdk-coin-sui/.mocharc.yml | 2 +- modules/sdk-coin-tao/.mocharc.yml | 2 +- modules/sdk-coin-tia/.mocharc.yml | 2 +- modules/sdk-coin-ton/.mocharc.yml | 2 +- modules/sdk-coin-trx/.mocharc.yml | 2 +- modules/sdk-coin-vet/.mocharc.yml | 2 +- modules/sdk-coin-wemix/.mocharc.yml | 2 +- modules/sdk-coin-world/.mocharc.yml | 2 +- modules/sdk-coin-xdc/.mocharc.yml | 2 +- modules/sdk-coin-xlm/.mocharc.yml | 2 +- modules/sdk-coin-xrp/.mocharc.js | 2 +- modules/sdk-coin-xtz/.mocharc.yml | 2 +- modules/sdk-coin-zec/.mocharc.yml | 2 +- modules/sdk-coin-zeta/.mocharc.yml | 2 +- modules/sdk-coin-zketh/.mocharc.yml | 2 +- modules/sdk-core/.mocharc.js | 2 +- modules/sdk-core/package.json | 2 +- modules/sdk-hmac/.mocharc.yml | 2 +- modules/sdk-lib-mpc/.mocharc.js | 2 +- modules/sdk-rpc-wrapper/.mocharc.js | 2 +- modules/secp256k1/.mocharc.js | 2 +- modules/statics/.mocharc.js | 2 +- modules/unspents/.mocharc.js | 2 +- modules/utxo-bin/.mocharc.js | 2 +- modules/utxo-bin/README.md | 2 +- modules/utxo-core/.mocharc.js | 2 +- modules/utxo-lib/.mocharc.js | 2 +- modules/utxo-ord/.mocharc.js | 2 +- modules/utxo-staking/.mocharc.js | 2 +- package.json | 10 +- .../template/base/.mocharc.yml | 2 +- scripts/tests/prepareRelease/util.ts | 2 +- scripts/verify-release.ts | 2 +- yarn.lock | 271 ++++++--- 124 files changed, 615 insertions(+), 457 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index f62e6776b5..c9ef6e8eff 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -53,7 +53,7 @@ jobs: run: | rm -rfd ./modules/web-demo rm -rfd ./modules/express - npx ts-node ./scripts/prepare-release.ts ${{ env.preid }} + npx tsx ./scripts/prepare-release.ts ${{ env.preid }} - name: Rebuild packages run: yarn @@ -65,4 +65,4 @@ jobs: run: yarn lerna publish from-package --preid ${{ env.preid }} --dist-tag ${{ env.preid }} --force-publish --yes --loglevel silly - name: Verify Publish - run: npx ts-node ./scripts/verify-release.ts ${{ env.preid }} + run: npx tsx ./scripts/verify-release.ts ${{ env.preid }} diff --git a/examples/docs/get-fee-estimate.md b/examples/docs/get-fee-estimate.md index 29312019e6..783a4dc886 100644 --- a/examples/docs/get-fee-estimate.md +++ b/examples/docs/get-fee-estimate.md @@ -23,11 +23,11 @@ This script, when run, will log a transaction hex. You can then pass this value First, run `yarn install` from the root directory of the repository. -Then change into the `examples/ts/sui` directory and use `npx ts-node` to run it: +Then change into the `examples/ts/sui` directory and use `npx tsx` to run it: ``` $ cd examples/ts/sui/ -$ npx ts-node get-transaction-hex.ts +$ npx tsx get-transaction-hex.ts ``` ### Note diff --git a/examples/docs/multiple-recipients-transfer-for-non-erc20-tokens.md b/examples/docs/multiple-recipients-transfer-for-non-erc20-tokens.md index 716859dd8b..9c7bd66787 100644 --- a/examples/docs/multiple-recipients-transfer-for-non-erc20-tokens.md +++ b/examples/docs/multiple-recipients-transfer-for-non-erc20-tokens.md @@ -16,11 +16,11 @@ TESTNET_ACCESS_TOKEN=your_access_token_here First, run `yarn install` from the root directory of the repository. -Then change into the `examples/ts/sol/utils/nonce-account-creation` directory and use `npx ts-node` to run the desired example: +Then change into the `examples/ts/sol/utils/nonce-account-creation` directory and use `npx tsx` to run the desired example: ``` $ cd examples/ts/sol/utils/nonce-account-creation -$ npx ts-node multi-recipient-pay-transaction.ts +$ npx tsx multi-recipient-pay-transaction.ts ``` diff --git a/examples/ts/README.md b/examples/ts/README.md index 19bb431bc0..84bfa6665a 100644 --- a/examples/ts/README.md +++ b/examples/ts/README.md @@ -8,11 +8,11 @@ You will need node and npm installed locally. You can find information on how to First, run `yarn install` from the root directory of the repository. -Then change into the `examples/ts` directory and use `npx ts-node` to run the desired example: +Then change into the `examples/ts` directory and use `npx tsx` to run the desired example: ``` $ cd examples/ts -$ npx ts-node get-wallet.ts +$ npx tsx get-wallet.ts ``` Copy `.env.example` to `.env` and provide the given values if you would like to use the same variables for multiple examples. diff --git a/examples/ts/btc/changeAddress/index.ts b/examples/ts/btc/changeAddress/index.ts index b85c5c06e3..504c39a717 100644 --- a/examples/ts/btc/changeAddress/index.ts +++ b/examples/ts/btc/changeAddress/index.ts @@ -16,7 +16,7 @@ async function getWallet() { } /* - * Usage: npx ts-node btc/externalChange/index.ts + * Usage: npx tsx btc/externalChange/index.ts * */ async function main() { console.log('Starting...'); diff --git a/examples/ts/btc/legacySafe/recover.ts b/examples/ts/btc/legacySafe/recover.ts index cfbba558fb..f25cc62917 100644 --- a/examples/ts/btc/legacySafe/recover.ts +++ b/examples/ts/btc/legacySafe/recover.ts @@ -5,7 +5,7 @@ import { unspents } from './fixtures/unspents'; const destination = '2MyGxrhLC4kRfuVjLqCVYFtC7DchhgMCiNz'; /* - * Usage: npx ts-node btc/legacySafe/recover.ts + * Usage: npx tsx btc/legacySafe/recover.ts * */ const recoveryTransaction = async () => { const coin = legacySafeConfig.sdk.coin(legacySafeConfig.coin) as AbstractUtxoCoin; diff --git a/examples/ts/btc/legacySafe/sweep.ts b/examples/ts/btc/legacySafe/sweep.ts index f17094d1fc..2e7e71f5c0 100644 --- a/examples/ts/btc/legacySafe/sweep.ts +++ b/examples/ts/btc/legacySafe/sweep.ts @@ -5,7 +5,7 @@ import { unspents } from './fixtures/unspents'; const destination = '2MyGxrhLC4kRfuVjLqCVYFtC7DchhgMCiNz'; /* - * Usage: npx ts-node btc/legacySafe/sweep.ts + * Usage: npx tsx btc/legacySafe/sweep.ts * */ const sweepTransaction = async () => { const coin = legacySafeConfig.sdk.coin(legacySafeConfig.coin) as AbstractUtxoCoin; diff --git a/examples/ts/btc/omni/index.ts b/examples/ts/btc/omni/index.ts index 6faad91041..56c4f5d17a 100644 --- a/examples/ts/btc/omni/index.ts +++ b/examples/ts/btc/omni/index.ts @@ -94,7 +94,7 @@ async function sendOmniAsset( } /* - * Usage: npx ts-node btc/omni/index.ts + * Usage: npx tsx btc/omni/index.ts * */ async function main() { console.log('Starting...'); diff --git a/examples/ts/btc/v1/wallet-recovery-validation.ts b/examples/ts/btc/v1/wallet-recovery-validation.ts index 42273b4976..ef6dfcb908 100755 --- a/examples/ts/btc/v1/wallet-recovery-validation.ts +++ b/examples/ts/btc/v1/wallet-recovery-validation.ts @@ -6,7 +6,7 @@ * the user's keycard information (Box D). It helps recover the original wallet password for V1 Wallets Only. * * Usage: - * ts-node wallet-recovery-validation.ts + * tsx wallet-recovery-validation.ts * * The script will prompt for: * - BitGo credentials (username, password, OTP) diff --git a/examples/ts/http-proxy/README.md b/examples/ts/http-proxy/README.md index f359192aa1..da1476a09c 100644 --- a/examples/ts/http-proxy/README.md +++ b/examples/ts/http-proxy/README.md @@ -11,6 +11,6 @@ Please take the time to review your use case as you choose between these options ## Setup + Usage - Acquire a test environment account, enterprise and access token - Fill in the `TODO` sections with the relevant credentials -- `npm install` -- `ts-node server.ts` -- In a separate shell: `ts-node create-wallet.ts` +- `yarn install` +- `yarn run start:server` +- In a separate shell: `yarn run start:create-wallet` diff --git a/examples/ts/http-proxy/package.json b/examples/ts/http-proxy/package.json index b63111ad4c..a0d0f0eddb 100644 --- a/examples/ts/http-proxy/package.json +++ b/examples/ts/http-proxy/package.json @@ -4,7 +4,9 @@ "description": "", "main": "server.ts", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "test": "echo \"Error: no test specified\" && exit 1", + "start:server": "tsx server.ts", + "start:create-wallet": "tsx create-wallet.ts" }, "author": "BitGo", "license": "ISC", @@ -12,7 +14,7 @@ "proxy": "2.1.1", "proxy-agent": "6.4.0", "superagent": "9.0.1", - "ts-node": "^10.8.1", + "tsx": "^4.20.4", "typescript": "^4.7.3", "typescript-cached-transpile": "^0.0.6" } diff --git a/examples/ts/http-proxy/yarn.lock b/examples/ts/http-proxy/yarn.lock index f173e553a3..0ce5c3a206 100644 --- a/examples/ts/http-proxy/yarn.lock +++ b/examples/ts/http-proxy/yarn.lock @@ -2,95 +2,163 @@ # yarn lockfile v1 -"@cspotcode/source-map-support@^0.8.0": - version "0.8.1" - resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" - integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== - dependencies: - "@jridgewell/trace-mapping" "0.3.9" - -"@jridgewell/resolve-uri@^3.0.3": - version "3.1.2" - resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" - integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== - -"@jridgewell/sourcemap-codec@^1.4.10": - version "1.5.0" - resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" - integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== - -"@jridgewell/trace-mapping@0.3.9": - version "0.3.9" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" +"@esbuild/aix-ppc64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz#bef96351f16520055c947aba28802eede3c9e9a9" + integrity sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA== + +"@esbuild/android-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz#d2e70be7d51a529425422091e0dcb90374c1546c" + integrity sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg== + +"@esbuild/android-arm@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.9.tgz#d2a753fe2a4c73b79437d0ba1480e2d760097419" + integrity sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ== + +"@esbuild/android-x64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.9.tgz#5278836e3c7ae75761626962f902a0d55352e683" + integrity sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw== + +"@esbuild/darwin-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz" + integrity sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg== + +"@esbuild/darwin-x64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz#e27dbc3b507b3a1cea3b9280a04b8b6b725f82be" + integrity sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ== + +"@esbuild/freebsd-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz#364e3e5b7a1fd45d92be08c6cc5d890ca75908ca" + integrity sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q== + +"@esbuild/freebsd-x64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz#7c869b45faeb3df668e19ace07335a0711ec56ab" + integrity sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg== + +"@esbuild/linux-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz#48d42861758c940b61abea43ba9a29b186d6cb8b" + integrity sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw== + +"@esbuild/linux-arm@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz#6ce4b9cabf148274101701d112b89dc67cc52f37" + integrity sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw== + +"@esbuild/linux-ia32@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz#207e54899b79cac9c26c323fc1caa32e3143f1c4" + integrity sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A== + +"@esbuild/linux-loong64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz#0ba48a127159a8f6abb5827f21198b999ffd1fc0" + integrity sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ== + +"@esbuild/linux-mips64el@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz#a4d4cc693d185f66a6afde94f772b38ce5d64eb5" + integrity sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA== + +"@esbuild/linux-ppc64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz#0f5805c1c6d6435a1dafdc043cb07a19050357db" + integrity sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w== + +"@esbuild/linux-riscv64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz#6776edece0f8fca79f3386398b5183ff2a827547" + integrity sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg== + +"@esbuild/linux-s390x@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz#3f6f29ef036938447c2218d309dc875225861830" + integrity sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA== + +"@esbuild/linux-x64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz#831fe0b0e1a80a8b8391224ea2377d5520e1527f" + integrity sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg== + +"@esbuild/netbsd-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz#06f99d7eebe035fbbe43de01c9d7e98d2a0aa548" + integrity sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q== + +"@esbuild/netbsd-x64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz#db99858e6bed6e73911f92a88e4edd3a8c429a52" + integrity sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g== + +"@esbuild/openbsd-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz#afb886c867e36f9d86bb21e878e1185f5d5a0935" + integrity sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ== + +"@esbuild/openbsd-x64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz#30855c9f8381fac6a0ef5b5f31ac6e7108a66ecf" + integrity sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA== + +"@esbuild/openharmony-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz#2f2144af31e67adc2a8e3705c20c2bd97bd88314" + integrity sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg== + +"@esbuild/sunos-x64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz#69b99a9b5bd226c9eb9c6a73f990fddd497d732e" + integrity sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw== + +"@esbuild/win32-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz#d789330a712af916c88325f4ffe465f885719c6b" + integrity sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ== + +"@esbuild/win32-ia32@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz#52fc735406bd49688253e74e4e837ac2ba0789e3" + integrity sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww== + +"@esbuild/win32-x64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz#585624dc829cfb6e7c0aa6c3ca7d7e6daa87e34f" + integrity sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ== "@tootallnate/quickjs-emscripten@^0.23.0": version "0.23.0" - resolved "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz#db4ecfd499a9765ab24002c3b696d02e6d32a12c" + resolved "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz" integrity sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA== -"@tsconfig/node10@^1.0.7": - version "1.0.11" - resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" - integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== - -"@tsconfig/node12@^1.0.7": - version "1.0.11" - resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" - integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== - -"@tsconfig/node14@^1.0.0": - version "1.0.3" - resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" - integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== - -"@tsconfig/node16@^1.0.2": - version "1.0.4" - resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" - integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== - "@types/node@^12.12.7": version "12.20.55" - resolved "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" + resolved "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz" integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== -acorn-walk@^8.1.1: - version "8.3.4" - resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" - integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== - dependencies: - acorn "^8.11.0" - -acorn@^8.11.0, acorn@^8.4.1: - version "8.14.0" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" - integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== - agent-base@^7.0.2, agent-base@^7.1.0, agent-base@^7.1.1: version "7.1.1" - resolved "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz#bdbded7dfb096b751a2a087eeeb9664725b2e317" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz" integrity sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA== dependencies: debug "^4.3.4" ansi-styles@^3.2.1: version "3.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - args@^5.0.3: version "5.0.3" - resolved "https://registry.npmjs.org/args/-/args-5.0.3.tgz#943256db85021a85684be2f0882f25d796278702" + resolved "https://registry.npmjs.org/args/-/args-5.0.3.tgz" integrity sha512-h6k/zfFgusnv3i5TU08KQkVKuCPBtL/PWQbWkHUxvJrZ2nAyeaUupneemcrgn1xmqxPQsPIzwkUhOpoqPDRZuA== dependencies: camelcase "5.0.0" @@ -100,34 +168,34 @@ args@^5.0.3: asap@^2.0.0: version "2.0.6" - resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== ast-types@^0.13.4: version "0.13.4" - resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782" + resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz" integrity sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w== dependencies: tslib "^2.0.1" asynckit@^0.4.0: version "0.4.0" - resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== basic-auth-parser@0.0.2-1: version "0.0.2-1" - resolved "https://registry.npmjs.org/basic-auth-parser/-/basic-auth-parser-0.0.2-1.tgz#f1ea575979b27af6a411921d6ff8793d9117347f" + resolved "https://registry.npmjs.org/basic-auth-parser/-/basic-auth-parser-0.0.2-1.tgz" integrity sha512-GFj8iVxo9onSU6BnnQvVwqvxh60UcSHJEDnIk3z4B6iOjsKSmqe+ibW0Rsz7YO7IE1HG3D3tqCNIidP46SZVdQ== basic-ftp@^5.0.2: version "5.0.5" - resolved "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz#14a474f5fffecca1f4f406f1c26b18f800225ac0" + resolved "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz" integrity sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg== call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" + resolved "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz" integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== dependencies: es-errors "^1.3.0" @@ -135,7 +203,7 @@ call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: call-bind@^1.0.7: version "1.0.7" - resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz" integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== dependencies: es-define-property "^1.0.0" @@ -146,12 +214,12 @@ call-bind@^1.0.7: camelcase@5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz" integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== chalk@2.4.2: version "2.4.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" @@ -160,53 +228,48 @@ chalk@2.4.2: color-convert@^1.9.0: version "1.9.3" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" color-name@1.1.3: version "1.1.3" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== combined-stream@^1.0.8: version "1.0.8" - resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" component-emitter@^1.3.0: version "1.3.1" - resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz#ef1d5796f7d93f135ee6fb684340b26403c97d17" + resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz" integrity sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ== cookiejar@^2.1.4: version "2.1.4" - resolved "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz#ee669c1fea2cf42dc31585469d193fef0d65771b" + resolved "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz" integrity sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw== -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - data-uri-to-buffer@^6.0.2: version "6.0.2" - resolved "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz#8a58bb67384b261a38ef18bea1810cb01badd28b" + resolved "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz" integrity sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw== debug@4, debug@^4.3.4: version "4.3.7" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz" integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== dependencies: ms "^2.1.3" define-data-property@^1.1.4: version "1.1.4" - resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz" integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== dependencies: es-define-property "^1.0.0" @@ -215,7 +278,7 @@ define-data-property@^1.1.4: degenerator@^5.0.0: version "5.0.1" - resolved "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz#9403bf297c6dad9a1ece409b37db27954f91f2f5" + resolved "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz" integrity sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ== dependencies: ast-types "^0.13.4" @@ -224,58 +287,46 @@ degenerator@^5.0.0: delayed-stream@~1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== dezalgo@^1.0.4: version "1.0.4" - resolved "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz#751235260469084c132157dfa857f386d4c33d81" + resolved "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz" integrity sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig== dependencies: asap "^2.0.0" wrappy "1" -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - dunder-proto@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" + resolved "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz" integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== dependencies: call-bind-apply-helpers "^1.0.1" es-errors "^1.3.0" gopd "^1.2.0" -es-define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" - integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== - dependencies: - get-intrinsic "^1.2.4" - -es-define-property@^1.0.1: +es-define-property@^1.0.0, es-define-property@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz" integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== es-errors@^1.3.0: version "1.3.0" - resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz" integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: version "1.1.1" - resolved "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" + resolved "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz" integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== dependencies: es-errors "^1.3.0" es-set-tostringtag@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" + resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz" integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== dependencies: es-errors "^1.3.0" @@ -283,14 +334,46 @@ es-set-tostringtag@^2.1.0: has-tostringtag "^1.0.2" hasown "^2.0.2" +esbuild@~0.25.0: + version "0.25.9" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.25.9.tgz" + integrity sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g== + optionalDependencies: + "@esbuild/aix-ppc64" "0.25.9" + "@esbuild/android-arm" "0.25.9" + "@esbuild/android-arm64" "0.25.9" + "@esbuild/android-x64" "0.25.9" + "@esbuild/darwin-arm64" "0.25.9" + "@esbuild/darwin-x64" "0.25.9" + "@esbuild/freebsd-arm64" "0.25.9" + "@esbuild/freebsd-x64" "0.25.9" + "@esbuild/linux-arm" "0.25.9" + "@esbuild/linux-arm64" "0.25.9" + "@esbuild/linux-ia32" "0.25.9" + "@esbuild/linux-loong64" "0.25.9" + "@esbuild/linux-mips64el" "0.25.9" + "@esbuild/linux-ppc64" "0.25.9" + "@esbuild/linux-riscv64" "0.25.9" + "@esbuild/linux-s390x" "0.25.9" + "@esbuild/linux-x64" "0.25.9" + "@esbuild/netbsd-arm64" "0.25.9" + "@esbuild/netbsd-x64" "0.25.9" + "@esbuild/openbsd-arm64" "0.25.9" + "@esbuild/openbsd-x64" "0.25.9" + "@esbuild/openharmony-arm64" "0.25.9" + "@esbuild/sunos-x64" "0.25.9" + "@esbuild/win32-arm64" "0.25.9" + "@esbuild/win32-ia32" "0.25.9" + "@esbuild/win32-x64" "0.25.9" + escape-string-regexp@^1.0.5: version "1.0.5" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== escodegen@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" + resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz" integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== dependencies: esprima "^4.0.1" @@ -301,27 +384,27 @@ escodegen@^2.1.0: esprima@^4.0.1: version "4.0.1" - resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== estraverse@^5.2.0: version "5.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== esutils@^2.0.2: version "2.0.3" - resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== fast-safe-stringify@^2.1.1: version "2.1.1" - resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" + resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz" integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== form-data@^4.0.0: version "4.0.4" - resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz#784cdcce0669a9d68e94d11ac4eea98088edd2c4" + resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz" integrity sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow== dependencies: asynckit "^0.4.0" @@ -332,7 +415,7 @@ form-data@^4.0.0: formidable@^3.5.1: version "3.5.2" - resolved "https://registry.npmjs.org/formidable/-/formidable-3.5.2.tgz#207c33fecdecb22044c82ba59d0c63a12fb81d77" + resolved "https://registry.npmjs.org/formidable/-/formidable-3.5.2.tgz" integrity sha512-Jqc1btCy3QzRbJaICGwKcBfGWuLADRerLzDqi2NwSt/UkXLsHJw2TVResiaoBufHVHy9aSgClOHCeJsSsFLTbg== dependencies: dezalgo "^1.0.4" @@ -341,7 +424,7 @@ formidable@^3.5.1: fs-extra@^11.2.0: version "11.2.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz" integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== dependencies: graceful-fs "^4.2.0" @@ -350,32 +433,26 @@ fs-extra@^11.2.0: fs-extra@^8.1.0: version "8.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== dependencies: graceful-fs "^4.2.0" jsonfile "^4.0.0" universalify "^0.1.0" +fsevents@~2.3.3: + version "2.3.3" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + function-bind@^1.1.2: version "1.1.2" - resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== -get-intrinsic@^1.2.4: - version "1.2.4" - resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" - integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== - dependencies: - es-errors "^1.3.0" - function-bind "^1.1.2" - has-proto "^1.0.1" - has-symbols "^1.0.3" - hasown "^2.0.0" - -get-intrinsic@^1.2.6: +get-intrinsic@^1.2.4, get-intrinsic@^1.2.6: version "1.3.0" - resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz" integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== dependencies: call-bind-apply-helpers "^1.0.2" @@ -391,15 +468,22 @@ get-intrinsic@^1.2.6: get-proto@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" + resolved "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz" integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== dependencies: dunder-proto "^1.0.1" es-object-atoms "^1.0.0" +get-tsconfig@^4.7.5: + version "4.10.1" + resolved "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz" + integrity sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ== + dependencies: + resolve-pkg-maps "^1.0.0" + get-uri@^6.0.1: version "6.0.3" - resolved "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz#0d26697bc13cf91092e519aa63aa60ee5b6f385a" + resolved "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz" integrity sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw== dependencies: basic-ftp "^5.0.2" @@ -407,69 +491,55 @@ get-uri@^6.0.1: debug "^4.3.4" fs-extra "^11.2.0" -gopd@^1.0.1: - version "1.1.0" - resolved "https://registry.npmjs.org/gopd/-/gopd-1.1.0.tgz#df8f0839c2d48caefc32a025a49294d39606c912" - integrity sha512-FQoVQnqcdk4hVM4JN1eromaun4iuS34oStkdlLENLdpULsuQcTyXj8w7ayhuUfPwEYZ1ZOooOTT6fdA9Vmx/RA== - dependencies: - get-intrinsic "^1.2.4" - -gopd@^1.2.0: +gopd@^1.0.1, gopd@^1.2.0: version "1.2.0" - resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz" integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== graceful-fs@^4.1.6, graceful-fs@^4.2.0: version "4.2.11" - resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== has-flag@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== has-property-descriptors@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz" integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== dependencies: es-define-property "^1.0.0" -has-proto@^1.0.1: - version "1.1.0" - resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.1.0.tgz#deb10494cbbe8809bce168a3b961f42969f5ed43" - integrity sha512-QLdzI9IIO1Jg7f9GT1gXpPpXArAn6cS31R1eEZqz08Gc+uQ8/XiqHWt17Fiw+2p6oTTIq5GXEpQkAlA88YRl/Q== - dependencies: - call-bind "^1.0.7" - has-symbols@^1.0.3, has-symbols@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz" integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== has-tostringtag@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz" integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== dependencies: has-symbols "^1.0.3" -hasown@^2.0.0, hasown@^2.0.2: +hasown@^2.0.2: version "2.0.2" - resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== dependencies: function-bind "^1.1.2" hexoid@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/hexoid/-/hexoid-2.0.0.tgz#fb36c740ebbf364403fa1ec0c7efd268460ec5b9" + resolved "https://registry.npmjs.org/hexoid/-/hexoid-2.0.0.tgz" integrity sha512-qlspKUK7IlSQv2o+5I7yhUd7TxlOG2Vr5LTa3ve2XSNVKAL/n/u/7KLvKmFNimomDIKvZFXWHv0T12mv7rT8Aw== http-proxy-agent@^7.0.0, http-proxy-agent@^7.0.1: version "7.0.2" - resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" + resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz" integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== dependencies: agent-base "^7.1.0" @@ -477,7 +547,7 @@ http-proxy-agent@^7.0.0, http-proxy-agent@^7.0.1: https-proxy-agent@^7.0.3, https-proxy-agent@^7.0.5: version "7.0.5" - resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz#9e8b5013873299e11fab6fd548405da2d6c602b2" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz" integrity sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw== dependencies: agent-base "^7.0.2" @@ -485,7 +555,7 @@ https-proxy-agent@^7.0.3, https-proxy-agent@^7.0.5: ip-address@^9.0.5: version "9.0.5" - resolved "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz#117a960819b08780c3bd1f14ef3c1cc1d3f3ea5a" + resolved "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz" integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g== dependencies: jsbn "1.1.0" @@ -493,19 +563,19 @@ ip-address@^9.0.5: jsbn@1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" + resolved "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz" integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== jsonfile@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== optionalDependencies: graceful-fs "^4.1.6" jsonfile@^6.0.1: version "6.1.0" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== dependencies: universalify "^2.0.0" @@ -514,76 +584,71 @@ jsonfile@^6.0.1: leven@2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" + resolved "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz" integrity sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA== lru-cache@^7.14.1: version "7.18.3" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz" integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== -make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - math-intrinsics@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" + resolved "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz" integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== methods@^1.1.2: version "1.1.2" - resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== mime-db@1.52.0: version "1.52.0" - resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== mime-types@^2.1.12: version "2.1.35" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: mime-db "1.52.0" mime@2.6.0: version "2.6.0" - resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== mri@1.1.4: version "1.1.4" - resolved "https://registry.npmjs.org/mri/-/mri-1.1.4.tgz#7cb1dd1b9b40905f1fac053abe25b6720f44744a" + resolved "https://registry.npmjs.org/mri/-/mri-1.1.4.tgz" integrity sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w== ms@^2.1.3: version "2.1.3" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== netmask@^2.0.2: version "2.0.2" - resolved "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz#8b01a07644065d536383835823bc52004ebac5e7" + resolved "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz" integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg== object-inspect@^1.13.1: version "1.13.3" - resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz#f14c183de51130243d6d18ae149375ff50ea488a" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz" integrity sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA== once@^1.4.0: version "1.4.0" - resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" pac-proxy-agent@^7.0.1: version "7.0.2" - resolved "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.2.tgz#0fb02496bd9fb8ae7eb11cfd98386daaac442f58" + resolved "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.2.tgz" integrity sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg== dependencies: "@tootallnate/quickjs-emscripten" "^0.23.0" @@ -597,7 +662,7 @@ pac-proxy-agent@^7.0.1: pac-resolver@^7.0.1: version "7.0.1" - resolved "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz#54675558ea368b64d210fd9c92a640b5f3b8abb6" + resolved "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz" integrity sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg== dependencies: degenerator "^5.0.0" @@ -605,7 +670,7 @@ pac-resolver@^7.0.1: proxy-agent@6.4.0: version "6.4.0" - resolved "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz#b4e2dd51dee2b377748aef8d45604c2d7608652d" + resolved "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz" integrity sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ== dependencies: agent-base "^7.0.2" @@ -619,12 +684,12 @@ proxy-agent@6.4.0: proxy-from-env@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== proxy@2.1.1: version "2.1.1" - resolved "https://registry.npmjs.org/proxy/-/proxy-2.1.1.tgz#45f9b307508ffcae12bdc71678d44a4ab79cbf8b" + resolved "https://registry.npmjs.org/proxy/-/proxy-2.1.1.tgz" integrity sha512-nLgd7zdUAOpB3ZO/xCkU8gy74UER7P0aihU8DkUsDS5ZoFwVCX7u8dy+cv5tVK8UaB/yminU1GiLWE26TKPYpg== dependencies: args "^5.0.3" @@ -633,19 +698,24 @@ proxy@2.1.1: qs@^6.11.0: version "6.13.1" - resolved "https://registry.npmjs.org/qs/-/qs-6.13.1.tgz#3ce5fc72bd3a8171b85c99b93c65dd20b7d1b16e" + resolved "https://registry.npmjs.org/qs/-/qs-6.13.1.tgz" integrity sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg== dependencies: side-channel "^1.0.6" +resolve-pkg-maps@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz" + integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== + semver@^7.3.8: version "7.6.3" - resolved "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + resolved "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== set-function-length@^1.2.1: version "1.2.2" - resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz" integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== dependencies: define-data-property "^1.1.4" @@ -657,7 +727,7 @@ set-function-length@^1.2.1: side-channel@^1.0.6: version "1.0.6" - resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz" integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== dependencies: call-bind "^1.0.7" @@ -667,12 +737,12 @@ side-channel@^1.0.6: smart-buffer@^4.2.0: version "4.2.0" - resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz" integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== socks-proxy-agent@^8.0.2, socks-proxy-agent@^8.0.4: version "8.0.4" - resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz#9071dca17af95f483300316f4b063578fa0db08c" + resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz" integrity sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw== dependencies: agent-base "^7.1.1" @@ -681,7 +751,7 @@ socks-proxy-agent@^8.0.2, socks-proxy-agent@^8.0.4: socks@^2.8.3: version "2.8.3" - resolved "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz#1ebd0f09c52ba95a09750afe3f3f9f724a800cb5" + resolved "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz" integrity sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw== dependencies: ip-address "^9.0.5" @@ -689,17 +759,17 @@ socks@^2.8.3: source-map@~0.6.1: version "0.6.1" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== sprintf-js@^1.1.3: version "1.1.3" - resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz" integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== superagent@9.0.1: version "9.0.1" - resolved "https://registry.npmjs.org/superagent/-/superagent-9.0.1.tgz#660773036c03728a1a88649a5d7e15d89b1d6961" + resolved "https://registry.npmjs.org/superagent/-/superagent-9.0.1.tgz" integrity sha512-CcRSdb/P2oUVaEpQ87w9Obsl+E9FruRd6b2b7LdiBtJoyMr2DQt7a89anAfiX/EL59j9b2CbRFvf2S91DhuCww== dependencies: component-emitter "^1.3.0" @@ -715,43 +785,34 @@ superagent@9.0.1: supports-color@^5.3.0: version "5.5.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" -ts-node@^10.8.1: - version "10.9.2" - resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" - integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== - dependencies: - "@cspotcode/source-map-support" "^0.8.0" - "@tsconfig/node10" "^1.0.7" - "@tsconfig/node12" "^1.0.7" - "@tsconfig/node14" "^1.0.0" - "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - v8-compile-cache-lib "^3.0.1" - yn "3.1.1" - tslib@^1.10.0: version "1.14.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== tslib@^2.0.1: version "2.8.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== +tsx@^4.20.4: + version "4.20.4" + resolved "https://registry.npmjs.org/tsx/-/tsx-4.20.4.tgz" + integrity sha512-yyxBKfORQ7LuRt/BQKBXrpcq59ZvSW0XxwfjAt3w2/8PmdxaFzijtMhTawprSHhpzeM5BgU2hXHG3lklIERZXg== + dependencies: + esbuild "~0.25.0" + get-tsconfig "^4.7.5" + optionalDependencies: + fsevents "~2.3.3" + typescript-cached-transpile@^0.0.6: version "0.0.6" - resolved "https://registry.npmjs.org/typescript-cached-transpile/-/typescript-cached-transpile-0.0.6.tgz#1d1f0620ebb29cf8d8c11e5353c2b4f43dfafc01" + resolved "https://registry.npmjs.org/typescript-cached-transpile/-/typescript-cached-transpile-0.0.6.tgz" integrity sha512-bfPc7YUW0PrVkQHU0xN0ANRuxdPgoYYXtZEW6PNkH5a97/AOM+kPPxSTMZbpWA3BG1do22JUkfC60KoCKJ9VZQ== dependencies: "@types/node" "^12.12.7" @@ -760,30 +821,20 @@ typescript-cached-transpile@^0.0.6: typescript@^4.7.3: version "4.9.5" - resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz" integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== universalify@^0.1.0: version "0.1.2" - resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== universalify@^2.0.0: version "2.0.1" - resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz" integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== -v8-compile-cache-lib@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" - integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== - wrappy@1: version "1.0.2" - resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -yn@3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== diff --git a/examples/ts/proxy/package.json b/examples/ts/proxy/package.json index cd69abe91a..4a35f20c48 100644 --- a/examples/ts/proxy/package.json +++ b/examples/ts/proxy/package.json @@ -12,7 +12,7 @@ "express": "^4.18.1", "express-http-proxy": "^1.6.3", "http-proxy-middleware": "^2.0.6", - "ts-node": "^10.8.1", + "tsx": "^4.20.4", "typescript": "^4.7.3", "typescript-cached-transpile": "^0.0.6" } diff --git a/examples/ts/sol/utils/nonce-account-creation/create-account.ts b/examples/ts/sol/utils/nonce-account-creation/create-account.ts index 705be7f58f..9e8425016b 100644 --- a/examples/ts/sol/utils/nonce-account-creation/create-account.ts +++ b/examples/ts/sol/utils/nonce-account-creation/create-account.ts @@ -7,7 +7,7 @@ import { writeFileSync } from 'fs'; // ** RUNNING THIS SCRIPT TWICE WILL OVERWRITE THE DATA ON THE FILE ** // to run this script you can use the following command: -// npx ts-node create-account.ts +// npx tsx create-account.ts async function main() { const newKeyPair = new KeyPair(); diff --git a/examples/ts/sol/utils/nonce-account-creation/generate-nonce-accounts.ts b/examples/ts/sol/utils/nonce-account-creation/generate-nonce-accounts.ts index eaed2d42ae..da6da055fb 100644 --- a/examples/ts/sol/utils/nonce-account-creation/generate-nonce-accounts.ts +++ b/examples/ts/sol/utils/nonce-account-creation/generate-nonce-accounts.ts @@ -24,7 +24,7 @@ import { readFileSync, writeFileSync } from "fs"; // and the value is an array of nonce accounts public keys // To run this script you can use the following command: -// npx ts-node generate-nonce-accounts.ts +// npx tsx generate-nonce-accounts.ts // UPDATE this variables to match your environment diff --git a/examples/ts/tss-recovery/README.md b/examples/ts/tss-recovery/README.md index e3d6bc71cb..ba2b49f49c 100644 --- a/examples/ts/tss-recovery/README.md +++ b/examples/ts/tss-recovery/README.md @@ -14,10 +14,10 @@ $ nvm use $ yarn install ``` -Use `npx ts-node` to run the desired example: +Use `npx tsx` to run the desired example: ``` -$ npx ts-node eddsa-recovery.ts +$ npx tsx eddsa-recovery.ts ``` or, diff --git a/examples/ts/tss-recovery/package.json b/examples/ts/tss-recovery/package.json index d78bad4cf2..061d0c8530 100644 --- a/examples/ts/tss-recovery/package.json +++ b/examples/ts/tss-recovery/package.json @@ -3,8 +3,8 @@ "version": "1.0.0", "description": "TSS User <> Backup keycard signing", "scripts": { - "test:ecdsa": "ts-node mpcv2-recovery.ts", - "test:eddsa": "ts-node eddsa-recovery.ts" + "test:ecdsa": "tsx mpcv2-recovery.ts", + "test:eddsa": "tsx eddsa-recovery.ts" }, "dependencies": { "@bitgo/sdk-core": "28.10.0", @@ -12,7 +12,7 @@ "secp256k1": "5.0.1" }, "devDependencies": { - "ts-node": "10.9.1", + "tsx": "^4.20.4", "typescript": "5.1.6" } } diff --git a/examples/ts/tss-smc/README.md b/examples/ts/tss-smc/README.md index 242f1c0599..670872fbe2 100644 --- a/examples/ts/tss-smc/README.md +++ b/examples/ts/tss-smc/README.md @@ -14,10 +14,10 @@ $ nvm use $ npm install ``` -Use `npx ts-node` to run the desired example: +Use `npx tsx` to run the desired example: ``` -$ npx ts-node create-smc-wallet-step-1.ts +$ npx tsx create-smc-wallet-step-1.ts ``` **Note**: Complete the required TODO's for each script, such as adding your access token or providing your wallet ID. diff --git a/examples/ts/tss-smc/package.json b/examples/ts/tss-smc/package.json index c0ac8f8393..2c3fbf7cef 100644 --- a/examples/ts/tss-smc/package.json +++ b/examples/ts/tss-smc/package.json @@ -3,15 +3,15 @@ "version": "1.0.0", "description": "TSS Self Managed Cold Wallets Examples", "scripts": { - "step1": "ts-node create-smc-wallet-step-1.ts", - "step2": "ts-node create-smc-wallet-step-2.ts", - "create-smc-wallet": "ts-node create-smc-wallet-reusing-keys.ts" + "step1": "tsx create-smc-wallet-step-1.ts", + "step2": "tsx create-smc-wallet-step-2.ts", + "create-smc-wallet": "tsx create-smc-wallet-reusing-keys.ts" }, "dependencies": { "bitgo": "19.5.0" }, "devDependencies": { - "ts-node": "10.9.1", + "tsx": "^4.20.4", "typescript": "5.1.6" } } diff --git a/modules/abstract-cosmos/.mocharc.yml b/modules/abstract-cosmos/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/abstract-cosmos/.mocharc.yml +++ b/modules/abstract-cosmos/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/abstract-eth/.mocharc.js b/modules/abstract-eth/.mocharc.js index ae5ec5d5c8..4a91314879 100644 --- a/modules/abstract-eth/.mocharc.js +++ b/modules/abstract-eth/.mocharc.js @@ -1,7 +1,7 @@ 'use strict'; module.exports = { - require: 'ts-node/register', + require: 'tsx', timeout: '20000', reporter: 'min', 'reporter-option': ['cdn=true', 'json=false'], diff --git a/modules/abstract-lightning/.mocharc.yml b/modules/abstract-lightning/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/abstract-lightning/.mocharc.yml +++ b/modules/abstract-lightning/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/abstract-substrate/.mocharc.yml b/modules/abstract-substrate/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/abstract-substrate/.mocharc.yml +++ b/modules/abstract-substrate/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/abstract-utxo/.mocharc.js b/modules/abstract-utxo/.mocharc.js index 5fc6096dae..fb83e982f3 100644 --- a/modules/abstract-utxo/.mocharc.js +++ b/modules/abstract-utxo/.mocharc.js @@ -1,6 +1,6 @@ 'use strict'; module.exports = { - require: 'ts-node/register', + require: 'tsx', extension: ['.js', '.ts'], }; diff --git a/modules/account-lib/.mocharc.js b/modules/account-lib/.mocharc.js index 836ae3e4d7..ee8c738ad1 100644 --- a/modules/account-lib/.mocharc.js +++ b/modules/account-lib/.mocharc.js @@ -1,7 +1,7 @@ 'use strict'; module.exports = { - require: 'ts-node/register', + require: 'tsx', timeout: '60000', reporter: 'min', 'reporter-option': ['consoleReporter=min'], diff --git a/modules/bitgo/.mocharc.yml b/modules/bitgo/.mocharc.yml index 4d679fec18..f2345f0f54 100644 --- a/modules/bitgo/.mocharc.yml +++ b/modules/bitgo/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '120000' reporter: 'min' reporter-option: diff --git a/modules/blockapis/.mocharc.js b/modules/blockapis/.mocharc.js index bfd6eea0c4..007ef573be 100644 --- a/modules/blockapis/.mocharc.js +++ b/modules/blockapis/.mocharc.js @@ -1,4 +1,4 @@ module.exports = { - require: 'ts-node/register', + require: 'tsx', extension: ['.js', '.ts'], }; diff --git a/modules/deser-lib/.mocharc.json b/modules/deser-lib/.mocharc.json index 08949c5c3d..e97129380a 100644 --- a/modules/deser-lib/.mocharc.json +++ b/modules/deser-lib/.mocharc.json @@ -1,5 +1,5 @@ { - "require": ["ts-node/register", "should"], + "require": ["tsx", "should"], "timeout": "20000", "reporter": "min", "reporter-option": ["cdn=true", "json=false"], diff --git a/modules/express/.mocharc.js b/modules/express/.mocharc.js index 91bdb6ae9d..8e91499251 100644 --- a/modules/express/.mocharc.js +++ b/modules/express/.mocharc.js @@ -1,7 +1,7 @@ 'use strict'; module.exports = { - require: 'ts-node/register', + require: 'tsx', timeout: '60000', reporter: 'min', 'reporter-option': ['cdn=true', 'json=false', 'consoleReporter=spec'], diff --git a/modules/express/EXTERNAL_SIGNER.md b/modules/express/EXTERNAL_SIGNER.md index 6b43072c7d..642844ada6 100644 --- a/modules/express/EXTERNAL_SIGNER.md +++ b/modules/express/EXTERNAL_SIGNER.md @@ -57,7 +57,7 @@ Option #2 may make be more convenient for configuration instead of reconfiguring An example is provided in the file. To run the file, use the command: ```sh -yarn ts-node +yarn tsx ``` ### Wallet passphrase diff --git a/modules/key-card/.mocharc.js b/modules/key-card/.mocharc.js index fb77703cf8..bf1785375f 100644 --- a/modules/key-card/.mocharc.js +++ b/modules/key-card/.mocharc.js @@ -1,7 +1,7 @@ 'use strict'; module.exports = { - require: 'ts-node/register', + require: 'tsx', reporter: 'min', 'reporter-option': ['cdn=true', 'json=false'], exit: true, diff --git a/modules/sdk-api/.mocharc.js b/modules/sdk-api/.mocharc.js index 63e14f5541..fc704399d9 100644 --- a/modules/sdk-api/.mocharc.js +++ b/modules/sdk-api/.mocharc.js @@ -1,7 +1,7 @@ 'use strict'; module.exports = { - require: 'ts-node/register', + require: 'tsx', timeout: '20000', reporter: 'min', 'reporter-option': ['cdn=true', 'json=false'], diff --git a/modules/sdk-coin-ada/.mocharc.yml b/modules/sdk-coin-ada/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-ada/.mocharc.yml +++ b/modules/sdk-coin-ada/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-algo/.mocharc.yml b/modules/sdk-coin-algo/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-algo/.mocharc.yml +++ b/modules/sdk-coin-algo/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-apechain/.mocharc.yml b/modules/sdk-coin-apechain/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-apechain/.mocharc.yml +++ b/modules/sdk-coin-apechain/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-apt/.mocharc.yml b/modules/sdk-coin-apt/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-apt/.mocharc.yml +++ b/modules/sdk-coin-apt/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-arbeth/.mocharc.yml b/modules/sdk-coin-arbeth/.mocharc.yml index 7b4b0d51f4..1cef946aa1 100644 --- a/modules/sdk-coin-arbeth/.mocharc.yml +++ b/modules/sdk-coin-arbeth/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '120000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-asi/.mocharc.yml b/modules/sdk-coin-asi/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-asi/.mocharc.yml +++ b/modules/sdk-coin-asi/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-atom/.mocharc.yml b/modules/sdk-coin-atom/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-atom/.mocharc.yml +++ b/modules/sdk-coin-atom/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-avaxc/.mocharc.yml b/modules/sdk-coin-avaxc/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-avaxc/.mocharc.yml +++ b/modules/sdk-coin-avaxc/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-avaxp/.mocharc.yml b/modules/sdk-coin-avaxp/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-avaxp/.mocharc.yml +++ b/modules/sdk-coin-avaxp/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-baby/.mocharc.yml b/modules/sdk-coin-baby/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-baby/.mocharc.yml +++ b/modules/sdk-coin-baby/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-bch/.mocharc.yml b/modules/sdk-coin-bch/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-bch/.mocharc.yml +++ b/modules/sdk-coin-bch/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-bcha/.mocharc.yml b/modules/sdk-coin-bcha/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-bcha/.mocharc.yml +++ b/modules/sdk-coin-bcha/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-bera/.mocharc.yml b/modules/sdk-coin-bera/.mocharc.yml index 7b4b0d51f4..1cef946aa1 100644 --- a/modules/sdk-coin-bera/.mocharc.yml +++ b/modules/sdk-coin-bera/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '120000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-bld/.mocharc.yml b/modules/sdk-coin-bld/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-bld/.mocharc.yml +++ b/modules/sdk-coin-bld/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-bsc/.mocharc.yml b/modules/sdk-coin-bsc/.mocharc.yml index 7b4b0d51f4..1cef946aa1 100644 --- a/modules/sdk-coin-bsc/.mocharc.yml +++ b/modules/sdk-coin-bsc/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '120000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-bsv/.mocharc.yml b/modules/sdk-coin-bsv/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-bsv/.mocharc.yml +++ b/modules/sdk-coin-bsv/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-btc/.mocharc.yml b/modules/sdk-coin-btc/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-btc/.mocharc.yml +++ b/modules/sdk-coin-btc/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-btg/.mocharc.yml b/modules/sdk-coin-btg/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-btg/.mocharc.yml +++ b/modules/sdk-coin-btg/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-celo/.mocharc.yml b/modules/sdk-coin-celo/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-celo/.mocharc.yml +++ b/modules/sdk-coin-celo/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-coredao/.mocharc.yml b/modules/sdk-coin-coredao/.mocharc.yml index 7b4b0d51f4..1cef946aa1 100644 --- a/modules/sdk-coin-coredao/.mocharc.yml +++ b/modules/sdk-coin-coredao/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '120000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-coreum/.mocharc.yml b/modules/sdk-coin-coreum/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-coreum/.mocharc.yml +++ b/modules/sdk-coin-coreum/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-cosmos/.mocharc.yml b/modules/sdk-coin-cosmos/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-cosmos/.mocharc.yml +++ b/modules/sdk-coin-cosmos/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-cronos/.mocharc.yml b/modules/sdk-coin-cronos/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-cronos/.mocharc.yml +++ b/modules/sdk-coin-cronos/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-cspr/.mocharc.yml b/modules/sdk-coin-cspr/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-cspr/.mocharc.yml +++ b/modules/sdk-coin-cspr/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-dash/.mocharc.yml b/modules/sdk-coin-dash/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-dash/.mocharc.yml +++ b/modules/sdk-coin-dash/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-doge/.mocharc.yml b/modules/sdk-coin-doge/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-doge/.mocharc.yml +++ b/modules/sdk-coin-doge/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-dot/.mocharc.yml b/modules/sdk-coin-dot/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-dot/.mocharc.yml +++ b/modules/sdk-coin-dot/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-eos/.mocharc.yml b/modules/sdk-coin-eos/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-eos/.mocharc.yml +++ b/modules/sdk-coin-eos/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-etc/.mocharc.yml b/modules/sdk-coin-etc/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-etc/.mocharc.yml +++ b/modules/sdk-coin-etc/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-eth/.mocharc.yml b/modules/sdk-coin-eth/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-eth/.mocharc.yml +++ b/modules/sdk-coin-eth/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-ethlike/.mocharc.yml b/modules/sdk-coin-ethlike/.mocharc.yml index 2aa9ead3a7..00f370e72e 100644 --- a/modules/sdk-coin-ethlike/.mocharc.yml +++ b/modules/sdk-coin-ethlike/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '90000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-ethw/.mocharc.yml b/modules/sdk-coin-ethw/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-ethw/.mocharc.yml +++ b/modules/sdk-coin-ethw/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-evm/.mocharc.yml b/modules/sdk-coin-evm/.mocharc.yml index b2cacd8968..de48378dbc 100644 --- a/modules/sdk-coin-evm/.mocharc.yml +++ b/modules/sdk-coin-evm/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-flr/.mocharc.yml b/modules/sdk-coin-flr/.mocharc.yml index 7b4b0d51f4..1cef946aa1 100644 --- a/modules/sdk-coin-flr/.mocharc.yml +++ b/modules/sdk-coin-flr/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '120000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-hash/.mocharc.yml b/modules/sdk-coin-hash/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-hash/.mocharc.yml +++ b/modules/sdk-coin-hash/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-hbar/.mocharc.yml b/modules/sdk-coin-hbar/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-hbar/.mocharc.yml +++ b/modules/sdk-coin-hbar/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-icp/.mocharc.yml b/modules/sdk-coin-icp/.mocharc.yml index 0ef74cc9fe..d84fbf5b25 100644 --- a/modules/sdk-coin-icp/.mocharc.yml +++ b/modules/sdk-coin-icp/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: 120000 reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-initia/.mocharc.yml b/modules/sdk-coin-initia/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-initia/.mocharc.yml +++ b/modules/sdk-coin-initia/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-injective/.mocharc.yml b/modules/sdk-coin-injective/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-injective/.mocharc.yml +++ b/modules/sdk-coin-injective/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-islm/.mocharc.yml b/modules/sdk-coin-islm/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-islm/.mocharc.yml +++ b/modules/sdk-coin-islm/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-lnbtc/.mocharc.yml b/modules/sdk-coin-lnbtc/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-lnbtc/.mocharc.yml +++ b/modules/sdk-coin-lnbtc/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-ltc/.mocharc.yml b/modules/sdk-coin-ltc/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-ltc/.mocharc.yml +++ b/modules/sdk-coin-ltc/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-mantra/.mocharc.yml b/modules/sdk-coin-mantra/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-mantra/.mocharc.yml +++ b/modules/sdk-coin-mantra/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-mon/.mocharc.yml b/modules/sdk-coin-mon/.mocharc.yml index 7b4b0d51f4..1cef946aa1 100644 --- a/modules/sdk-coin-mon/.mocharc.yml +++ b/modules/sdk-coin-mon/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '120000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-near/.mocharc.yml b/modules/sdk-coin-near/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-near/.mocharc.yml +++ b/modules/sdk-coin-near/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-oas/.mocharc.yml b/modules/sdk-coin-oas/.mocharc.yml index 7b4b0d51f4..1cef946aa1 100644 --- a/modules/sdk-coin-oas/.mocharc.yml +++ b/modules/sdk-coin-oas/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '120000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-opeth/.mocharc.yml b/modules/sdk-coin-opeth/.mocharc.yml index 7b4b0d51f4..1cef946aa1 100644 --- a/modules/sdk-coin-opeth/.mocharc.yml +++ b/modules/sdk-coin-opeth/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '120000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-osmo/.mocharc.yml b/modules/sdk-coin-osmo/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-osmo/.mocharc.yml +++ b/modules/sdk-coin-osmo/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-polygon/.mocharc.yml b/modules/sdk-coin-polygon/.mocharc.yml index 2aa9ead3a7..00f370e72e 100644 --- a/modules/sdk-coin-polygon/.mocharc.yml +++ b/modules/sdk-coin-polygon/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '90000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-polyx/.mocharc.yml b/modules/sdk-coin-polyx/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-polyx/.mocharc.yml +++ b/modules/sdk-coin-polyx/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-rbtc/.mocharc.yml b/modules/sdk-coin-rbtc/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-rbtc/.mocharc.yml +++ b/modules/sdk-coin-rbtc/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-rune/.mocharc.yml b/modules/sdk-coin-rune/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-rune/.mocharc.yml +++ b/modules/sdk-coin-rune/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-sei/.mocharc.yml b/modules/sdk-coin-sei/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-sei/.mocharc.yml +++ b/modules/sdk-coin-sei/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-sgb/.mocharc.yml b/modules/sdk-coin-sgb/.mocharc.yml index 7b4b0d51f4..1cef946aa1 100644 --- a/modules/sdk-coin-sgb/.mocharc.yml +++ b/modules/sdk-coin-sgb/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '120000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-sol/.mocharc.yml b/modules/sdk-coin-sol/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-sol/.mocharc.yml +++ b/modules/sdk-coin-sol/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-soneium/.mocharc.yml b/modules/sdk-coin-soneium/.mocharc.yml index 7b4b0d51f4..1cef946aa1 100644 --- a/modules/sdk-coin-soneium/.mocharc.yml +++ b/modules/sdk-coin-soneium/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '120000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-stt/.mocharc.yml b/modules/sdk-coin-stt/.mocharc.yml index 7b4b0d51f4..1cef946aa1 100644 --- a/modules/sdk-coin-stt/.mocharc.yml +++ b/modules/sdk-coin-stt/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '120000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-stx/.mocharc.yml b/modules/sdk-coin-stx/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-stx/.mocharc.yml +++ b/modules/sdk-coin-stx/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-sui/.mocharc.yml b/modules/sdk-coin-sui/.mocharc.yml index 556a017659..b8aefbf152 100644 --- a/modules/sdk-coin-sui/.mocharc.yml +++ b/modules/sdk-coin-sui/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: 60000 reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-tao/.mocharc.yml b/modules/sdk-coin-tao/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-tao/.mocharc.yml +++ b/modules/sdk-coin-tao/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-tia/.mocharc.yml b/modules/sdk-coin-tia/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-tia/.mocharc.yml +++ b/modules/sdk-coin-tia/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-ton/.mocharc.yml b/modules/sdk-coin-ton/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-ton/.mocharc.yml +++ b/modules/sdk-coin-ton/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-trx/.mocharc.yml b/modules/sdk-coin-trx/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-trx/.mocharc.yml +++ b/modules/sdk-coin-trx/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-vet/.mocharc.yml b/modules/sdk-coin-vet/.mocharc.yml index fc3f7b6e4d..03cec42f41 100644 --- a/modules/sdk-coin-vet/.mocharc.yml +++ b/modules/sdk-coin-vet/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '10000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-wemix/.mocharc.yml b/modules/sdk-coin-wemix/.mocharc.yml index 7b4b0d51f4..1cef946aa1 100644 --- a/modules/sdk-coin-wemix/.mocharc.yml +++ b/modules/sdk-coin-wemix/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '120000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-world/.mocharc.yml b/modules/sdk-coin-world/.mocharc.yml index 7b4b0d51f4..1cef946aa1 100644 --- a/modules/sdk-coin-world/.mocharc.yml +++ b/modules/sdk-coin-world/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '120000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-xdc/.mocharc.yml b/modules/sdk-coin-xdc/.mocharc.yml index 7b4b0d51f4..1cef946aa1 100644 --- a/modules/sdk-coin-xdc/.mocharc.yml +++ b/modules/sdk-coin-xdc/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '120000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-xlm/.mocharc.yml b/modules/sdk-coin-xlm/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-xlm/.mocharc.yml +++ b/modules/sdk-coin-xlm/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-xrp/.mocharc.js b/modules/sdk-coin-xrp/.mocharc.js index ae5ec5d5c8..4a91314879 100644 --- a/modules/sdk-coin-xrp/.mocharc.js +++ b/modules/sdk-coin-xrp/.mocharc.js @@ -1,7 +1,7 @@ 'use strict'; module.exports = { - require: 'ts-node/register', + require: 'tsx', timeout: '20000', reporter: 'min', 'reporter-option': ['cdn=true', 'json=false'], diff --git a/modules/sdk-coin-xtz/.mocharc.yml b/modules/sdk-coin-xtz/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-xtz/.mocharc.yml +++ b/modules/sdk-coin-xtz/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-zec/.mocharc.yml b/modules/sdk-coin-zec/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-zec/.mocharc.yml +++ b/modules/sdk-coin-zec/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-zeta/.mocharc.yml b/modules/sdk-coin-zeta/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/modules/sdk-coin-zeta/.mocharc.yml +++ b/modules/sdk-coin-zeta/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-coin-zketh/.mocharc.yml b/modules/sdk-coin-zketh/.mocharc.yml index 0ef74cc9fe..d84fbf5b25 100644 --- a/modules/sdk-coin-zketh/.mocharc.yml +++ b/modules/sdk-coin-zketh/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: 120000 reporter: 'min' reporter-option: diff --git a/modules/sdk-core/.mocharc.js b/modules/sdk-core/.mocharc.js index 7337e3604b..3ba5fa700c 100644 --- a/modules/sdk-core/.mocharc.js +++ b/modules/sdk-core/.mocharc.js @@ -1,7 +1,7 @@ 'use strict'; module.exports = { - require: 'ts-node/register', + require: 'tsx', timeout: '20000', reporter: 'min', 'reporter-option': ['cdn=true', 'json=false'], diff --git a/modules/sdk-core/package.json b/modules/sdk-core/package.json index 292e79c9bd..bef177461a 100644 --- a/modules/sdk-core/package.json +++ b/modules/sdk-core/package.json @@ -13,7 +13,7 @@ "clean": "rm -r ./dist", "lint": "eslint --quiet .", "prepare": "npm run build", - "test:watch": " mocha -r ts-node/register --watch --watch-files test/**/*.ts" + "test:watch": " mocha -r tsx --watch --watch-files test/**/*.ts" }, "author": "BitGo SDK Team ", "license": "MIT", diff --git a/modules/sdk-hmac/.mocharc.yml b/modules/sdk-hmac/.mocharc.yml index b2cacd8968..de48378dbc 100644 --- a/modules/sdk-hmac/.mocharc.yml +++ b/modules/sdk-hmac/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/modules/sdk-lib-mpc/.mocharc.js b/modules/sdk-lib-mpc/.mocharc.js index 38ad92e834..8c89365d62 100644 --- a/modules/sdk-lib-mpc/.mocharc.js +++ b/modules/sdk-lib-mpc/.mocharc.js @@ -1,7 +1,7 @@ 'use strict'; module.exports = { - require: 'ts-node/register', + require: 'tsx', timeout: '20000', reporter: 'min', 'reporter-option': ['cdn=true', 'json=false'], diff --git a/modules/sdk-rpc-wrapper/.mocharc.js b/modules/sdk-rpc-wrapper/.mocharc.js index ae5ec5d5c8..4a91314879 100644 --- a/modules/sdk-rpc-wrapper/.mocharc.js +++ b/modules/sdk-rpc-wrapper/.mocharc.js @@ -1,7 +1,7 @@ 'use strict'; module.exports = { - require: 'ts-node/register', + require: 'tsx', timeout: '20000', reporter: 'min', 'reporter-option': ['cdn=true', 'json=false'], diff --git a/modules/secp256k1/.mocharc.js b/modules/secp256k1/.mocharc.js index bfd6eea0c4..007ef573be 100644 --- a/modules/secp256k1/.mocharc.js +++ b/modules/secp256k1/.mocharc.js @@ -1,4 +1,4 @@ module.exports = { - require: 'ts-node/register', + require: 'tsx', extension: ['.js', '.ts'], }; diff --git a/modules/statics/.mocharc.js b/modules/statics/.mocharc.js index ae5ec5d5c8..4a91314879 100644 --- a/modules/statics/.mocharc.js +++ b/modules/statics/.mocharc.js @@ -1,7 +1,7 @@ 'use strict'; module.exports = { - require: 'ts-node/register', + require: 'tsx', timeout: '20000', reporter: 'min', 'reporter-option': ['cdn=true', 'json=false'], diff --git a/modules/unspents/.mocharc.js b/modules/unspents/.mocharc.js index d062a9cbe6..f9eab816c2 100644 --- a/modules/unspents/.mocharc.js +++ b/modules/unspents/.mocharc.js @@ -1,6 +1,6 @@ 'use strict'; module.exports = { - require: 'ts-node/register', + require: 'tsx', extension: ['js', 'ts'], }; diff --git a/modules/utxo-bin/.mocharc.js b/modules/utxo-bin/.mocharc.js index bd9925445b..818caed29d 100644 --- a/modules/utxo-bin/.mocharc.js +++ b/modules/utxo-bin/.mocharc.js @@ -1,5 +1,5 @@ module.exports = { - require: 'ts-node/register', + require: 'tsx', timeout: '10000', extension: ['ts'], }; diff --git a/modules/utxo-bin/README.md b/modules/utxo-bin/README.md index fbb4257aad..970d95ef1c 100644 --- a/modules/utxo-bin/README.md +++ b/modules/utxo-bin/README.md @@ -107,7 +107,7 @@ utxo-bin generateAddresses \ git clone https://github.com/BitGo/BitGoJS.git yarn install cd modules/utxo-bin -yarn ts-node bin/index.ts ... +yarn tsx bin/index.ts ... ``` See the toplevel [DEVELOPERS.md](../../DEVELOPERS.md) for more information. diff --git a/modules/utxo-core/.mocharc.js b/modules/utxo-core/.mocharc.js index 5fc6096dae..fb83e982f3 100644 --- a/modules/utxo-core/.mocharc.js +++ b/modules/utxo-core/.mocharc.js @@ -1,6 +1,6 @@ 'use strict'; module.exports = { - require: 'ts-node/register', + require: 'tsx', extension: ['.js', '.ts'], }; diff --git a/modules/utxo-lib/.mocharc.js b/modules/utxo-lib/.mocharc.js index bfd6eea0c4..007ef573be 100644 --- a/modules/utxo-lib/.mocharc.js +++ b/modules/utxo-lib/.mocharc.js @@ -1,4 +1,4 @@ module.exports = { - require: 'ts-node/register', + require: 'tsx', extension: ['.js', '.ts'], }; diff --git a/modules/utxo-ord/.mocharc.js b/modules/utxo-ord/.mocharc.js index bfd6eea0c4..007ef573be 100644 --- a/modules/utxo-ord/.mocharc.js +++ b/modules/utxo-ord/.mocharc.js @@ -1,4 +1,4 @@ module.exports = { - require: 'ts-node/register', + require: 'tsx', extension: ['.js', '.ts'], }; diff --git a/modules/utxo-staking/.mocharc.js b/modules/utxo-staking/.mocharc.js index bfd6eea0c4..007ef573be 100644 --- a/modules/utxo-staking/.mocharc.js +++ b/modules/utxo-staking/.mocharc.js @@ -1,4 +1,4 @@ module.exports = { - require: 'ts-node/register', + require: 'tsx', extension: ['.js', '.ts'], }; diff --git a/package.json b/package.json index e10113500b..ef9ba9c3c4 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "stream-browserify": "^3.0.0", "stream-http": "^3.2.0", "terser-webpack-plugin": "^5.3.3", - "ts-node": "10.8.0", + "tsx": "^4.20.4", "typescript": "5.7.2", "typescript-cached-transpile": "^0.0.6", "url": "^0.11.0", @@ -120,18 +120,18 @@ "check-fmt-changed": "lerna run check-fmt --since origin/${GITHUB_REPO_BRANCH:-master}..HEAD --stream --parallel", "check-fmt": "lerna run check-fmt --stream --parallel", "check-commits": "yarn commitlint --from=origin/${GITHUB_REPO_BRANCH:-master} -V", - "check-deps": "ts-node ./scripts/check-package-dependencies.ts", + "check-deps": "tsx ./scripts/check-package-dependencies.ts", "check-versions": "node ./check-package-versions.js", "dev": "tsc -b ./tsconfig.packages.json -w", "prepare": "husky install", "sdk-coin:new": "yo ./scripts/sdk-coin-generator", "build-docker-express": "yarn update-dockerfile && podman build --platform=linux/amd64 -t bitgo/express:latest -t bitgo/express:$(jq -r .version < modules/express/package.json) .", "push-docker-express": "podman push bitgo/express:latest && podman push bitgo/express:$(jq -r .version < modules/express/package.json)", - "update-dockerfile": "ts-node scripts/update-dockerfile.ts", + "update-dockerfile": "tsx scripts/update-dockerfile.ts", "precommit": "lint-staged", "lint-fix": "lerna run lint --parallel -- --fix", "prepare-commit-msg": "node ./scripts/prepare-commit-msg.js", - "test:prepare-release": "mocha --require ts-node/register ./scripts/tests/prepareRelease/prepare-release-main.test.ts" + "test:prepare-release": "mocha --require tsx ./scripts/tests/prepareRelease/prepare-release-main.test.ts" }, "dependencies": { "axios": "^1.11.0", @@ -139,4 +139,4 @@ "tmp": "^0.2.3" }, "packageManager": "yarn@1.22.22" -} \ No newline at end of file +} diff --git a/scripts/sdk-coin-generator/template/base/.mocharc.yml b/scripts/sdk-coin-generator/template/base/.mocharc.yml index 95814796d1..f499ec0a83 100644 --- a/scripts/sdk-coin-generator/template/base/.mocharc.yml +++ b/scripts/sdk-coin-generator/template/base/.mocharc.yml @@ -1,4 +1,4 @@ -require: 'ts-node/register' +require: 'tsx' timeout: '60000' reporter: 'min' reporter-option: diff --git a/scripts/tests/prepareRelease/util.ts b/scripts/tests/prepareRelease/util.ts index 56b348f409..9d5fac639a 100644 --- a/scripts/tests/prepareRelease/util.ts +++ b/scripts/tests/prepareRelease/util.ts @@ -148,7 +148,7 @@ export function applyPrepareReleaseScript( } // Execute the prepare-release script with the repoDir as cwd - return execFileSync('npx', ['ts-node', '--transpile-only', scriptPath, ...args], { + return execFileSync('npx', ['tsx', '--transpile-only', scriptPath, ...args], { encoding: 'utf8', stdio: 'inherit', cwd: clonedRepoDir, diff --git a/scripts/verify-release.ts b/scripts/verify-release.ts index 258251ed6c..b3de1595e6 100644 --- a/scripts/verify-release.ts +++ b/scripts/verify-release.ts @@ -45,5 +45,5 @@ async function verify(preid?: string) { } } -// e.g. for alpha releases: `npx ts-node ./scripts/verify-beta.ts alpha` +// e.g. for alpha releases: `npx tsx ./scripts/verify-beta.ts alpha` verify(process.argv.slice(2)[0]); diff --git a/yarn.lock b/yarn.lock index b19d64bc5b..dfb5353215 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1492,13 +1492,6 @@ resolved "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.30.1.tgz#6d92582341be3c2ec8d82090253cfa4b7f959edb" integrity sha512-KvvX58MGMWh7xA+N+deCfunkA/ZNDvFLw4YbOmX3f/XBIkqrVY7qlotfy2aNb1kgp6h4B6Yc8YawJPDTfvWX7g== -"@cspotcode/source-map-support@^0.8.0": - version "0.8.1" - resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" - integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== - dependencies: - "@jridgewell/trace-mapping" "0.3.9" - "@csstools/postcss-cascade-layers@^1.1.1": version "1.1.1" resolved "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz#8a997edf97d34071dd2e37ea6022447dd9e795ad" @@ -1766,116 +1759,246 @@ resolved "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz#a70f4ac11c6a1dfc18b8bbb13284155d933b9537" integrity sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g== +"@esbuild/aix-ppc64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz#bef96351f16520055c947aba28802eede3c9e9a9" + integrity sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA== + "@esbuild/android-arm64@0.20.2": version "0.20.2" resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz#db1c9202a5bc92ea04c7b6840f1bbe09ebf9e6b9" integrity sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg== +"@esbuild/android-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz#d2e70be7d51a529425422091e0dcb90374c1546c" + integrity sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg== + "@esbuild/android-arm@0.20.2": version "0.20.2" resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz#3b488c49aee9d491c2c8f98a909b785870d6e995" integrity sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w== +"@esbuild/android-arm@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.9.tgz#d2a753fe2a4c73b79437d0ba1480e2d760097419" + integrity sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ== + "@esbuild/android-x64@0.20.2": version "0.20.2" resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz#3b1628029e5576249d2b2d766696e50768449f98" integrity sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg== +"@esbuild/android-x64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.9.tgz#5278836e3c7ae75761626962f902a0d55352e683" + integrity sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw== + "@esbuild/darwin-arm64@0.20.2": version "0.20.2" resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz#6e8517a045ddd86ae30c6608c8475ebc0c4000bb" integrity sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA== +"@esbuild/darwin-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz#f1513eaf9ec8fa15dcaf4c341b0f005d3e8b47ae" + integrity sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg== + "@esbuild/darwin-x64@0.20.2": version "0.20.2" resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz#90ed098e1f9dd8a9381695b207e1cff45540a0d0" integrity sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA== +"@esbuild/darwin-x64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz#e27dbc3b507b3a1cea3b9280a04b8b6b725f82be" + integrity sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ== + "@esbuild/freebsd-arm64@0.20.2": version "0.20.2" resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz#d71502d1ee89a1130327e890364666c760a2a911" integrity sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw== +"@esbuild/freebsd-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz#364e3e5b7a1fd45d92be08c6cc5d890ca75908ca" + integrity sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q== + "@esbuild/freebsd-x64@0.20.2": version "0.20.2" resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz#aa5ea58d9c1dd9af688b8b6f63ef0d3d60cea53c" integrity sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw== +"@esbuild/freebsd-x64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz#7c869b45faeb3df668e19ace07335a0711ec56ab" + integrity sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg== + "@esbuild/linux-arm64@0.20.2": version "0.20.2" resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz#055b63725df678379b0f6db9d0fa85463755b2e5" integrity sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A== +"@esbuild/linux-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz#48d42861758c940b61abea43ba9a29b186d6cb8b" + integrity sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw== + "@esbuild/linux-arm@0.20.2": version "0.20.2" resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz#76b3b98cb1f87936fbc37f073efabad49dcd889c" integrity sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg== +"@esbuild/linux-arm@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz#6ce4b9cabf148274101701d112b89dc67cc52f37" + integrity sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw== + "@esbuild/linux-ia32@0.20.2": version "0.20.2" resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz#c0e5e787c285264e5dfc7a79f04b8b4eefdad7fa" integrity sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig== +"@esbuild/linux-ia32@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz#207e54899b79cac9c26c323fc1caa32e3143f1c4" + integrity sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A== + "@esbuild/linux-loong64@0.20.2": version "0.20.2" resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz#a6184e62bd7cdc63e0c0448b83801001653219c5" integrity sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ== +"@esbuild/linux-loong64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz#0ba48a127159a8f6abb5827f21198b999ffd1fc0" + integrity sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ== + "@esbuild/linux-mips64el@0.20.2": version "0.20.2" resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz#d08e39ce86f45ef8fc88549d29c62b8acf5649aa" integrity sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA== +"@esbuild/linux-mips64el@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz#a4d4cc693d185f66a6afde94f772b38ce5d64eb5" + integrity sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA== + "@esbuild/linux-ppc64@0.20.2": version "0.20.2" resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz#8d252f0b7756ffd6d1cbde5ea67ff8fd20437f20" integrity sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg== +"@esbuild/linux-ppc64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz#0f5805c1c6d6435a1dafdc043cb07a19050357db" + integrity sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w== + "@esbuild/linux-riscv64@0.20.2": version "0.20.2" resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz#19f6dcdb14409dae607f66ca1181dd4e9db81300" integrity sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg== +"@esbuild/linux-riscv64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz#6776edece0f8fca79f3386398b5183ff2a827547" + integrity sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg== + "@esbuild/linux-s390x@0.20.2": version "0.20.2" resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz#3c830c90f1a5d7dd1473d5595ea4ebb920988685" integrity sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ== +"@esbuild/linux-s390x@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz#3f6f29ef036938447c2218d309dc875225861830" + integrity sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA== + "@esbuild/linux-x64@0.20.2": version "0.20.2" resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz#86eca35203afc0d9de0694c64ec0ab0a378f6fff" integrity sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw== +"@esbuild/linux-x64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz#831fe0b0e1a80a8b8391224ea2377d5520e1527f" + integrity sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg== + +"@esbuild/netbsd-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz#06f99d7eebe035fbbe43de01c9d7e98d2a0aa548" + integrity sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q== + "@esbuild/netbsd-x64@0.20.2": version "0.20.2" resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz#e771c8eb0e0f6e1877ffd4220036b98aed5915e6" integrity sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ== +"@esbuild/netbsd-x64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz#db99858e6bed6e73911f92a88e4edd3a8c429a52" + integrity sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g== + +"@esbuild/openbsd-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz#afb886c867e36f9d86bb21e878e1185f5d5a0935" + integrity sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ== + "@esbuild/openbsd-x64@0.20.2": version "0.20.2" resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz#9a795ae4b4e37e674f0f4d716f3e226dd7c39baf" integrity sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ== +"@esbuild/openbsd-x64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz#30855c9f8381fac6a0ef5b5f31ac6e7108a66ecf" + integrity sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA== + +"@esbuild/openharmony-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz#2f2144af31e67adc2a8e3705c20c2bd97bd88314" + integrity sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg== + "@esbuild/sunos-x64@0.20.2": version "0.20.2" resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz#7df23b61a497b8ac189def6e25a95673caedb03f" integrity sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w== +"@esbuild/sunos-x64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz#69b99a9b5bd226c9eb9c6a73f990fddd497d732e" + integrity sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw== + "@esbuild/win32-arm64@0.20.2": version "0.20.2" resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz#f1ae5abf9ca052ae11c1bc806fb4c0f519bacf90" integrity sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ== +"@esbuild/win32-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz#d789330a712af916c88325f4ffe465f885719c6b" + integrity sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ== + "@esbuild/win32-ia32@0.20.2": version "0.20.2" resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz#241fe62c34d8e8461cd708277813e1d0ba55ce23" integrity sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ== +"@esbuild/win32-ia32@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz#52fc735406bd49688253e74e4e837ac2ba0789e3" + integrity sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww== + "@esbuild/win32-x64@0.20.2": version "0.20.2" resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz#9c907b21e30a52db959ba4f80bb01a0cc403d5cc" integrity sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ== +"@esbuild/win32-x64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz#585624dc829cfb6e7c0aa6c3ca7d7e6daa87e34f" + integrity sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ== + "@eslint/eslintrc@^0.4.3": version "0.4.3" resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" @@ -2791,7 +2914,7 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.24" -"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": +"@jridgewell/resolve-uri@^3.1.0": version "3.1.2" resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== @@ -2814,14 +2937,6 @@ resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== -"@jridgewell/trace-mapping@0.3.9": - version "0.3.9" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": version "0.3.25" resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" @@ -5683,26 +5798,6 @@ resolved "https://registry.npmjs.org/@tronweb3/google-protobuf/-/google-protobuf-3.21.4.tgz#611e5b4f6d084c24301e1ee583fe09dc7fcfe41a" integrity sha512-joxgV4esCdyZ921AprMIG1T7HjkypquhbJ5qJti/priCBJhRE1z9GOxIEMvayxSVSRbMGIoJNE0Knrg3vpwM1w== -"@tsconfig/node10@^1.0.7": - version "1.0.11" - resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" - integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== - -"@tsconfig/node12@^1.0.7": - version "1.0.11" - resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" - integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== - -"@tsconfig/node14@^1.0.0": - version "1.0.3" - resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" - integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== - -"@tsconfig/node16@^1.0.2": - version "1.0.4" - resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" - integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== - "@tufjs/canonical-json@1.0.0": version "1.0.0" resolved "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz#eade9fd1f537993bc1f0949f3aea276ecc4fab31" @@ -6858,7 +6953,7 @@ acorn-walk@^7.0.0: resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== -acorn-walk@^8.0.2, acorn-walk@^8.1.1: +acorn-walk@^8.0.2: version "8.3.4" resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== @@ -6880,7 +6975,7 @@ acorn@^7.0.0, acorn@^7.4.0: resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.1.0, acorn@^8.11.0, acorn@^8.14.0, acorn@^8.4.1, acorn@^8.8.2, acorn@^8.9.0: +acorn@^8.1.0, acorn@^8.11.0, acorn@^8.14.0, acorn@^8.8.2, acorn@^8.9.0: version "8.14.1" resolved "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz#721d5dc10f7d5b5609a891773d47731796935dfb" integrity sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg== @@ -7096,11 +7191,6 @@ are-we-there-yet@^3.0.0: delegates "^1.0.0" readable-stream "^3.6.0" -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - argparse@^1.0.10, argparse@^1.0.7: version "1.0.10" resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -9395,11 +9485,6 @@ create-hmac@^1.1.0, create-hmac@^1.1.7: safe-buffer "^5.0.1" sha.js "^2.4.8" -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - cross-env@^7.0.3: version "7.0.3" resolved "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" @@ -10757,6 +10842,38 @@ esbuild@^0.20.2: "@esbuild/win32-ia32" "0.20.2" "@esbuild/win32-x64" "0.20.2" +esbuild@~0.25.0: + version "0.25.9" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.25.9.tgz#15ab8e39ae6cdc64c24ff8a2c0aef5b3fd9fa976" + integrity sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g== + optionalDependencies: + "@esbuild/aix-ppc64" "0.25.9" + "@esbuild/android-arm" "0.25.9" + "@esbuild/android-arm64" "0.25.9" + "@esbuild/android-x64" "0.25.9" + "@esbuild/darwin-arm64" "0.25.9" + "@esbuild/darwin-x64" "0.25.9" + "@esbuild/freebsd-arm64" "0.25.9" + "@esbuild/freebsd-x64" "0.25.9" + "@esbuild/linux-arm" "0.25.9" + "@esbuild/linux-arm64" "0.25.9" + "@esbuild/linux-ia32" "0.25.9" + "@esbuild/linux-loong64" "0.25.9" + "@esbuild/linux-mips64el" "0.25.9" + "@esbuild/linux-ppc64" "0.25.9" + "@esbuild/linux-riscv64" "0.25.9" + "@esbuild/linux-s390x" "0.25.9" + "@esbuild/linux-x64" "0.25.9" + "@esbuild/netbsd-arm64" "0.25.9" + "@esbuild/netbsd-x64" "0.25.9" + "@esbuild/openbsd-arm64" "0.25.9" + "@esbuild/openbsd-x64" "0.25.9" + "@esbuild/openharmony-arm64" "0.25.9" + "@esbuild/sunos-x64" "0.25.9" + "@esbuild/win32-arm64" "0.25.9" + "@esbuild/win32-ia32" "0.25.9" + "@esbuild/win32-x64" "0.25.9" + escalade@^3.1.1, escalade@^3.2.0: version "3.2.0" resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" @@ -12021,7 +12138,7 @@ fs.realpath@^1.0.0: resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@~2.3.2: +fsevents@~2.3.2, fsevents@~2.3.3: version "2.3.3" resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== @@ -12178,6 +12295,13 @@ get-symbol-description@^1.1.0: es-errors "^1.3.0" get-intrinsic "^1.2.6" +get-tsconfig@^4.7.5: + version "4.10.1" + resolved "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz#d34c1c01f47d65a606c37aa7a177bc3e56ab4b2e" + integrity sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ== + dependencies: + resolve-pkg-maps "^1.0.0" + get-uri@^6.0.1: version "6.0.4" resolved "https://registry.npmjs.org/get-uri/-/get-uri-6.0.4.tgz#6daaee9e12f9759e19e55ba313956883ef50e0a7" @@ -14909,11 +15033,6 @@ make-dir@^4.0.0: dependencies: semver "^7.5.3" -make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - make-fetch-happen@^10.0.3, make-fetch-happen@^10.0.6: version "10.2.1" resolved "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz#f5e3835c5e9817b617f2770870d9492d28678164" @@ -18327,6 +18446,11 @@ resolve-from@^5.0.0: resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== +resolve-pkg-maps@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" + integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== + resolve@1.1.7: version "1.1.7" resolved "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" @@ -20281,25 +20405,6 @@ ts-loader@^9.1.2: semver "^7.3.4" source-map "^0.7.4" -ts-node@10.8.0: - version "10.8.0" - resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.8.0.tgz#3ceb5ac3e67ae8025c1950626aafbdecb55d82ce" - integrity sha512-/fNd5Qh+zTt8Vt1KbYZjRHCE9sI5i7nqfD/dzBBRDeVXZXS6kToW6R7tTU6Nd4XavFs0mAVCg29Q//ML7WsZYA== - dependencies: - "@cspotcode/source-map-support" "^0.8.0" - "@tsconfig/node10" "^1.0.7" - "@tsconfig/node12" "^1.0.7" - "@tsconfig/node14" "^1.0.0" - "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - v8-compile-cache-lib "^3.0.1" - yn "3.1.1" - ts-results@^3.2.1: version "3.3.0" resolved "https://registry.npmjs.org/ts-results/-/ts-results-3.3.0.tgz#68623a6c18e65556287222dab76498a28154922f" @@ -20346,6 +20451,16 @@ tsutils@^3.21.0: dependencies: tslib "^1.8.1" +tsx@^4.20.4: + version "4.20.4" + resolved "https://registry.npmjs.org/tsx/-/tsx-4.20.4.tgz#3fcf255dbc8826bdde2820f1cff47e31075c1d30" + integrity sha512-yyxBKfORQ7LuRt/BQKBXrpcq59ZvSW0XxwfjAt3w2/8PmdxaFzijtMhTawprSHhpzeM5BgU2hXHG3lklIERZXg== + dependencies: + esbuild "~0.25.0" + get-tsconfig "^4.7.5" + optionalDependencies: + fsevents "~2.3.3" + tty-browserify@^0.0.1, tty-browserify@~0.0.0: version "0.0.1" resolved "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811" @@ -20861,11 +20976,6 @@ uuid@^8.3.2: resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -v8-compile-cache-lib@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" - integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== - v8-compile-cache@2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" @@ -21932,11 +22042,6 @@ yeoman-generator@^5.6.1: sort-keys "^4.2.0" text-table "^0.2.0" -yn@3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== - yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" From 18c1c5f08463d16f02ec89e4ac450be44ae882cd Mon Sep 17 00:00:00 2001 From: Zahin Mohammad Date: Thu, 21 Aug 2025 10:39:04 -0400 Subject: [PATCH 03/14] fix(utxo-lib): update assert imports for Node 22 Replace "*" imports with specific imports from assert module. When upgrading the test runner from ts-node to tsx, we need to fix imports to be strictly ESM to avoid: "TypeError: assert is not a function" TICKET: WP-5599 TICKET: WP-5599 --- modules/utxo-lib/src/bitgo/UtxoPsbt.ts | 2 +- modules/utxo-lib/src/bitgo/UtxoTransaction.ts | 2 +- modules/utxo-lib/src/bitgo/legacysafe/index.ts | 6 +++--- .../utxo-lib/src/bitgo/nonStandardHalfSigned.ts | 2 +- modules/utxo-lib/src/bitgo/outputScripts.ts | 2 +- modules/utxo-lib/src/bitgo/wallet/Psbt.ts | 10 +++++----- .../utxo-lib/src/bitgo/wallet/WalletOutput.ts | 2 +- .../utxo-lib/src/bitgo/wallet/psbt/RootNodes.ts | 2 +- modules/utxo-lib/src/noble_ecc.ts | 4 ++-- modules/utxo-lib/src/testutil/mock.ts | 2 +- modules/utxo-lib/src/testutil/psbt.ts | 2 +- modules/utxo-lib/src/testutil/transaction.ts | 2 +- .../utxo-lib/test/bitgo/litecoin/mwebBehavior.ts | 12 ++++++------ modules/utxo-lib/test/bitgo/psbt/Psbt.ts | 16 ++++++++-------- .../test/bitgo/psbt/signingAndValidation.ts | 6 +++--- .../utxo-lib/test/bitgo/wallet/WalletUnspent.ts | 4 ++-- modules/utxo-lib/test/bitgo/wallet/chains.ts | 2 +- .../utxo-lib/test/fixtures_thirdparty/parse.ts | 2 +- .../integration_local_rpc/generate/RpcClient.ts | 2 +- .../integration_local_rpc/generate/fixtures.ts | 2 +- .../utxo-lib/test/integration_local_rpc/parse.ts | 2 +- modules/utxo-lib/test/networks.ts | 4 ++-- .../utxo-lib/test/transaction_builder.spec.ts | 2 +- modules/utxo-lib/test/transaction_util.ts | 2 +- 24 files changed, 47 insertions(+), 47 deletions(-) diff --git a/modules/utxo-lib/src/bitgo/UtxoPsbt.ts b/modules/utxo-lib/src/bitgo/UtxoPsbt.ts index 678bc17b2d..f2438b6174 100644 --- a/modules/utxo-lib/src/bitgo/UtxoPsbt.ts +++ b/modules/utxo-lib/src/bitgo/UtxoPsbt.ts @@ -1,4 +1,4 @@ -import * as assert from 'assert'; +import { ok as assert } from 'assert'; import { Psbt as PsbtBase } from 'bip174'; import { Bip32Derivation, diff --git a/modules/utxo-lib/src/bitgo/UtxoTransaction.ts b/modules/utxo-lib/src/bitgo/UtxoTransaction.ts index 650193a500..d27294d626 100644 --- a/modules/utxo-lib/src/bitgo/UtxoTransaction.ts +++ b/modules/utxo-lib/src/bitgo/UtxoTransaction.ts @@ -1,4 +1,4 @@ -import * as assert from 'assert'; +import { ok as assert } from 'assert'; import * as bitcoinjs from 'bitcoinjs-lib'; import * as varuint from 'varuint-bitcoin'; import { toTNumber } from './tnumber'; diff --git a/modules/utxo-lib/src/bitgo/legacysafe/index.ts b/modules/utxo-lib/src/bitgo/legacysafe/index.ts index ed3d6ec727..24ce4dac3a 100644 --- a/modules/utxo-lib/src/bitgo/legacysafe/index.ts +++ b/modules/utxo-lib/src/bitgo/legacysafe/index.ts @@ -58,11 +58,11 @@ export function createLegacySafeOutputScript2of3( }); const script2of3 = bitcoinjs.payments.p2ms({ m: 2, pubkeys }); - assert(script2of3.output); + assert.ok(script2of3.output); const scriptPubKey = bitcoinjs.payments.p2sh({ redeem: script2of3 }); - assert(scriptPubKey); - assert(scriptPubKey.output); + assert.ok(scriptPubKey); + assert.ok(scriptPubKey.output); return { scriptPubKey: scriptPubKey.output, diff --git a/modules/utxo-lib/src/bitgo/nonStandardHalfSigned.ts b/modules/utxo-lib/src/bitgo/nonStandardHalfSigned.ts index 303f4c67aa..1b602edc1c 100644 --- a/modules/utxo-lib/src/bitgo/nonStandardHalfSigned.ts +++ b/modules/utxo-lib/src/bitgo/nonStandardHalfSigned.ts @@ -1,4 +1,4 @@ -import * as assert from 'assert'; +import { ok as assert } from 'assert'; import * as opcodes from 'bitcoin-ops'; import { classify, script as bscript, TxInput } from '../'; diff --git a/modules/utxo-lib/src/bitgo/outputScripts.ts b/modules/utxo-lib/src/bitgo/outputScripts.ts index ed011820d3..2f9b9aa212 100644 --- a/modules/utxo-lib/src/bitgo/outputScripts.ts +++ b/modules/utxo-lib/src/bitgo/outputScripts.ts @@ -1,4 +1,4 @@ -import * as assert from 'assert'; +import { ok as assert } from 'assert'; import * as bitcoinjs from 'bitcoinjs-lib'; import { Network, supportsSegwit, supportsTaproot } from '../networks'; diff --git a/modules/utxo-lib/src/bitgo/wallet/Psbt.ts b/modules/utxo-lib/src/bitgo/wallet/Psbt.ts index eda33ea666..5a2bad2c4a 100644 --- a/modules/utxo-lib/src/bitgo/wallet/Psbt.ts +++ b/modules/utxo-lib/src/bitgo/wallet/Psbt.ts @@ -463,7 +463,7 @@ export function isPsbtInputArray(inputs: PsbtInput[] | TxInput[]): inputs is Psb * @return true iff inputs array is of TxInput type * */ export function isTxInputArray(inputs: PsbtInput[] | TxInput[]): inputs is TxInput[] { - assert(!!inputs.length, 'empty inputs array'); + assert.ok(!!inputs.length, 'empty inputs array'); return 'hash' in inputs[0]; } @@ -532,7 +532,7 @@ export function getSignatureValidationArrayPsbt(psbt: UtxoPsbt, rootWalletKeys: * The purpose is to provide backward compatibility to keyternal (KRS) that only supports network transaction and p2ms script types. */ export function extractP2msOnlyHalfSignedTx(psbt: UtxoPsbt): UtxoTransaction { - assert(!!(psbt.data.inputs.length && psbt.data.outputs.length), 'empty inputs or outputs'); + assert.ok(!!(psbt.data.inputs.length && psbt.data.outputs.length), 'empty inputs or outputs'); const tx = psbt.getUnsignedTx(); function isP2msParsedPsbtInput( @@ -543,10 +543,10 @@ export function extractP2msOnlyHalfSignedTx(psbt: UtxoPsbt): UtxoTransaction { const parsed = parsePsbtInput(input); - assert(isP2msParsedPsbtInput(parsed), `unsupported script type ${parsed.scriptType}`); - assert(input.partialSig?.length === 1, `unexpected signature count ${input.partialSig?.length}`); + assert.ok(isP2msParsedPsbtInput(parsed), `unsupported script type ${parsed.scriptType}`); + assert.ok(input.partialSig?.length === 1, `unexpected signature count ${input.partialSig?.length}`); const [partialSig] = input.partialSig; - assert( + assert.ok( input.sighashType !== undefined && input.sighashType === bscript.signature.decode(partialSig.signature).hashType, 'signature sighash does not match input sighash type' ); diff --git a/modules/utxo-lib/src/bitgo/wallet/WalletOutput.ts b/modules/utxo-lib/src/bitgo/wallet/WalletOutput.ts index acf8c2828e..46eea5db4b 100644 --- a/modules/utxo-lib/src/bitgo/wallet/WalletOutput.ts +++ b/modules/utxo-lib/src/bitgo/wallet/WalletOutput.ts @@ -1,4 +1,4 @@ -import * as assert from 'assert'; +import { ok as assert } from 'assert'; import { Payment, taproot } from 'bitcoinjs-lib'; import { PsbtOutput, PsbtOutputUpdate } from 'bip174/src/lib/interfaces'; diff --git a/modules/utxo-lib/src/bitgo/wallet/psbt/RootNodes.ts b/modules/utxo-lib/src/bitgo/wallet/psbt/RootNodes.ts index 46e857f8fa..95a8bd73d3 100644 --- a/modules/utxo-lib/src/bitgo/wallet/psbt/RootNodes.ts +++ b/modules/utxo-lib/src/bitgo/wallet/psbt/RootNodes.ts @@ -2,7 +2,7 @@ * Contains helper methods for getting and sorting root nodes from a PSBT. */ -import * as assert from 'assert'; +import { ok as assert } from 'assert'; import * as bs58check from 'bs58check'; import { UtxoPsbt } from '../../UtxoPsbt'; diff --git a/modules/utxo-lib/src/noble_ecc.ts b/modules/utxo-lib/src/noble_ecc.ts index 7d10bf95f5..4e97e1a3f8 100644 --- a/modules/utxo-lib/src/noble_ecc.ts +++ b/modules/utxo-lib/src/noble_ecc.ts @@ -1,5 +1,3 @@ -import * as createHash from 'create-hash'; -import * as createHmac from 'create-hmac'; import { ECPairAPI, ECPairFactory, ECPairInterface } from 'ecpair'; import * as necc from '@noble/secp256k1'; import { BIP32API, BIP32Factory, BIP32Interface } from 'bip32'; @@ -7,6 +5,8 @@ import { BIP32API, BIP32Factory, BIP32Interface } from 'bip32'; // @ts-ignore base_crypto is exported as a subPath export, ignoring since compiler complains about importing like this import * as baseCrypto from '@brandonblack/musig/base_crypto'; import { MuSig, MuSigFactory } from '@brandonblack/musig'; +const createHmac = require('create-hmac'); +const createHash = require('create-hash'); necc.utils.sha256Sync = (...messages: Uint8Array[]): Uint8Array => { const sha256 = createHash('sha256'); diff --git a/modules/utxo-lib/src/testutil/mock.ts b/modules/utxo-lib/src/testutil/mock.ts index 4cb19ef65f..fcfbe5a323 100644 --- a/modules/utxo-lib/src/testutil/mock.ts +++ b/modules/utxo-lib/src/testutil/mock.ts @@ -1,4 +1,4 @@ -import * as assert from 'assert'; +import { ok as assert } from 'assert'; import { BIP32Interface } from 'bip32'; import * as noble from '@noble/secp256k1'; import * as utxolib from '..'; diff --git a/modules/utxo-lib/src/testutil/psbt.ts b/modules/utxo-lib/src/testutil/psbt.ts index ea3a63a644..21b4574951 100644 --- a/modules/utxo-lib/src/testutil/psbt.ts +++ b/modules/utxo-lib/src/testutil/psbt.ts @@ -1,4 +1,4 @@ -import * as assert from 'assert'; +import { ok as assert } from 'assert'; import { createOutputScriptP2shP2pk, diff --git a/modules/utxo-lib/src/testutil/transaction.ts b/modules/utxo-lib/src/testutil/transaction.ts index 7bbd448f43..97d883cd00 100644 --- a/modules/utxo-lib/src/testutil/transaction.ts +++ b/modules/utxo-lib/src/testutil/transaction.ts @@ -1,4 +1,4 @@ -import * as assert from 'assert'; +import { ok as assert } from 'assert'; import { ScriptType, ScriptType2Of3, scriptTypeP2shP2pk, scriptTypes2Of3 } from '../bitgo/outputScripts'; import { diff --git a/modules/utxo-lib/test/bitgo/litecoin/mwebBehavior.ts b/modules/utxo-lib/test/bitgo/litecoin/mwebBehavior.ts index 533ac132a7..17ac1cf625 100644 --- a/modules/utxo-lib/test/bitgo/litecoin/mwebBehavior.ts +++ b/modules/utxo-lib/test/bitgo/litecoin/mwebBehavior.ts @@ -35,7 +35,7 @@ async function getTransaction(mweb: boolean): Promise 0); + assert.ok(psbt.data.inputs.length > 0); // Check that the previous transaction buffer added does not have a MWEB flag const prevTxBuffer = psbt.data.inputs[0].nonWitnessUtxo; - assert(prevTxBuffer); + assert.ok(prevTxBuffer); assert.deepStrictEqual(prevTxBuffer.toString('hex'), await getFixture(`ltc-transaction.json`)); }); }); diff --git a/modules/utxo-lib/test/bitgo/psbt/Psbt.ts b/modules/utxo-lib/test/bitgo/psbt/Psbt.ts index dcc93a2341..6156142e0b 100644 --- a/modules/utxo-lib/test/bitgo/psbt/Psbt.ts +++ b/modules/utxo-lib/test/bitgo/psbt/Psbt.ts @@ -106,9 +106,9 @@ describe('Psbt Misc', function () { } it('fail to finalise p2tr sighash mismatch', function () { const psbt = getTestPsbt(); - assert(psbt.validateSignaturesOfAllInputs()); + assert.ok(psbt.validateSignaturesOfAllInputs()); const tapScriptSig = psbt.data.inputs[0].tapScriptSig; - assert(tapScriptSig); + assert.ok(tapScriptSig); tapScriptSig[0].signature = Buffer.concat([tapScriptSig[0].signature, Buffer.of(Transaction.SIGHASH_ALL)]); assert.throws( () => psbt.finalizeAllInputs(), @@ -373,7 +373,7 @@ describe('isTransactionWithKeyPathSpendInput', function () { rootWalletKeys, 'fullsigned' ); - assert(psbt.validateSignaturesOfAllInputs()); + assert.ok(psbt.validateSignaturesOfAllInputs()); psbt.finalizeAllInputs(); const tx = psbt.extractTransaction() as UtxoTransaction; @@ -392,7 +392,7 @@ describe('isTransactionWithKeyPathSpendInput', function () { rootWalletKeys, 'fullsigned' ); - assert(psbt.validateSignaturesOfAllInputs()); + assert.ok(psbt.validateSignaturesOfAllInputs()); psbt.finalizeAllInputs(); const tx = psbt.extractTransaction(); @@ -464,7 +464,7 @@ describe('Parse PSBT', function () { const psbt = createPsbtForNetwork({ network: networks.bitcoincash }); const unspent = mockReplayProtectionUnspent(networks.bitcoincash, BigInt(1e8), { key: signer }); const { redeemScript } = createOutputScriptP2shP2pk(signer.publicKey); - assert(redeemScript); + assert.ok(redeemScript); addReplayProtectionUnspentToPsbt(psbt, unspent, redeemScript); addWalletOutputToPsbt(psbt, rootWalletKeys, getInternalChainCode('p2sh'), 0, BigInt(1e8 - 10000)); const input = psbt.data.inputs[0]; @@ -932,7 +932,7 @@ function testUtxoPsbt(coinNetwork: Network) { it('should be able to clone psbt', async function () { const clone = psbt.clone(); - assert(clone instanceof psbt.constructor, `Expected clone to be instance of ${psbt.constructor.name}`); + assert.ok(clone instanceof psbt.constructor, `Expected clone to be instance of ${psbt.constructor.name}`); assert.deepStrictEqual(clone.toBuffer(), psbt.toBuffer()); assert.deepStrictEqual(clone.clone().toBuffer(), psbt.toBuffer()); assert.strictEqual(clone.network, psbt.network); @@ -956,13 +956,13 @@ function testUtxoPsbt(coinNetwork: Network) { function checkDerivationPrefix(bip32Derivation: { path: string }): void { const path = bip32Derivation.path.split('/'); const prefix = bip32PathsAbsolute ? 'm' : '0'; - assert(path[0] === prefix); + assert.ok(path[0] === prefix); } it(`should deserialize PSBT bip32Derivations with paths ${ bip32PathsAbsolute ? '' : 'not ' } absolute`, async function () { const deserializedPsbt = createPsbtFromHex(psbtHex, coinNetwork, bip32PathsAbsolute); - assert(deserializedPsbt); + assert.ok(deserializedPsbt); deserializedPsbt.data.inputs.forEach((input) => { input?.bip32Derivation?.forEach((derivation) => checkDerivationPrefix(derivation)); input?.tapBip32Derivation?.forEach((derivation) => checkDerivationPrefix(derivation)); diff --git a/modules/utxo-lib/test/bitgo/psbt/signingAndValidation.ts b/modules/utxo-lib/test/bitgo/psbt/signingAndValidation.ts index 6042fa5aac..66919d0660 100644 --- a/modules/utxo-lib/test/bitgo/psbt/signingAndValidation.ts +++ b/modules/utxo-lib/test/bitgo/psbt/signingAndValidation.ts @@ -60,7 +60,7 @@ function runTest(scriptType: outputScripts.ScriptType, signerName: KeyName, cosi if (scriptType === 'p2shP2pk') { const unspent = mockReplayProtectionUnspent(network, BigInt(1e8), { key: signer }); const { redeemScript } = createOutputScriptP2shP2pk(signer.publicKey); - assert(redeemScript); + assert.ok(redeemScript); addReplayProtectionUnspentToPsbt(psbt, unspent, redeemScript); } else { const unspents = mockUnspents(walletKeys, [scriptType], BigInt(1e8), network) as WalletUnspent[]; @@ -87,11 +87,11 @@ function runTest(scriptType: outputScripts.ScriptType, signerName: KeyName, cosi psbt.signAllInputsHD(signer); psbt.signAllInputsHD(cosigner); } - assert(psbt.validateSignaturesOfAllInputs()); + assert.ok(psbt.validateSignaturesOfAllInputs()); assert.deepStrictEqual(psbt.getSignatureValidationArray(0, { rootNodes: walletKeys.triple }), signingKeys); psbt.finalizeAllInputs(); const tx = psbt.extractTransaction(); - assert(tx); + assert.ok(tx); if (scriptType === 'p2shP2pk') { tx.ins.forEach((input) => assert.strictEqual(input.sequence, TX_INPUT_SEQUENCE_NUMBER_FINAL)); } else { diff --git a/modules/utxo-lib/test/bitgo/wallet/WalletUnspent.ts b/modules/utxo-lib/test/bitgo/wallet/WalletUnspent.ts index fc43e51ef0..5ef7a03427 100644 --- a/modules/utxo-lib/test/bitgo/wallet/WalletUnspent.ts +++ b/modules/utxo-lib/test/bitgo/wallet/WalletUnspent.ts @@ -100,7 +100,7 @@ describe('WalletUnspent', function () { // TODO: Test rederiving scripts from PSBT and keys only psbt.signAllInputsHD(walletKeys[signer]); psbt.signAllInputsHD(walletKeys[cosigner]); - assert(psbt.validateSignaturesOfAllInputs()); + assert.ok(psbt.validateSignaturesOfAllInputs()); psbt.finalizeAllInputs(); // extract transaction has a return type of Transaction instead of UtxoTransaction const tx = psbt.extractTransaction() as UtxoTransaction; @@ -109,7 +109,7 @@ describe('WalletUnspent', function () { tx, unspents.map((u) => ({ ...toPrevOutput(u, network), prevTx: u.prevTx })) ); - assert(psbt2.validateSignaturesOfAllInputs()); + assert.ok(psbt2.validateSignaturesOfAllInputs()); return tx; } diff --git a/modules/utxo-lib/test/bitgo/wallet/chains.ts b/modules/utxo-lib/test/bitgo/wallet/chains.ts index 0e08406155..00b2a188d0 100644 --- a/modules/utxo-lib/test/bitgo/wallet/chains.ts +++ b/modules/utxo-lib/test/bitgo/wallet/chains.ts @@ -1,4 +1,4 @@ -import * as assert from 'assert'; +import * as assert from 'assert/strict'; import { ChainCode, chainCodes, diff --git a/modules/utxo-lib/test/fixtures_thirdparty/parse.ts b/modules/utxo-lib/test/fixtures_thirdparty/parse.ts index 9a9d20657c..ba7b2f5679 100644 --- a/modules/utxo-lib/test/fixtures_thirdparty/parse.ts +++ b/modules/utxo-lib/test/fixtures_thirdparty/parse.ts @@ -1,4 +1,4 @@ -import * as assert from 'assert'; +import * as assert from 'assert/strict'; import { describe } from 'mocha'; import { getNetworkList, getNetworkName, isBitcoinGold, isMainnet, isZcash, isDogecoin } from '../../src/networks'; import { diff --git a/modules/utxo-lib/test/integration_local_rpc/generate/RpcClient.ts b/modules/utxo-lib/test/integration_local_rpc/generate/RpcClient.ts index 392311516a..333dcc59b1 100644 --- a/modules/utxo-lib/test/integration_local_rpc/generate/RpcClient.ts +++ b/modules/utxo-lib/test/integration_local_rpc/generate/RpcClient.ts @@ -1,4 +1,4 @@ -import * as assert from 'assert'; +import { ok as assert } from 'assert'; import axios, { AxiosError } from 'axios'; import buildDebug from 'debug'; diff --git a/modules/utxo-lib/test/integration_local_rpc/generate/fixtures.ts b/modules/utxo-lib/test/integration_local_rpc/generate/fixtures.ts index e640946d30..f5e6810c0b 100644 --- a/modules/utxo-lib/test/integration_local_rpc/generate/fixtures.ts +++ b/modules/utxo-lib/test/integration_local_rpc/generate/fixtures.ts @@ -26,7 +26,7 @@ export function getProtocolVersions(network: Network): number[] { export function getFixtureDir(protocol: Protocol): string { let networkName = getNetworkName(protocol.network); - assert(networkName); + assert.ok(networkName); if (networkName === 'bitcoinBitGoSignet' || networkName === 'bitcoinTestnet4') { networkName = 'bitcoinPublicSignet'; } diff --git a/modules/utxo-lib/test/integration_local_rpc/parse.ts b/modules/utxo-lib/test/integration_local_rpc/parse.ts index 88b671da65..fe16aa0bdc 100644 --- a/modules/utxo-lib/test/integration_local_rpc/parse.ts +++ b/modules/utxo-lib/test/integration_local_rpc/parse.ts @@ -1,4 +1,4 @@ -import * as assert from 'assert'; +import * as assert from 'assert/strict'; import { describe, it } from 'mocha'; import { BIP32Interface } from 'bip32'; diff --git a/modules/utxo-lib/test/networks.ts b/modules/utxo-lib/test/networks.ts index 3147ed3f41..3468b17049 100644 --- a/modules/utxo-lib/test/networks.ts +++ b/modules/utxo-lib/test/networks.ts @@ -1,4 +1,4 @@ -import * as assert from 'assert'; +import * as assert from 'assert/strict'; import { getMainnet, getNetworkList, @@ -129,7 +129,7 @@ describe('networks', function () { describe(`networks.${name}`, function () { it('is valid network', function () { - assert(isValidNetwork(network)); + assert.ok(isValidNetwork(network)); }); it('getNetworkName() returns network name', function () { diff --git a/modules/utxo-lib/test/transaction_builder.spec.ts b/modules/utxo-lib/test/transaction_builder.spec.ts index 8d3e375a74..cd4b13d237 100644 --- a/modules/utxo-lib/test/transaction_builder.spec.ts +++ b/modules/utxo-lib/test/transaction_builder.spec.ts @@ -693,7 +693,7 @@ function runTest( txb.addInput(randomTx, 0); txb.addOutput(randomAddress, toAmount(1000, params.amountType) as TNumber); const tx = txb.buildIncomplete(); - assert(tx); + assert.ok(tx); }); it('for incomplete P2SH with 0 signatures', () => { diff --git a/modules/utxo-lib/test/transaction_util.ts b/modules/utxo-lib/test/transaction_util.ts index 27b86526d8..26e24288a8 100644 --- a/modules/utxo-lib/test/transaction_util.ts +++ b/modules/utxo-lib/test/transaction_util.ts @@ -182,7 +182,7 @@ export function getTransactionBuilder( txBuilder.addOutput(recipientScript, toTNumber(BigInt(outputAmount) - BigInt(1000), amountType)); const pubkeys = keys.map((k) => k.publicKey); - assert(isTriple(pubkeys)); + assert.ok(isTriple(pubkeys)); prevOutputs.forEach(({ value }, vin) => { halfSigners.forEach(({ signer, cosigner }) => { From 2eb61afa6149245dde9ef875d475169930e99e26 Mon Sep 17 00:00:00 2001 From: Zahin Mohammad Date: Thu, 21 Aug 2025 10:51:11 -0400 Subject: [PATCH 04/14] fix(secp256k1): fix import of create-hmac The import of `create-hmac` was changed from an ES module import to a CommonJS. This is required for compatibility with both tsx and Node.js 22. TICKET: WP-5599 TICKET: WP-5599 --- modules/secp256k1/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/secp256k1/src/index.ts b/modules/secp256k1/src/index.ts index 1ea4c93265..fb1aa6a129 100644 --- a/modules/secp256k1/src/index.ts +++ b/modules/secp256k1/src/index.ts @@ -1,4 +1,3 @@ -import * as createHmac from 'create-hmac'; import { ECPairAPI, ECPairFactory, ECPairInterface } from 'ecpair'; import * as necc from '@noble/secp256k1'; import { BIP32API, BIP32Factory, BIP32Interface } from 'bip32'; @@ -8,6 +7,7 @@ import * as baseCrypto from '@brandonblack/musig/base_crypto'; import { MuSig, MuSigFactory } from '@brandonblack/musig'; const createHash = require('create-hash'); +const createHmac = require('create-hmac'); necc.utils.sha256Sync = (...messages: Uint8Array[]): Uint8Array => { const sha256 = createHash('sha256'); From 7a057c264dfeeeb291db51954799e7af0d9c9bba Mon Sep 17 00:00:00 2001 From: Zahin Mohammad Date: Thu, 21 Aug 2025 11:33:35 -0400 Subject: [PATCH 05/14] fix(unspents): defer static initializations for ESM compatibility Fix circular reference issues in Dimensions class by moving static property initializations outside the class definition. This ensures compatibility with tsx and Node.js 22, which enforce stricter ESM module loading rules than ts-node with older Node versions. TICKET: WP-5599 TICKET: WP-5599 --- modules/unspents/src/dimensions.ts | 80 ++++++++++++++++++++---------- modules/unspents/src/index.ts | 1 + 2 files changed, 55 insertions(+), 26 deletions(-) diff --git a/modules/unspents/src/dimensions.ts b/modules/unspents/src/dimensions.ts index 4d6f18b1ad..413cf28263 100644 --- a/modules/unspents/src/dimensions.ts +++ b/modules/unspents/src/dimensions.ts @@ -7,7 +7,6 @@ import { compactSize } from './scriptSizes'; import { PositiveInteger } from './types'; import { VirtualSizes } from './virtualSizes'; -export { VirtualSizes }; /** * Apply `f` to all properties of `d` @@ -144,15 +143,14 @@ export class Dimensions { return Dimensions.sum({ outputs: { count: 1, size } }); } - static readonly SingleOutput = Object.freeze({ - p2sh: Dimensions.singleOutput(VirtualSizes.txP2shOutputSize), - p2shP2wsh: Dimensions.singleOutput(VirtualSizes.txP2shP2wshOutputSize), - p2wsh: Dimensions.singleOutput(VirtualSizes.txP2wshOutputSize), - p2tr: Dimensions.singleOutput(VirtualSizes.txP2trOutputSize), - - p2pkh: Dimensions.singleOutput(VirtualSizes.txP2pkhOutputSize), - p2wpkh: Dimensions.singleOutput(VirtualSizes.txP2wpkhOutputSize), - }); + static SingleOutput: { + p2sh: Dimensions; + p2shP2wsh: Dimensions; + p2wsh: Dimensions; + p2tr: Dimensions; + p2pkh: Dimensions; + p2wpkh: Dimensions; + }; /** * @return Number of total inputs (p2sh + p2shP2wsh + p2wsh + p2tr) @@ -218,15 +216,15 @@ export class Dimensions { return scriptLength + compactSize(scriptLength) + VirtualSizes.txOutputAmountSize; } - static readonly SingleInput = Object.freeze({ - p2sh: Dimensions.sum({ nP2shInputs: 1 }), - p2shP2wsh: Dimensions.sum({ nP2shP2wshInputs: 1 }), - p2wsh: Dimensions.sum({ nP2wshInputs: 1 }), - p2trKeypath: Dimensions.sum({ nP2trKeypathInputs: 1 }), - p2trScriptPathLevel1: Dimensions.sum({ nP2trScriptPathLevel1Inputs: 1 }), - p2trScriptPathLevel2: Dimensions.sum({ nP2trScriptPathLevel2Inputs: 1 }), - p2shP2pk: Dimensions.sum({ nP2shP2pkInputs: 1 }), - }); + static SingleInput: { + p2sh: Dimensions; + p2shP2wsh: Dimensions; + p2wsh: Dimensions; + p2trKeypath: Dimensions; + p2trScriptPathLevel1: Dimensions; + p2trScriptPathLevel2: Dimensions; + p2shP2pk: Dimensions; + }; /** * @return @@ -269,13 +267,13 @@ export class Dimensions { } } - static readonly ASSUME_P2SH = Dimensions.SingleInput.p2sh; - static readonly ASSUME_P2SH_P2WSH = Dimensions.SingleInput.p2shP2wsh; - static readonly ASSUME_P2WSH = Dimensions.SingleInput.p2wsh; - static readonly ASSUME_P2TR_KEYPATH = Dimensions.SingleInput.p2trKeypath; - static readonly ASSUME_P2TR_SCRIPTPATH_LEVEL1 = Dimensions.SingleInput.p2trScriptPathLevel1; - static readonly ASSUME_P2TR_SCRIPTPATH_LEVEL2 = Dimensions.SingleInput.p2trScriptPathLevel2; - static readonly ASSUME_P2SH_P2PK_INPUT = Dimensions.SingleInput.p2shP2pk; + static ASSUME_P2SH: Dimensions; + static ASSUME_P2SH_P2WSH: Dimensions; + static ASSUME_P2WSH: Dimensions; + static ASSUME_P2TR_KEYPATH: Dimensions; + static ASSUME_P2TR_SCRIPTPATH_LEVEL1: Dimensions; + static ASSUME_P2TR_SCRIPTPATH_LEVEL2: Dimensions; + static ASSUME_P2SH_P2PK_INPUT: Dimensions; private static getAssumedDimension(params: FromInputParams = {}, index: number) { const { assumeUnsigned } = params; @@ -588,3 +586,33 @@ export class Dimensions { return this.getOverheadVSize() + this.getInputsVSize() + this.getOutputsVSize(); } } + +// Initialize static properties that require the class to be fully defined first +Dimensions.SingleOutput = Object.freeze({ + p2sh: Dimensions.singleOutput(VirtualSizes.txP2shOutputSize), + p2shP2wsh: Dimensions.singleOutput(VirtualSizes.txP2shP2wshOutputSize), + p2wsh: Dimensions.singleOutput(VirtualSizes.txP2wshOutputSize), + p2tr: Dimensions.singleOutput(VirtualSizes.txP2trOutputSize), + p2pkh: Dimensions.singleOutput(VirtualSizes.txP2pkhOutputSize), + p2wpkh: Dimensions.singleOutput(VirtualSizes.txP2wpkhOutputSize), +}); + +// Initialize SingleInput after the class is fully defined +Dimensions.SingleInput = Object.freeze({ + p2sh: Dimensions.sum({ nP2shInputs: 1 }), + p2shP2wsh: Dimensions.sum({ nP2shP2wshInputs: 1 }), + p2wsh: Dimensions.sum({ nP2wshInputs: 1 }), + p2trKeypath: Dimensions.sum({ nP2trKeypathInputs: 1 }), + p2trScriptPathLevel1: Dimensions.sum({ nP2trScriptPathLevel1Inputs: 1 }), + p2trScriptPathLevel2: Dimensions.sum({ nP2trScriptPathLevel2Inputs: 1 }), + p2shP2pk: Dimensions.sum({ nP2shP2pkInputs: 1 }), +}); + +// Initialize the ASSUME_ constants +Dimensions.ASSUME_P2SH = Dimensions.SingleInput.p2sh; +Dimensions.ASSUME_P2SH_P2WSH = Dimensions.SingleInput.p2shP2wsh; +Dimensions.ASSUME_P2WSH = Dimensions.SingleInput.p2wsh; +Dimensions.ASSUME_P2TR_KEYPATH = Dimensions.SingleInput.p2trKeypath; +Dimensions.ASSUME_P2TR_SCRIPTPATH_LEVEL1 = Dimensions.SingleInput.p2trScriptPathLevel1; +Dimensions.ASSUME_P2TR_SCRIPTPATH_LEVEL2 = Dimensions.SingleInput.p2trScriptPathLevel2; +Dimensions.ASSUME_P2SH_P2PK_INPUT = Dimensions.SingleInput.p2shP2pk; diff --git a/modules/unspents/src/index.ts b/modules/unspents/src/index.ts index ccf044fcde..1558ed218e 100644 --- a/modules/unspents/src/index.ts +++ b/modules/unspents/src/index.ts @@ -7,3 +7,4 @@ export { }; export * from './dimensions'; +export { VirtualSizes } from './virtualSizes'; From 1d54643090fee681353bda17a0aed709f068f523 Mon Sep 17 00:00:00 2001 From: Zahin Mohammad Date: Thu, 21 Aug 2025 12:16:03 -0400 Subject: [PATCH 06/14] fix(utxo-ord): update assert imports for Node 22 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude TICKET: WP-5599 --- modules/utxo-ord/src/inscriptions.ts | 8 ++++---- modules/utxo-ord/test/psbt.ts | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/utxo-ord/src/inscriptions.ts b/modules/utxo-ord/src/inscriptions.ts index 1f69adb5b5..2d5f0e5879 100644 --- a/modules/utxo-ord/src/inscriptions.ts +++ b/modules/utxo-ord/src/inscriptions.ts @@ -134,9 +134,9 @@ export function createInscriptionRevealData( const payment = createPaymentForInscription(pubkey, contentType, inscriptionData); const { output: commitOutput, controlBlock } = payment; - assert(commitOutput); - assert(controlBlock); - assert(payment.redeem?.output); + assert.ok(commitOutput); + assert.ok(controlBlock); + assert.ok(payment.redeem?.output); const commitAddress = address.fromOutputScript(commitOutput, network); const tapLeafScript: utxolib.bitgo.TapLeafScript[] = [ @@ -164,7 +164,7 @@ export function createInscriptionRevealData( export function createOutputScriptForInscription(pubkey: Buffer, contentType: string, inscriptionData: Buffer): Buffer { const payment = createPaymentForInscription(pubkey, contentType, inscriptionData); - assert(payment.output, 'Failed to create inscription output script'); + assert.ok(payment.output, 'Failed to create inscription output script'); return payment.output; } diff --git a/modules/utxo-ord/test/psbt.ts b/modules/utxo-ord/test/psbt.ts index 15f3e9d1f5..ec9ad5ea7c 100644 --- a/modules/utxo-ord/test/psbt.ts +++ b/modules/utxo-ord/test/psbt.ts @@ -80,7 +80,7 @@ describe('OutputLayout to PSBT conversion', function () { const values = [inscriptionUnspent, ...supplementaryUnspents].map((u) => u.value); it(`finds layout for unspents [${values}, {minimizeInputs=${minimizeInputs}]`, function () { const satPoint = inscriptionUnspent.id + ':0'; - assert(isSatPoint(satPoint)); + assert.ok(isSatPoint(satPoint)); const f = () => createPsbtForSingleInscriptionPassingTransaction( network, @@ -108,7 +108,7 @@ describe('OutputLayout to PSBT conversion', function () { const result = findOutputLayoutForWalletUnspents(expectedUnspentSelection, satPoint, outputs, { feeRateSatKB: 1000, }); - assert(result); + assert.ok(result); assert.deepStrictEqual(result.layout, expectedResult); const expectedOutputs = toArray(expectedResult).filter((v) => v !== BigInt(0)).length - 1; const psbt = createPsbtFromOutputLayout(network, inputBuilder, expectedUnspentSelection, outputs, result.layout); From 4df9c97e7909b312bd50c8310bfa70328cd6a714 Mon Sep 17 00:00:00 2001 From: Zahin Mohammad Date: Thu, 21 Aug 2025 12:21:39 -0400 Subject: [PATCH 07/14] fix(key-card): update assert imports for Node 22 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude TICKET: WP-5599 --- .../key-card/src/generateParamsForKeyCreation.ts | 2 +- modules/key-card/src/generateQrData.ts | 8 ++++---- .../test/unit/generateParamsForKeyCreation.ts | 16 ++++++++-------- modules/key-card/test/unit/generateQrData.ts | 14 +++++++------- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/modules/key-card/src/generateParamsForKeyCreation.ts b/modules/key-card/src/generateParamsForKeyCreation.ts index 38dd83251c..8a0863380a 100644 --- a/modules/key-card/src/generateParamsForKeyCreation.ts +++ b/modules/key-card/src/generateParamsForKeyCreation.ts @@ -7,7 +7,7 @@ export function generateParamsForKeyCreation({ walletLabel, keyCardImage, }: GenerateQrDataForKeychainParams & GenerateQrDataBaseParams): IDrawKeyCard { - assert(bitgoKeychain.commonKeychain, 'bitgoKeychain.commonKeychain is required'); + assert.ok(bitgoKeychain.commonKeychain, 'bitgoKeychain.commonKeychain is required'); return { walletLabel, keyCardImage, diff --git a/modules/key-card/src/generateQrData.ts b/modules/key-card/src/generateQrData.ts index 782fed6701..cef41ad99d 100644 --- a/modules/key-card/src/generateQrData.ts +++ b/modules/key-card/src/generateQrData.ts @@ -32,7 +32,7 @@ function generateUserQrData(userKeychain: Keychain, userMasterKey?: string): QrD } const pub = getPubFromKey(userKeychain); - assert(pub); + assert.ok(pub); return { title: 'A: Provided User Key', @@ -71,7 +71,7 @@ function generateBackupQrData( if (backupKeyProvider === 'BitGo Trust' && backupKeychain.type === 'tss') { const keyShares = backupKeychain.keyShares?.filter((keyShare) => keyShare.to === 'backup'); - assert(keyShares?.length === 2); + assert.ok(keyShares?.length === 2); return { title: 'B: Backup Key Shares', description: @@ -82,7 +82,7 @@ function generateBackupQrData( } const pub = getPubFromKey(backupKeychain); - assert(pub); + assert.ok(pub); if (backupKeyProvider) { return { @@ -104,7 +104,7 @@ function generateBackupQrData( function generateBitGoQrData(bitgoKeychain: Keychain): QrDataEntry { const bitgoData = getPubFromKey(bitgoKeychain); - assert(bitgoData); + assert.ok(bitgoData); return { title: 'C: BitGo Public Key', diff --git a/modules/key-card/test/unit/generateParamsForKeyCreation.ts b/modules/key-card/test/unit/generateParamsForKeyCreation.ts index a068f57117..ea14be183e 100644 --- a/modules/key-card/test/unit/generateParamsForKeyCreation.ts +++ b/modules/key-card/test/unit/generateParamsForKeyCreation.ts @@ -15,13 +15,13 @@ describe('generateParamsForKeyCreation', function () { const keyCardImage: HTMLImageElement = 'random image' as unknown as HTMLImageElement; const result = generateParamsForKeyCreation({ bitgoKeychain, curve, walletLabel, keyCardImage }); - assert(result); - assert(result.qrData.user); - assert(result.qrData.user.data === bitgoKeychain.commonKeychain); - assert(result.qrData.bitgo && result.qrData.bitgo.data === bitgoKeychain.id); - assert(result.questions && result.questions.length === 2); - assert(result.walletLabel === walletLabel); - assert(result.curve === curve); - assert(result.keyCardImage === keyCardImage); + assert.ok(result); + assert.ok(result.qrData.user); + assert.ok(result.qrData.user.data === bitgoKeychain.commonKeychain); + assert.ok(result.qrData.bitgo && result.qrData.bitgo.data === bitgoKeychain.id); + assert.ok(result.questions && result.questions.length === 2); + assert.ok(result.walletLabel === walletLabel); + assert.ok(result.curve === curve); + assert.ok(result.keyCardImage === keyCardImage); }); }); diff --git a/modules/key-card/test/unit/generateQrData.ts b/modules/key-card/test/unit/generateQrData.ts index dabc29c1f8..1191ea0f65 100644 --- a/modules/key-card/test/unit/generateQrData.ts +++ b/modules/key-card/test/unit/generateQrData.ts @@ -60,19 +60,19 @@ describe('generateQrData', function () { qrData.user.description.should.equal('This is your private key, encrypted with your wallet password.'); qrData.user.data.should.equal(userEncryptedPrv); - assert(qrData.backup); + assert.ok(qrData.backup); qrData.backup.title.should.equal('B: Backup Key'); qrData.backup.description.should.equal('This is your backup private key, encrypted with your wallet password.'); qrData.backup.data.should.equal(backupEncryptedPrv); - assert(qrData.bitgo); + assert.ok(qrData.bitgo); qrData.bitgo.title.should.equal('C: BitGo Public Key'); qrData.bitgo.description.should.equal( 'This is the public part of the key that BitGo will use to ' + 'co-sign transactions\r\nwith you on your wallet.' ); qrData.bitgo.data.should.equal(bitgoPub); - assert(qrData.passcode); + assert.ok(qrData.passcode); qrData.passcode.title.should.equal('D: Encrypted wallet Password'); qrData.passcode.description.should.equal( 'This is the wallet password, encrypted client-side with a key held by BitGo.' @@ -123,13 +123,13 @@ describe('generateQrData', function () { qrData.user.data.should.equal(userPub); should.equal(qrData.user.publicMasterKey, userMasterKey); - assert(qrData.backup); + assert.ok(qrData.backup); qrData.backup.title.should.equal('B: Provided Backup Key'); qrData.backup.description.should.equal('This is the public key you provided for your wallet.'); qrData.backup.data.should.equal(backupPub); should.equal(qrData.backup?.publicMasterKey, backupMasterKey); - assert(qrData.bitgo); + assert.ok(qrData.bitgo); qrData.bitgo.data.should.equal(bitgoPub); should.not.exist(qrData.passcode); @@ -160,7 +160,7 @@ describe('generateQrData', function () { qrData.user.data.should.equal(userEncryptedPrv); - assert(qrData.backup); + assert.ok(qrData.backup); qrData.backup.title.should.equal('B: Backup Key'); qrData.backup.description.should.equal( 'This is the public key held at ' + @@ -173,7 +173,7 @@ describe('generateQrData', function () { ); qrData.backup.data.should.equal(backupPub); - assert(qrData.bitgo); + assert.ok(qrData.bitgo); qrData.bitgo.data.should.equal(bitgoPub); }); }); From 0efe1d0cdc3631b963d65c544ab90c3d80e3946a Mon Sep 17 00:00:00 2001 From: Zahin Mohammad Date: Thu, 21 Aug 2025 13:26:05 -0400 Subject: [PATCH 08/14] fix(account-lib): update module imports for Node 22 ESM compatibility MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Modified sinon stubbing approach to work with ESM modules by using require() and monkey patching instead of direct imports, which allows tests to function correctly after migrating from ts-node to tsx. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude TICKET: WP-5599 --- .../test/unit/mpc/tss/ecdsa/ecdsa.ts | 63 +++++++++++++------ 1 file changed, 43 insertions(+), 20 deletions(-) diff --git a/modules/account-lib/test/unit/mpc/tss/ecdsa/ecdsa.ts b/modules/account-lib/test/unit/mpc/tss/ecdsa/ecdsa.ts index 5696ef84a3..5701951b05 100644 --- a/modules/account-lib/test/unit/mpc/tss/ecdsa/ecdsa.ts +++ b/modules/account-lib/test/unit/mpc/tss/ecdsa/ecdsa.ts @@ -4,10 +4,9 @@ import assert from 'assert'; import { Hash, randomBytes } from 'crypto'; import { Ecdsa, ECDSA, hexToBigInt } from '@bitgo/sdk-core'; -import { EcdsaPaillierProof, EcdsaTypes, Schnorr, SchnorrProof } from '@bitgo/sdk-lib-mpc'; +import { EcdsaPaillierProof, EcdsaTypes, SchnorrProof } from '@bitgo/sdk-lib-mpc'; import * as sinon from 'sinon'; import createKeccakHash from 'keccak'; -import * as paillierBigint from 'paillier-bigint'; import { schnorrProofs, ntildes, @@ -19,6 +18,12 @@ import { mockFKeyShare, } from '../fixtures/ecdsa'; +// Need to import and then monkey-patch to make stubbing work with ESM +const paillierBigintModule = require('paillier-bigint'); +const paillierBigint = paillierBigintModule; +const schnorrModule = require('@bitgo/sdk-lib-mpc'); +const Schnorr = schnorrModule.Schnorr; + describe('TSS ECDSA TESTS', function () { const MPC = new Ecdsa(); const base = BigInt('0x010000000000000000000000000000000000000000000000000000000000000000'); // 2^256 @@ -30,23 +35,35 @@ describe('TSS ECDSA TESTS', function () { ); let A: ECDSA.KeyShare, B: ECDSA.KeyShare, C: ECDSA.KeyShare; before(async () => { - const paillierMock = sinon - .stub(paillierBigint, 'generateRandomKeys') + // Direct monkey patching of the module for ESM compatibility + const originalGenerateRandomKeys = paillierBigint.generateRandomKeys; + + const paillierMock = sinon.stub(); + paillierMock .onCall(0) - .resolves(paillerKeys[0] as unknown as paillierBigint.KeyPair) + .resolves(paillerKeys[0]) .onCall(1) - .resolves(paillerKeys[1] as unknown as paillierBigint.KeyPair) + .resolves(paillerKeys[1]) .onCall(2) - .resolves(paillerKeys[2] as unknown as paillierBigint.KeyPair) + .resolves(paillerKeys[2]) .onCall(3) - .resolves(paillerKeys[0] as unknown as paillierBigint.KeyPair) + .resolves(paillerKeys[0]) .onCall(4) - .resolves(paillerKeys[1] as unknown as paillierBigint.KeyPair) + .resolves(paillerKeys[1]) .onCall(5) - .resolves(paillerKeys[2] as unknown as paillierBigint.KeyPair); + .resolves(paillerKeys[2]); + + // Replace the function directly on the module + paillierBigint.generateRandomKeys = paillierMock; + + // Save references to restore later + (paillierMock as any).originalFn = originalGenerateRandomKeys; - const schnorrProofMock = sinon - .stub(Schnorr, 'createSchnorrProof') + // Apply the same monkey-patching approach for Schnorr + const originalCreateSchnorrProof = Schnorr.createSchnorrProof; + + const schnorrProofMock = sinon.stub(); + schnorrProofMock .onCall(0) .returns(schnorrProofs[0] as unknown as SchnorrProof) .onCall(1) @@ -60,6 +77,12 @@ describe('TSS ECDSA TESTS', function () { .onCall(5) .returns(schnorrProofs[5] as unknown as SchnorrProof); + // Replace the function directly on the module + Schnorr.createSchnorrProof = schnorrProofMock; + + // Save references to restore later + (schnorrProofMock as any).originalFn = originalCreateSchnorrProof; + [A, B, C] = await Promise.all([MPC.keyShare(1, 2, 3), MPC.keyShare(2, 2, 3), MPC.keyShare(3, 2, 3)]); // Needs to run this serially for testing deterministic key generation @@ -96,10 +119,13 @@ describe('TSS ECDSA TESTS', function () { hKeyCombine, ]; commonPublicKey = aKeyCombine.xShare.y; - paillierMock.reset(); - paillierMock.restore(); - schnorrProofMock.reset(); - schnorrProofMock.restore(); + // Adding an explicit assertion to check if the stub was used + paillierMock.callCount.should.equal(6, 'paillierMock should be called 6 times'); + schnorrProofMock.callCount.should.equal(8, 'schnorrProofMock should be called 6 times'); + + // Restore original functions + paillierBigint.generateRandomKeys = (paillierMock as any).originalFn; + Schnorr.createSchnorrProof = (schnorrProofMock as any).originalFn; }); describe('Ecdsa Key Generation Test', function () { @@ -149,10 +175,7 @@ describe('TSS ECDSA TESTS', function () { }); it('should pass if seed length is greater than 64', async function () { - const paillierMock = sinon - .stub(paillierBigint, 'generateRandomKeys') - .onCall(0) - .resolves(paillerKeys[0] as unknown as paillierBigint.KeyPair); + const paillierMock = sinon.stub(paillierBigint, 'generateRandomKeys').onCall(0).resolves(paillerKeys[0]); const seed72Bytes = Buffer.from( '4f7e914dc9ec696398675d1544aab61cb7a67662ffcbdb4079ec5d682be565d87c1b2de75c943dec14c96586984860268779498e6732473aed9ed9c2538f50bea0af926bdccc0134', 'hex', From 12ba9f602dc9027b33c41f6aa89c9060c284a022 Mon Sep 17 00:00:00 2001 From: Zahin Mohammad Date: Thu, 21 Aug 2025 15:17:22 -0400 Subject: [PATCH 09/14] fix(bitgo): update imports and assertions for Node 22 compatibility MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude TICKET: WP-5599 --- modules/bitgo/test/ecdh.ts | 2 +- modules/bitgo/test/encrypt.ts | 2 +- modules/bitgo/test/integration/accesstoken.ts | 2 +- modules/bitgo/test/integration/blockchain.ts | 4 +- modules/bitgo/test/integration/testutil.ts | 2 +- modules/bitgo/test/integration/travelRule.ts | 2 +- modules/bitgo/test/integration/wallet.ts | 12 ++-- modules/bitgo/test/integration/wallets.ts | 6 +- modules/bitgo/test/unit/bitgo.ts | 8 +-- modules/bitgo/test/unit/keychains.ts | 2 +- modules/bitgo/test/v2/integration/bitgo.ts | 2 +- .../bitgo/test/v2/integration/coins/eth.ts | 4 +- .../bitgo/test/v2/integration/coins/xlm.ts | 2 +- modules/bitgo/test/v2/integration/wallet.ts | 4 +- modules/bitgo/test/v2/integration/wallets.ts | 2 +- modules/bitgo/test/v2/lib/recovery-nocks.ts | 2 +- modules/bitgo/test/v2/unit/PrebuildAndSign.ts | 2 +- .../test/v2/unit/accountConsolidations.ts | 2 +- modules/bitgo/test/v2/unit/ams/ams.ts | 4 +- modules/bitgo/test/v2/unit/apiNocks.ts | 2 +- modules/bitgo/test/v2/unit/auth.ts | 2 +- modules/bitgo/test/v2/unit/baseCoin.ts | 2 +- .../test/v2/unit/coins/abstractEthCoin.ts | 2 +- .../test/v2/unit/coins/abstractUtxoCoin.ts | 2 +- .../test/v2/unit/coins/utxo/keychains.ts | 2 +- .../v2/unit/coins/utxo/prebuildAndSign.ts | 2 +- .../coins/utxo/recovery/backupKeyRecovery.ts | 2 +- .../coins/utxo/recovery/crossChainRecovery.ts | 6 +- .../test/v2/unit/coins/utxo/transaction.ts | 12 ++-- .../test/v2/unit/coins/utxo/util/nockBitGo.ts | 2 +- .../v2/unit/coins/utxo/util/nockIndexerAPI.ts | 2 +- modules/bitgo/test/v2/unit/enterprise.ts | 2 +- .../test/v2/unit/internal/opengpgUtils.ts | 4 +- .../test/v2/unit/internal/tssUtils/common.ts | 2 +- .../test/v2/unit/internal/tssUtils/ecdsa.ts | 8 +-- .../tssUtils/ecdsaMPCv2/createKeychains.ts | 66 +++++++++---------- .../tssUtils/ecdsaMPCv2/signTxRequest.ts | 2 +- .../test/v2/unit/internal/tssUtils/eddsa.ts | 4 +- modules/bitgo/test/v2/unit/keychains.ts | 6 +- .../v2/unit/lightning/lightningWallets.ts | 14 ++-- modules/bitgo/test/v2/unit/lightningWallet.ts | 4 +- modules/bitgo/test/v2/unit/mmi.ts | 2 +- modules/bitgo/test/v2/unit/pendingApproval.ts | 2 +- modules/bitgo/test/v2/unit/recovery.ts | 4 +- modules/bitgo/test/v2/unit/seedValidator.ts | 2 +- .../v2/unit/staking/goStakingWalletCommon.ts | 4 +- .../v2/unit/staking/stakingWalletCommon.ts | 4 +- .../v2/unit/staking/stakingWalletNonTSS.ts | 2 +- .../test/v2/unit/staking/stakingWalletTSS.ts | 2 +- modules/bitgo/test/v2/unit/sweep.ts | 2 +- modules/bitgo/test/v2/unit/tss/ecdsa.ts | 2 +- modules/bitgo/test/v2/unit/tss/eddsa.ts | 2 +- modules/bitgo/test/v2/unit/tss/helpers.ts | 2 +- modules/bitgo/test/v2/unit/unspents.ts | 2 +- modules/bitgo/test/v2/unit/wallet.ts | 4 +- modules/bitgo/test/v2/unit/wallets.ts | 12 ++-- 56 files changed, 132 insertions(+), 132 deletions(-) diff --git a/modules/bitgo/test/ecdh.ts b/modules/bitgo/test/ecdh.ts index 295dd6be15..bfb69dc1f7 100644 --- a/modules/bitgo/test/ecdh.ts +++ b/modules/bitgo/test/ecdh.ts @@ -21,7 +21,7 @@ describe('ECDH utils', () => { const eckey1 = getKey(`${i}.a`); const eckey2 = getKey(`${i}.b`); - assert(eckey1.privateKey); + assert.ok(eckey1.privateKey); [eckey1, utxolib.bitgo.keyutil.privateKeyBufferToECPair(eckey1.privateKey)].forEach((privateKey) => { const sharingKey1 = getSharedSecret(privateKey, eckey2).toString('hex'); const sharingKey2 = getSharedSecret(eckey2, eckey1).toString('hex'); diff --git a/modules/bitgo/test/encrypt.ts b/modules/bitgo/test/encrypt.ts index 606a00028c..c43300e0a8 100644 --- a/modules/bitgo/test/encrypt.ts +++ b/modules/bitgo/test/encrypt.ts @@ -1,7 +1,7 @@ /** * @prettier */ -import * as should from 'should'; +import should = require('should'); import { randomBytes } from 'crypto'; import { decrypt, encrypt, bytesToWord } from '@bitgo/sdk-api'; diff --git a/modules/bitgo/test/integration/accesstoken.ts b/modules/bitgo/test/integration/accesstoken.ts index bd27a0a7dc..86362ea433 100644 --- a/modules/bitgo/test/integration/accesstoken.ts +++ b/modules/bitgo/test/integration/accesstoken.ts @@ -7,7 +7,7 @@ /* eslint-disable @typescript-eslint/no-empty-function */ import { strict as assert } from 'assert'; -import * as should from 'should'; +import should = require('should'); import * as _ from 'lodash'; const TestBitGo = require('../lib/test_bitgo'); diff --git a/modules/bitgo/test/integration/blockchain.ts b/modules/bitgo/test/integration/blockchain.ts index 4b7cab083a..7a4ca24e96 100644 --- a/modules/bitgo/test/integration/blockchain.ts +++ b/modules/bitgo/test/integration/blockchain.ts @@ -86,9 +86,9 @@ describe('Address', function () { assert.equal(result.start, 0); result.should.have.property('total'); result.should.have.property('count'); - assert(result.transactions.length > 20); + assert.ok(result.transactions.length > 20); assert.equal(result.transactions.length, result.count); - assert(result.total > 75); + assert.ok(result.total > 75); done(); }); }); diff --git a/modules/bitgo/test/integration/testutil.ts b/modules/bitgo/test/integration/testutil.ts index 503e44edfa..c15df4e1be 100644 --- a/modules/bitgo/test/integration/testutil.ts +++ b/modules/bitgo/test/integration/testutil.ts @@ -3,7 +3,7 @@ */ const TestUtil = module.exports; -import * as should from 'should'; +import should = require('should'); import * as _ from 'lodash'; const Q = require('q'); diff --git a/modules/bitgo/test/integration/travelRule.ts b/modules/bitgo/test/integration/travelRule.ts index 38305b08a8..178db10f26 100644 --- a/modules/bitgo/test/integration/travelRule.ts +++ b/modules/bitgo/test/integration/travelRule.ts @@ -213,7 +213,7 @@ describe('Travel Rule API', function () { return travel .sendMany({ txid: txid, travelInfos: travelInfos }) .then(function () { - assert(false); // should not get here + assert.ok(false); // should not get here }) .catch(function (err) { err.message.should.equal('amount did not match for output index 0'); diff --git a/modules/bitgo/test/integration/wallet.ts b/modules/bitgo/test/integration/wallet.ts index d07dca629d..ad732b3e7a 100644 --- a/modules/bitgo/test/integration/wallet.ts +++ b/modules/bitgo/test/integration/wallet.ts @@ -7,7 +7,7 @@ /* eslint-disable @typescript-eslint/no-empty-function */ import { strict as assert } from 'assert'; -import * as should from 'should'; +import should = require('should'); import { VirtualSizes } from '@bitgo/unspents'; import * as utxolib from '@bitgo/utxo-lib'; @@ -1044,7 +1044,7 @@ describe('Wallet API', function () { progressDetails.should.have.property('index'); progressDetails.should.have.property('inputCount'); progressDetails.index.should.equal(progressCallbackCount); - assert(progressDetails.inputCount <= maxInputCountPerConsolidation); + assert.ok(progressDetails.inputCount <= maxInputCountPerConsolidation); progressCallbackCount++; }; @@ -2445,7 +2445,7 @@ describe('Wallet API', function () { walletPassphrase: TestBitGo.TEST_WALLET1_PASSCODE, }) .then(function (res) { - assert(false); // should not reach + assert.ok(false); // should not reach }) .catch(function (err) { err.message.should.eql('Insufficient funds'); @@ -2466,7 +2466,7 @@ describe('Wallet API', function () { instant: true, }) .then(function (res) { - assert(false); // should not reach + assert.ok(false); // should not reach }) .catch(function (err) { err.message.should.eql('wallet does not support instant transactions'); @@ -2486,7 +2486,7 @@ describe('Wallet API', function () { }); }) .then(function (result) { - assert(false); // should not reach + assert.ok(false); // should not reach }) .catch(function (err) { err.needsOTP.should.equal(true); @@ -3037,7 +3037,7 @@ describe('Wallet API', function () { .createTransaction({ recipients: recipients }) .then(function (result) { // should not reach - assert(false); + assert.ok(false); }) .catch(function (err) { err.message.should.containEql('incorrect type for field fromUserName in travel info'); diff --git a/modules/bitgo/test/integration/wallets.ts b/modules/bitgo/test/integration/wallets.ts index a0ad95aca4..0358c861de 100644 --- a/modules/bitgo/test/integration/wallets.ts +++ b/modules/bitgo/test/integration/wallets.ts @@ -14,7 +14,7 @@ const TestBitGo = require('../lib/test_bitgo'); import * as utxolib from '@bitgo/utxo-lib'; import { getAddressP2PKH, getNetwork } from '../../src/bitcoin'; import { common } from '@bitgo/sdk-core'; -import * as nock from 'nock'; +import nock = require('nock'); const TEST_WALLET_LABEL = 'wallet management test'; @@ -171,7 +171,7 @@ describe('Wallets', function () { assert.equal(keychain.xpub, keychains[1].xpub); bitgo.keychains().createBitGo({}, function (err, keychain) { - assert(keychain.xpub); + assert.ok(keychain.xpub); keychains.push(keychain); const options = { @@ -362,7 +362,7 @@ describe('Wallets', function () { id: newKey.address.toString(), }; wallets.get(options, function (err, wallet) { - assert(!wallet); + assert.ok(!wallet); done(); }); }); diff --git a/modules/bitgo/test/unit/bitgo.ts b/modules/bitgo/test/unit/bitgo.ts index 02c44b9230..f11c5cbc55 100644 --- a/modules/bitgo/test/unit/bitgo.ts +++ b/modules/bitgo/test/unit/bitgo.ts @@ -3,8 +3,8 @@ // import * as crypto from 'crypto'; -import * as nock from 'nock'; -import * as should from 'should'; +import nock = require('nock'); +import should = require('should'); import assert = require('assert'); import { common, generateGPGKeyPair } from '@bitgo/sdk-core'; @@ -707,7 +707,7 @@ describe('BitGo Prototype Methods', function () { nock('https://bitgo.fakeurl') .post('/api/auth/v1/session') .reply(200, async (uri, requestBody) => { - assert(typeof requestBody === 'object'); + assert.ok(typeof requestBody === 'object'); should.exist(requestBody.userId); should.exist(requestBody.passkey); requestBody.userId.should.equal(userId); @@ -752,7 +752,7 @@ describe('BitGo Prototype Methods', function () { assert.fail('Expected error not thrown'); } catch (e) { console.log(e); - assert(e.message.includes('JSON')); + assert.ok(e.message.includes('JSON')); } }); it('should throw - missing access token', async () => { diff --git a/modules/bitgo/test/unit/keychains.ts b/modules/bitgo/test/unit/keychains.ts index 9f39f423a1..ddff248879 100644 --- a/modules/bitgo/test/unit/keychains.ts +++ b/modules/bitgo/test/unit/keychains.ts @@ -3,8 +3,8 @@ // import * as _ from 'lodash'; -import * as nock from 'nock'; import 'should'; +import nock = require('nock'); import { common } from '@bitgo/sdk-core'; diff --git a/modules/bitgo/test/v2/integration/bitgo.ts b/modules/bitgo/test/v2/integration/bitgo.ts index 02a690392a..27d3453512 100644 --- a/modules/bitgo/test/v2/integration/bitgo.ts +++ b/modules/bitgo/test/v2/integration/bitgo.ts @@ -75,7 +75,7 @@ describe('BitGo', function () { bitgo.initializeTestVars(); bitgo.logout({}, function (err) { // logout should fail when not logged in - assert(err); + assert.ok(err); done(); }); }); diff --git a/modules/bitgo/test/v2/integration/coins/eth.ts b/modules/bitgo/test/v2/integration/coins/eth.ts index 93d73665da..a22c073655 100644 --- a/modules/bitgo/test/v2/integration/coins/eth.ts +++ b/modules/bitgo/test/v2/integration/coins/eth.ts @@ -1,8 +1,8 @@ -import * as should from 'should'; +import should = require('should'); import 'should-http'; import { TestBitGo } from '../../../lib/test_bitgo'; -import * as nock from 'nock'; +import nock = require('nock'); nock.restore(); describe('ETH:', function () { diff --git a/modules/bitgo/test/v2/integration/coins/xlm.ts b/modules/bitgo/test/v2/integration/coins/xlm.ts index c7a3d45426..2331ed952e 100644 --- a/modules/bitgo/test/v2/integration/coins/xlm.ts +++ b/modules/bitgo/test/v2/integration/coins/xlm.ts @@ -4,7 +4,7 @@ import { BaseCoin } from '../../../../src/v2'; import { TestBitGo } from '../../../lib/test_bitgo'; -import * as nock from 'nock'; +import nock = require('nock'); describe('XLM:', function () { let bitgo: typeof TestBitGo; diff --git a/modules/bitgo/test/v2/integration/wallet.ts b/modules/bitgo/test/v2/integration/wallet.ts index 0902eda89f..2953d15cdc 100644 --- a/modules/bitgo/test/v2/integration/wallet.ts +++ b/modules/bitgo/test/v2/integration/wallet.ts @@ -2,9 +2,9 @@ // Tests for Wallets // -import * as should from 'should'; +import should = require('should'); import * as _ from 'lodash'; -import * as nock from 'nock'; +import nock = require('nock'); import { TestBitGo } from '../../lib/test_bitgo'; diff --git a/modules/bitgo/test/v2/integration/wallets.ts b/modules/bitgo/test/v2/integration/wallets.ts index 6f522ab73e..77f2c6862f 100644 --- a/modules/bitgo/test/v2/integration/wallets.ts +++ b/modules/bitgo/test/v2/integration/wallets.ts @@ -2,7 +2,7 @@ // Tests for Wallets // -import * as should from 'should'; +import should = require('should'); import { TestBitGo } from '../../lib/test_bitgo'; import { restore } from 'nock'; const Q = require('q'); diff --git a/modules/bitgo/test/v2/lib/recovery-nocks.ts b/modules/bitgo/test/v2/lib/recovery-nocks.ts index f60315adc6..d6d8570a88 100644 --- a/modules/bitgo/test/v2/lib/recovery-nocks.ts +++ b/modules/bitgo/test/v2/lib/recovery-nocks.ts @@ -1,7 +1,7 @@ /** * @prettier */ -import * as nock from 'nock'; +import nock = require('nock'); import { Environments } from '@bitgo/sdk-core'; module.exports.nockXrpRecovery = function nockXrpRecovery() { diff --git a/modules/bitgo/test/v2/unit/PrebuildAndSign.ts b/modules/bitgo/test/v2/unit/PrebuildAndSign.ts index f617c4e4fb..8244ac2f10 100644 --- a/modules/bitgo/test/v2/unit/PrebuildAndSign.ts +++ b/modules/bitgo/test/v2/unit/PrebuildAndSign.ts @@ -1,5 +1,5 @@ import * as sinon from 'sinon'; -import * as nock from 'nock'; +import nock = require('nock'); import { Environments, Wallet } from '@bitgo/sdk-core'; import { TestableBG, TestBitGo } from '@bitgo/sdk-test'; diff --git a/modules/bitgo/test/v2/unit/accountConsolidations.ts b/modules/bitgo/test/v2/unit/accountConsolidations.ts index 1c85ba3303..115660942e 100644 --- a/modules/bitgo/test/v2/unit/accountConsolidations.ts +++ b/modules/bitgo/test/v2/unit/accountConsolidations.ts @@ -6,7 +6,7 @@ import * as sinon from 'sinon'; require('should-sinon'); import '../lib/asserts'; -import * as nock from 'nock'; +import nock = require('nock'); import { common, Wallet } from '@bitgo/sdk-core'; diff --git a/modules/bitgo/test/v2/unit/ams/ams.ts b/modules/bitgo/test/v2/unit/ams/ams.ts index f78e11fce6..0fda788315 100644 --- a/modules/bitgo/test/v2/unit/ams/ams.ts +++ b/modules/bitgo/test/v2/unit/ams/ams.ts @@ -1,5 +1,5 @@ -import * as should from 'should'; -import * as nock from 'nock'; +import should = require('should'); +import nock = require('nock'); import { Environments } from '@bitgo/sdk-core'; import { TestBitGo } from '@bitgo/sdk-test'; diff --git a/modules/bitgo/test/v2/unit/apiNocks.ts b/modules/bitgo/test/v2/unit/apiNocks.ts index 185f019c95..c79e1affcb 100644 --- a/modules/bitgo/test/v2/unit/apiNocks.ts +++ b/modules/bitgo/test/v2/unit/apiNocks.ts @@ -1,4 +1,4 @@ -import * as nock from 'nock'; +import nock = require('nock'); export async function nockGetSigningKey(params: { userId: string; diff --git a/modules/bitgo/test/v2/unit/auth.ts b/modules/bitgo/test/v2/unit/auth.ts index b9641e4521..b9d997454d 100644 --- a/modules/bitgo/test/v2/unit/auth.ts +++ b/modules/bitgo/test/v2/unit/auth.ts @@ -1,4 +1,4 @@ -import * as nock from 'nock'; +import nock = require('nock'); import 'should'; import * as sinon from 'sinon'; diff --git a/modules/bitgo/test/v2/unit/baseCoin.ts b/modules/bitgo/test/v2/unit/baseCoin.ts index 68cb63b24b..3268ef22a4 100644 --- a/modules/bitgo/test/v2/unit/baseCoin.ts +++ b/modules/bitgo/test/v2/unit/baseCoin.ts @@ -3,7 +3,7 @@ // import 'should'; -import * as nock from 'nock'; +import nock = require('nock'); import { TestBitGo } from '@bitgo/sdk-test'; import { BitGo } from '../../../src/bitgo'; diff --git a/modules/bitgo/test/v2/unit/coins/abstractEthCoin.ts b/modules/bitgo/test/v2/unit/coins/abstractEthCoin.ts index b80ab0ebf1..f5e2e4fccf 100644 --- a/modules/bitgo/test/v2/unit/coins/abstractEthCoin.ts +++ b/modules/bitgo/test/v2/unit/coins/abstractEthCoin.ts @@ -3,7 +3,7 @@ */ import * as _ from 'lodash'; -import * as should from 'should'; +import should = require('should'); import { bip32 } from '@bitgo/utxo-lib'; import { TestBitGo } from '@bitgo/sdk-test'; import { BitGo } from '../../../../src/bitgo'; diff --git a/modules/bitgo/test/v2/unit/coins/abstractUtxoCoin.ts b/modules/bitgo/test/v2/unit/coins/abstractUtxoCoin.ts index 024379d7b1..53b51823d0 100644 --- a/modules/bitgo/test/v2/unit/coins/abstractUtxoCoin.ts +++ b/modules/bitgo/test/v2/unit/coins/abstractUtxoCoin.ts @@ -1,5 +1,5 @@ import * as utxolib from '@bitgo/utxo-lib'; -import * as should from 'should'; +import should = require('should'); import * as sinon from 'sinon'; import { Wallet, UnexpectedAddressError, VerificationOptions, Triple } from '@bitgo/sdk-core'; import { TestBitGo } from '@bitgo/sdk-test'; diff --git a/modules/bitgo/test/v2/unit/coins/utxo/keychains.ts b/modules/bitgo/test/v2/unit/coins/utxo/keychains.ts index 8908534c0b..fad51bcb68 100644 --- a/modules/bitgo/test/v2/unit/coins/utxo/keychains.ts +++ b/modules/bitgo/test/v2/unit/coins/utxo/keychains.ts @@ -7,7 +7,7 @@ function run(coin: AbstractUtxoCoin) { describe(`UTXO Keychains ${coin.getChain()}`, function () { it('validates pub', function () { const { pub } = coin.keychains().create(); - assert(pub); + assert.ok(pub); coin.isValidPub(pub).should.equal(true); }); }); diff --git a/modules/bitgo/test/v2/unit/coins/utxo/prebuildAndSign.ts b/modules/bitgo/test/v2/unit/coins/utxo/prebuildAndSign.ts index eb8057b673..d9893ddc53 100644 --- a/modules/bitgo/test/v2/unit/coins/utxo/prebuildAndSign.ts +++ b/modules/bitgo/test/v2/unit/coins/utxo/prebuildAndSign.ts @@ -5,7 +5,7 @@ import * as assert from 'assert'; import { AbstractUtxoCoin, getReplayProtectionAddresses } from '@bitgo/abstract-utxo'; import * as utxolib from '@bitgo/utxo-lib'; -import * as nock from 'nock'; +import nock = require('nock'); import { encryptKeychain, getDefaultWalletKeys, getUtxoWallet, keychainsBase58, utxoCoins } from './util'; import { common, HalfSignedUtxoTransaction, Wallet } from '@bitgo/sdk-core'; diff --git a/modules/bitgo/test/v2/unit/coins/utxo/recovery/backupKeyRecovery.ts b/modules/bitgo/test/v2/unit/coins/utxo/recovery/backupKeyRecovery.ts index 65741af894..2f07d2ad59 100644 --- a/modules/bitgo/test/v2/unit/coins/utxo/recovery/backupKeyRecovery.ts +++ b/modules/bitgo/test/v2/unit/coins/utxo/recovery/backupKeyRecovery.ts @@ -4,7 +4,7 @@ import 'should'; import * as mocha from 'mocha'; import * as sinon from 'sinon'; -import * as nock from 'nock'; +import nock = require('nock'); import { BIP32Interface } from '@bitgo/utxo-lib'; import * as utxolib from '@bitgo/utxo-lib'; diff --git a/modules/bitgo/test/v2/unit/coins/utxo/recovery/crossChainRecovery.ts b/modules/bitgo/test/v2/unit/coins/utxo/recovery/crossChainRecovery.ts index cc516d23be..f482ac0501 100644 --- a/modules/bitgo/test/v2/unit/coins/utxo/recovery/crossChainRecovery.ts +++ b/modules/bitgo/test/v2/unit/coins/utxo/recovery/crossChainRecovery.ts @@ -2,8 +2,8 @@ * @prettier */ import * as assert from 'assert'; -import * as should from 'should'; -import * as nock from 'nock'; +import should = require('should'); +import nock = require('nock'); import * as utxolib from '@bitgo/utxo-lib'; import { Triple } from '@bitgo/sdk-core'; import { @@ -199,7 +199,7 @@ function run(sourceCoin: AbstractUtxoC const unspents = getRecoveryUnspents(); should.equal(tx.ins.length, unspents.length); tx.ins.forEach((input, i) => { - assert(typeof tx !== 'string'); + assert.ok(typeof tx !== 'string'); utxolib.bitgo .verifySignatureWithUnspent(tx, i, getRecoveryUnspents(), walletKeys) .should.eql([true, false, false]); diff --git a/modules/bitgo/test/v2/unit/coins/utxo/transaction.ts b/modules/bitgo/test/v2/unit/coins/utxo/transaction.ts index ac0c97dcc9..3b30f218c4 100644 --- a/modules/bitgo/test/v2/unit/coins/utxo/transaction.ts +++ b/modules/bitgo/test/v2/unit/coins/utxo/transaction.ts @@ -5,7 +5,7 @@ import 'mocha'; import * as _ from 'lodash'; import * as assert from 'assert'; import * as utxolib from '@bitgo/utxo-lib'; -import * as nock from 'nock'; +import nock = require('nock'); import { BIP32Interface, bitgo, testutil } from '@bitgo/utxo-lib'; import { AbstractUtxoCoin, getReplayProtectionAddresses } from '@bitgo/abstract-utxo'; @@ -113,7 +113,7 @@ describe(`UTXO coin signTransaction`, async function () { if (isPsbt) { validatePsbt(psbt.txHex, 1, 2); } else { - assert(unspents); + assert.ok(unspents); validateTx(psbt.txHex, unspents, 1); } if (scope) { @@ -131,7 +131,7 @@ describe(`UTXO coin signTransaction`, async function () { if (isPsbt) { validatePsbt(signerNoncePsbt.txHex, 0, isTxWithTaprootKeyPathSpend ? 1 : undefined); } else { - assert(unspents); + assert.ok(unspents); validateTx(signerNoncePsbt.txHex, unspents, 0); } @@ -148,7 +148,7 @@ describe(`UTXO coin signTransaction`, async function () { if (isPsbt) { validatePsbt(cosignerNoncePsbt.txHex, 0, isTxWithTaprootKeyPathSpend ? 2 : undefined); } else { - assert(unspents); + assert.ok(unspents); validateTx(cosignerNoncePsbt.txHex, unspents, 0); } @@ -166,7 +166,7 @@ describe(`UTXO coin signTransaction`, async function () { if (isPsbt) { validatePsbt(signerSigPsbt.txHex, 1, isTxWithTaprootKeyPathSpend ? 2 : undefined); } else { - assert(unspents); + assert.ok(unspents); validateTx(signerSigPsbt.txHex, unspents, 1); } } @@ -511,7 +511,7 @@ function run( ); transaction.ins.forEach((input, index) => { if (inputScripts[index] === 'p2shP2pk') { - assert(coin.isBitGoTaintedUnspent(unspents[index])); + assert.ok(coin.isBitGoTaintedUnspent(unspents[index])); return; } diff --git a/modules/bitgo/test/v2/unit/coins/utxo/util/nockBitGo.ts b/modules/bitgo/test/v2/unit/coins/utxo/util/nockBitGo.ts index 28b99cf29d..536f3fa221 100644 --- a/modules/bitgo/test/v2/unit/coins/utxo/util/nockBitGo.ts +++ b/modules/bitgo/test/v2/unit/coins/utxo/util/nockBitGo.ts @@ -1,4 +1,4 @@ -import * as nock from 'nock'; +import nock = require('nock'); import { Environment, Environments } from '@bitgo/sdk-core'; import { defaultBitGo } from './utxoCoins'; diff --git a/modules/bitgo/test/v2/unit/coins/utxo/util/nockIndexerAPI.ts b/modules/bitgo/test/v2/unit/coins/utxo/util/nockIndexerAPI.ts index eeb74448c1..418e6a4907 100644 --- a/modules/bitgo/test/v2/unit/coins/utxo/util/nockIndexerAPI.ts +++ b/modules/bitgo/test/v2/unit/coins/utxo/util/nockIndexerAPI.ts @@ -1,7 +1,7 @@ /** * @prettier */ -import * as nock from 'nock'; +import nock = require('nock'); import * as utxolib from '@bitgo/utxo-lib'; import { AbstractUtxoCoin } from '@bitgo/abstract-utxo'; import { nockBitGo } from './nockBitGo'; diff --git a/modules/bitgo/test/v2/unit/enterprise.ts b/modules/bitgo/test/v2/unit/enterprise.ts index 9a54851bb3..0ea5211b11 100644 --- a/modules/bitgo/test/v2/unit/enterprise.ts +++ b/modules/bitgo/test/v2/unit/enterprise.ts @@ -2,7 +2,7 @@ // Tests for enterprises // -import * as nock from 'nock'; +import nock = require('nock'); import * as sinon from 'sinon'; import { common, ECDSAUtils, Enterprise } from '@bitgo/sdk-core'; diff --git a/modules/bitgo/test/v2/unit/internal/opengpgUtils.ts b/modules/bitgo/test/v2/unit/internal/opengpgUtils.ts index 31d8b645ce..b8c878935a 100644 --- a/modules/bitgo/test/v2/unit/internal/opengpgUtils.ts +++ b/modules/bitgo/test/v2/unit/internal/opengpgUtils.ts @@ -1,5 +1,5 @@ import * as openpgp from 'openpgp'; -import * as should from 'should'; +import should = require('should'); import * as crypto from 'crypto'; import * as assert from 'assert'; @@ -305,7 +305,7 @@ describe('OpenGPG Utils Tests', function () { const parsedKey = await openpgp.readKey({ armoredKey: gpgKey.publicKey }); should.exist(parsedKey); - assert(parsedKey); + assert.ok(parsedKey); const primaryUser = await parsedKey.getPrimaryUser(); primaryUser.user.userID?.name?.should.equal(userName); primaryUser.user.userID?.email?.should.equal(userEmail); diff --git a/modules/bitgo/test/v2/unit/internal/tssUtils/common.ts b/modules/bitgo/test/v2/unit/internal/tssUtils/common.ts index 8b60405820..1137d77398 100644 --- a/modules/bitgo/test/v2/unit/internal/tssUtils/common.ts +++ b/modules/bitgo/test/v2/unit/internal/tssUtils/common.ts @@ -1,5 +1,5 @@ import { ExchangeCommitmentResponse, RequestType, SignatureShareRecord } from '@bitgo/sdk-core'; -import * as nock from 'nock'; +import nock = require('nock'); import * as _ from 'lodash'; export async function nockSendTxRequest(params: { diff --git a/modules/bitgo/test/v2/unit/internal/tssUtils/ecdsa.ts b/modules/bitgo/test/v2/unit/internal/tssUtils/ecdsa.ts index d6ba5d5d2b..0c39f62c3d 100644 --- a/modules/bitgo/test/v2/unit/internal/tssUtils/ecdsa.ts +++ b/modules/bitgo/test/v2/unit/internal/tssUtils/ecdsa.ts @@ -1,8 +1,8 @@ import * as assert from 'assert'; import * as _ from 'lodash'; -import * as nock from 'nock'; +import nock = require('nock'); import * as openpgp from 'openpgp'; -import * as should from 'should'; +import should = require('should'); import * as sinon from 'sinon'; import { @@ -1699,11 +1699,11 @@ describe('TSS Ecdsa Utils:', async function () { false ); - assert(bitgoKeychain.keyShares); + assert.ok(bitgoKeychain.keyShares); const bitgoToBackupKeyShare = bitgoKeychain.keyShares.find( (keyShare) => keyShare.from === 'bitgo' && keyShare.to === 'backup' ); - assert(bitgoToBackupKeyShare); + assert.ok(bitgoToBackupKeyShare); const userPublicShare = Buffer.concat([ Buffer.from(userKeyShare.nShares[2].y, 'hex'), diff --git a/modules/bitgo/test/v2/unit/internal/tssUtils/ecdsaMPCv2/createKeychains.ts b/modules/bitgo/test/v2/unit/internal/tssUtils/ecdsaMPCv2/createKeychains.ts index 5c73592fda..21495eba42 100644 --- a/modules/bitgo/test/v2/unit/internal/tssUtils/ecdsaMPCv2/createKeychains.ts +++ b/modules/bitgo/test/v2/unit/internal/tssUtils/ecdsaMPCv2/createKeychains.ts @@ -1,5 +1,5 @@ import * as assert from 'assert'; -import * as nock from 'nock'; +import nock = require('nock'); import * as openpgp from 'openpgp'; import * as crypto from 'crypto'; @@ -310,7 +310,7 @@ describe('TSS Ecdsa MPCv2 Utils:', async function () { [userGpgPrvKey] ); const userMsg1 = userMsgs1Signed.broadcastMessages.find((m) => m.from === 0); - assert(userMsg1, 'userMsg1 not found'); + assert.ok(userMsg1, 'userMsg1 not found'); OVC1ToOVC2Round1Payload = { tssVersion: '0.0.1' as NonEmptyString, @@ -345,7 +345,7 @@ describe('TSS Ecdsa MPCv2 Utils:', async function () { const backupSession = new DklsDkg.Dkg(3, 2, 1); let OVC2ToBitgoRound1Payload: OVC2ToBitgoRound1Payload; { - assert(OVC1ToOVC2Round1Payload.state === 0, 'OVC1ToOVC2Round1Payload.state should be 0'); + assert.ok(OVC1ToOVC2Round1Payload.state === 0, 'OVC1ToOVC2Round1Payload.state should be 0'); const backupBroadcastMsg1Unsigned = await backupSession.initDkg(); const backupMsgs1Signed = await DklsComms.encryptAndAuthOutgoingMessages( { broadcastMessages: [DklsTypes.serializeBroadcastMessage(backupBroadcastMsg1Unsigned)], p2pMessages: [] }, @@ -353,7 +353,7 @@ describe('TSS Ecdsa MPCv2 Utils:', async function () { [backupGpgPrvKey] ); const backupMsg1 = backupMsgs1Signed.broadcastMessages.find((m) => m.from === 1); - assert(backupMsg1, 'backupMsg1 not found'); + assert.ok(backupMsg1, 'backupMsg1 not found'); OVC2ToBitgoRound1Payload = { ...OVC1ToOVC2Round1Payload, @@ -374,7 +374,7 @@ describe('TSS Ecdsa MPCv2 Utils:', async function () { // Round 2 User let OVC1ToOVC2Round2Payload: OVC1ToOVC2Round2Payload; { - assert(bitgoToOVC1Round1Payload.state === 2, 'bitgoToOVC1Round1Payload.state should be 2'); + assert.ok(bitgoToOVC1Round1Payload.state === 2, 'bitgoToOVC1Round1Payload.state should be 2'); const toUserRound1BroadcastMessages = await DklsComms.decryptAndVerifyIncomingMessages( { p2pMessages: [], @@ -399,11 +399,11 @@ describe('TSS Ecdsa MPCv2 Utils:', async function () { const userToBackupMsg2 = userRound2Messages.p2pMessages.find( (m) => m.from === ECDSAUtils.MPCv2PartiesEnum.USER && m.to === ECDSAUtils.MPCv2PartiesEnum.BACKUP ); - assert(userToBackupMsg2, 'userToBackupMsg2 not found'); + assert.ok(userToBackupMsg2, 'userToBackupMsg2 not found'); const userToBitgoMsg2 = userRound2Messages.p2pMessages.find( (m) => m.from === ECDSAUtils.MPCv2PartiesEnum.USER && m.to === ECDSAUtils.MPCv2PartiesEnum.BITGO ); - assert(userToBitgoMsg2, 'userToBitgoMsg2 not found'); + assert.ok(userToBitgoMsg2, 'userToBitgoMsg2 not found'); OVC1ToOVC2Round2Payload = { ...bitgoToOVC1Round1Payload, @@ -422,7 +422,7 @@ describe('TSS Ecdsa MPCv2 Utils:', async function () { let OVC2ToBitgoRound2Payload: OVC2ToBitgoRound2Payload; { - assert(OVC1ToOVC2Round2Payload.state === 3, 'bitgoToOVC1Round1Payload.state should be 3'); + assert.ok(OVC1ToOVC2Round2Payload.state === 3, 'bitgoToOVC1Round1Payload.state should be 3'); const toBackupRound1BroadcastMessages = await DklsComms.decryptAndVerifyIncomingMessages( { p2pMessages: [], @@ -449,11 +449,11 @@ describe('TSS Ecdsa MPCv2 Utils:', async function () { const backupToUserMsg2 = backupRound2Messages.p2pMessages.find( (m) => m.from === ECDSAUtils.MPCv2PartiesEnum.BACKUP && m.to === ECDSAUtils.MPCv2PartiesEnum.USER ); - assert(backupToUserMsg2, 'backupToUserMsg2 not found'); + assert.ok(backupToUserMsg2, 'backupToUserMsg2 not found'); const backupToBitgoMsg2 = backupRound2Messages.p2pMessages.find( (m) => m.from === ECDSAUtils.MPCv2PartiesEnum.BACKUP && m.to === ECDSAUtils.MPCv2PartiesEnum.BITGO ); - assert(backupToBitgoMsg2, 'backupToBitgoMsg2 not found'); + assert.ok(backupToBitgoMsg2, 'backupToBitgoMsg2 not found'); OVC2ToBitgoRound2Payload = { ...OVC1ToOVC2Round2Payload, @@ -475,7 +475,7 @@ describe('TSS Ecdsa MPCv2 Utils:', async function () { // Round 3A User let OVC1ToOVC2Round3Payload: OVC1ToOVC2Round3Payload; { - assert(bitgoToOVC1Round2Payload.state === 5, 'bitgoToOVC1Round2Payload.state should be 5'); + assert.ok(bitgoToOVC1Round2Payload.state === 5, 'bitgoToOVC1Round2Payload.state should be 5'); const toUserRound2P2PMessages = await DklsComms.decryptAndVerifyIncomingMessages( { p2pMessages: [ @@ -504,11 +504,11 @@ describe('TSS Ecdsa MPCv2 Utils:', async function () { const userToBitgoMsg3 = userRound3AMessages.p2pMessages.find( (m) => m.from === ECDSAUtils.MPCv2PartiesEnum.USER && m.to === ECDSAUtils.MPCv2PartiesEnum.BITGO ); - assert(userToBitgoMsg3, 'userToBitgoMsg3 not found'); + assert.ok(userToBitgoMsg3, 'userToBitgoMsg3 not found'); const userToBackupMsg3 = userRound3AMessages.p2pMessages.find( (m) => m.from === ECDSAUtils.MPCv2PartiesEnum.USER && m.to === ECDSAUtils.MPCv2PartiesEnum.BACKUP ); - assert(userToBackupMsg3, 'userToBackupMsg3 not found'); + assert.ok(userToBackupMsg3, 'userToBackupMsg3 not found'); OVC1ToOVC2Round3Payload = { ...bitgoToOVC1Round2Payload, @@ -526,7 +526,7 @@ describe('TSS Ecdsa MPCv2 Utils:', async function () { // Round 3 Backup let OVC2ToOVC1Round3Payload: OVC2ToOVC1Round3Payload; { - assert(OVC1ToOVC2Round3Payload.state === 6, 'OVC1ToOVC2Round3Payload.state should be 6'); + assert.ok(OVC1ToOVC2Round3Payload.state === 6, 'OVC1ToOVC2Round3Payload.state should be 6'); const toBackupRound3P2PMessages = await DklsComms.decryptAndVerifyIncomingMessages( { p2pMessages: [ @@ -553,11 +553,11 @@ describe('TSS Ecdsa MPCv2 Utils:', async function () { const backupToBitgoMsg3 = backupRound3Messages.p2pMessages.find( (m) => m.from === ECDSAUtils.MPCv2PartiesEnum.BACKUP && m.to === ECDSAUtils.MPCv2PartiesEnum.BITGO ); - assert(backupToBitgoMsg3, 'backupToBitgoMsg3 not found'); + assert.ok(backupToBitgoMsg3, 'backupToBitgoMsg3 not found'); const backupToUserMsg3 = backupRound3Messages.p2pMessages.find( (m) => m.from === ECDSAUtils.MPCv2PartiesEnum.BACKUP && m.to === ECDSAUtils.MPCv2PartiesEnum.USER ); - assert(backupToUserMsg3, 'backupToUserMsg3 not found'); + assert.ok(backupToUserMsg3, 'backupToUserMsg3 not found'); const toBackupRound3Messages = await DklsComms.decryptAndVerifyIncomingMessages( { @@ -594,7 +594,7 @@ describe('TSS Ecdsa MPCv2 Utils:', async function () { const backupMsg4 = backupRound4BroadcastMessages.broadcastMessages.find( (m) => m.from === ECDSAUtils.MPCv2PartiesEnum.BACKUP ); - assert(backupMsg4, 'backupMsg4 not found'); + assert.ok(backupMsg4, 'backupMsg4 not found'); OVC2ToOVC1Round3Payload = { ...OVC1ToOVC2Round3Payload, @@ -613,7 +613,7 @@ describe('TSS Ecdsa MPCv2 Utils:', async function () { // Round 3B User let OVC1ToBitgoRound3BPayload: OVC1ToBitgoRound3Payload; { - assert(OVC2ToOVC1Round3Payload.state === 7, 'OVC2ToOVC1Round3Payload.state should be 7'); + assert.ok(OVC2ToOVC1Round3Payload.state === 7, 'OVC2ToOVC1Round3Payload.state should be 7'); const toUserRound4Messages = await DklsComms.decryptAndVerifyIncomingMessages( { p2pMessages: [ @@ -636,7 +636,7 @@ describe('TSS Ecdsa MPCv2 Utils:', async function () { p2pMessages: toUserRound4Messages.p2pMessages.map(DklsTypes.deserializeP2PMessage), broadcastMessages: [], }).broadcastMessages; - assert(userRound4BroadcastMessages.length === 1, 'userRound4BroadcastMessages length should be 1'); + assert.ok(userRound4BroadcastMessages.length === 1, 'userRound4BroadcastMessages length should be 1'); const userRound4Messages = await DklsComms.encryptAndAuthOutgoingMessages( DklsTypes.serializeMessages({ @@ -648,7 +648,7 @@ describe('TSS Ecdsa MPCv2 Utils:', async function () { ); const userMsg4 = userRound4Messages.broadcastMessages.find((m) => m.from === ECDSAUtils.MPCv2PartiesEnum.USER); - assert(userMsg4, 'userMsg4 not found'); + assert.ok(userMsg4, 'userMsg4 not found'); OVC1ToBitgoRound3BPayload = { ...OVC2ToOVC1Round3Payload, @@ -670,8 +670,8 @@ describe('TSS Ecdsa MPCv2 Utils:', async function () { let userCommonKeychain: string; let OVC1ToOVC2Round4Payload; { - assert(bitgoToOVC1Round3Payload.state === 9, 'bitgoToOVC1Round3Payload.state should be 9'); - assert(bitgoToOVC1Round3Payload.bitGoKeyId, 'bitgoToOVC1Round3Payload.bitGoKeyId not found'); + assert.ok(bitgoToOVC1Round3Payload.state === 9, 'bitgoToOVC1Round3Payload.state should be 9'); + assert.ok(bitgoToOVC1Round3Payload.bitGoKeyId, 'bitgoToOVC1Round3Payload.bitGoKeyId not found'); const toUserBitgoRound3Msg = await DklsComms.decryptAndVerifyIncomingMessages( { p2pMessages: [], @@ -697,7 +697,7 @@ describe('TSS Ecdsa MPCv2 Utils:', async function () { 'User and Bitgo Common keychains do not match' ); const userPrv = userPrivateMaterial.toString('base64'); - assert(userPrv, 'userPrv not found'); + assert.ok(userPrv, 'userPrv not found'); OVC1ToOVC2Round4Payload = { bitgoKeyId: bitgoToOVC1Round3Payload.bitGoKeyId, @@ -709,8 +709,8 @@ describe('TSS Ecdsa MPCv2 Utils:', async function () { // Round 4 Backup let backupCommonKeychain: string; { - assert(OVC1ToOVC2Round4Payload.state === 10, 'OVC1ToOVC2Round4Payload.state should be 10'); - assert(OVC1ToOVC2Round4Payload.bitgoKeyId, 'OVC1ToOVC2Round4Payload.bitGoKeyId not found'); + assert.ok(OVC1ToOVC2Round4Payload.state === 10, 'OVC1ToOVC2Round4Payload.state should be 10'); + assert.ok(OVC1ToOVC2Round4Payload.bitgoKeyId, 'OVC1ToOVC2Round4Payload.bitGoKeyId not found'); const toBackupBitgoRound3Msg = await DklsComms.decryptAndVerifyIncomingMessages( { @@ -737,7 +737,7 @@ describe('TSS Ecdsa MPCv2 Utils:', async function () { 'Backup and Bitgo Common keychains do not match' ); const backupPrv = backupPrivateMaterial.toString('base64'); - assert(backupPrv, 'backupPrv not found'); + assert.ok(backupPrv, 'backupPrv not found'); } // Round 4 BitGo @@ -841,7 +841,7 @@ describe('TSS Ecdsa MPCv2 Utils:', async function () { [bitgoGpgPrvKey] ); const bitgoMsg1 = bitgoMsgs1Signed.broadcastMessages.find((m) => m.from === 2); - assert(bitgoMsg1, 'bitgoMsg1 not found'); + assert.ok(bitgoMsg1, 'bitgoMsg1 not found'); const round1IncomingMsgs = await DklsComms.decryptAndVerifyIncomingMessages( { @@ -867,9 +867,9 @@ describe('TSS Ecdsa MPCv2 Utils:', async function () { const bitgoToUserMsg2 = round2SignedMessages.p2pMessages.find((m) => m.to === 0); const bitgoToBackupMsg2 = round2SignedMessages.p2pMessages.find((m) => m.to === 1); - assert(bitgoToUserMsg2, 'bitgoToUserMsg2 not found'); - assert(bitgoToBackupMsg2, 'bitgoToBackupMsg2 not found'); - assert(bitgoToUserMsg2.commitment, 'bitgoToUserMsg2.commitment not found'); + assert.ok(bitgoToUserMsg2, 'bitgoToUserMsg2 not found'); + assert.ok(bitgoToBackupMsg2, 'bitgoToBackupMsg2 not found'); + assert.ok(bitgoToUserMsg2.commitment, 'bitgoToUserMsg2.commitment not found'); storedBitgoCommitment2 = bitgoToUserMsg2?.commitment; return { @@ -935,8 +935,8 @@ describe('TSS Ecdsa MPCv2 Utils:', async function () { const bitgoToUserMsg3 = round3SignedMessages.p2pMessages.find((m) => m.to === 0); const bitgoToBackupMsg3 = round3SignedMessages.p2pMessages.find((m) => m.to === 1); - assert(bitgoToUserMsg3, 'bitgoToUserMsg3 not found'); - assert(bitgoToBackupMsg3, 'bitgoToBackupMsg3 not found'); + assert.ok(bitgoToUserMsg3, 'bitgoToUserMsg3 not found'); + assert.ok(bitgoToBackupMsg3, 'bitgoToBackupMsg3 not found'); return { sessionId, @@ -998,7 +998,7 @@ describe('TSS Ecdsa MPCv2 Utils:', async function () { [bitgoGpgPrvKey] ); const bitgoMsg4 = round4SignedMessages.broadcastMessages.find((m) => m.from === 2); - assert(bitgoMsg4, 'bitgoMsg4 not found'); + assert.ok(bitgoMsg4, 'bitgoMsg4 not found'); const round4IncomingMsgs = await DklsComms.decryptAndVerifyIncomingMessages( { diff --git a/modules/bitgo/test/v2/unit/internal/tssUtils/ecdsaMPCv2/signTxRequest.ts b/modules/bitgo/test/v2/unit/internal/tssUtils/ecdsaMPCv2/signTxRequest.ts index 9fe7614ad5..9b2a43be4e 100644 --- a/modules/bitgo/test/v2/unit/internal/tssUtils/ecdsaMPCv2/signTxRequest.ts +++ b/modules/bitgo/test/v2/unit/internal/tssUtils/ecdsaMPCv2/signTxRequest.ts @@ -22,7 +22,7 @@ import { MPCv2PartyFromStringOrNumber, } from '@bitgo/public-types'; import * as openpgp from 'openpgp'; -import * as nock from 'nock'; +import nock = require('nock'); import { TestableBG, TestBitGo } from '@bitgo/sdk-test'; import { BitGo } from '../../../../../../src'; const createKeccakHash = require('keccak'); diff --git a/modules/bitgo/test/v2/unit/internal/tssUtils/eddsa.ts b/modules/bitgo/test/v2/unit/internal/tssUtils/eddsa.ts index e93976ea68..08540a71c9 100644 --- a/modules/bitgo/test/v2/unit/internal/tssUtils/eddsa.ts +++ b/modules/bitgo/test/v2/unit/internal/tssUtils/eddsa.ts @@ -1,8 +1,8 @@ import * as sodium from 'libsodium-wrappers-sumo'; import * as _ from 'lodash'; -import * as nock from 'nock'; +import nock = require('nock'); import * as openpgp from 'openpgp'; -import * as should from 'should'; +import should = require('should'); import * as sinon from 'sinon'; import { TestableBG, TestBitGo } from '@bitgo/sdk-test'; diff --git a/modules/bitgo/test/v2/unit/keychains.ts b/modules/bitgo/test/v2/unit/keychains.ts index e2d6744328..4005e719a6 100644 --- a/modules/bitgo/test/v2/unit/keychains.ts +++ b/modules/bitgo/test/v2/unit/keychains.ts @@ -5,8 +5,8 @@ import { CoinFamily, CoinKind, coins, KeyCurve, UnderlyingAsset } from '@bitgo/statics'; import * as assert from 'assert'; import * as _ from 'lodash'; -import * as nock from 'nock'; -import * as should from 'should'; +import nock = require('nock'); +import should = require('should'); import * as sinon from 'sinon'; import { common, decodeOrElse, ECDSAUtils, EDDSAUtils, Keychains, OvcShare } from '@bitgo/sdk-core'; @@ -778,7 +778,7 @@ describe('V2 Keychains', function () { const decodedRes = decodeOrElse(OvcShare.name, OvcShare, test, (errors) => { throw new Error(`error(s) parsing parsing json: ${errors}`); }); - assert(decodedRes); + assert.ok(decodedRes); }); }); diff --git a/modules/bitgo/test/v2/unit/lightning/lightningWallets.ts b/modules/bitgo/test/v2/unit/lightning/lightningWallets.ts index 784823e29b..a0edce02f2 100644 --- a/modules/bitgo/test/v2/unit/lightning/lightningWallets.ts +++ b/modules/bitgo/test/v2/unit/lightning/lightningWallets.ts @@ -1,6 +1,6 @@ import * as assert from 'assert'; import { TestBitGo } from '@bitgo/sdk-test'; -import * as nock from 'nock'; +import nock = require('nock'); import { BaseCoin, PendingApprovalData, State, Type } from '@bitgo/sdk-core'; import { CreateInvoiceBody, @@ -435,7 +435,7 @@ describe('Lightning wallets', function () { assert.strictEqual(response.txRequestId, 'txReq123'); assert.strictEqual(response.txRequestState, 'delivered'); assert.strictEqual(response.transfer.id, transferData.id); - assert(response.paymentStatus); + assert.ok(response.paymentStatus); assert.strictEqual( response.paymentStatus.status, finalPaymentResponse.transactions[0].unsignedTx.coinSpecific.status @@ -509,7 +509,7 @@ describe('Lightning wallets', function () { const response = await wallet.payInvoice(params); assert.strictEqual(response.txRequestId, 'txReq123'); assert.strictEqual(response.txRequestState, 'pendingApproval'); - assert(response.pendingApproval); + assert.ok(response.pendingApproval); assert.strictEqual(response.paymentStatus, undefined); createTxRequestNock.done(); @@ -783,9 +783,9 @@ describe('Lightning wallets', function () { }; await assert.doesNotReject(async () => await updateWalletCoinSpecific(wallet, params)); - assert(userAuthKeyNock.isDone()); - assert(nodeAuthKeyNock.isDone()); - assert(wpWalletUpdateNock.isDone()); + assert.ok(userAuthKeyNock.isDone()); + assert.ok(nodeAuthKeyNock.isDone()); + assert.ok(wpWalletUpdateNock.isDone()); // Verify structure and required fields assert.ok(capturedBody.coinSpecific?.tlnbtc?.signedRequest, 'signedRequest should exist'); @@ -1001,7 +1001,7 @@ describe('Lightning wallets', function () { const response = await wallet.withdrawOnchain(params); assert.strictEqual(response.txRequestId, 'txReq123'); assert.strictEqual(response.txRequestState, 'pendingApproval'); - assert(response.pendingApproval); + assert.ok(response.pendingApproval); createTxRequestNock.done(); getPendingApprovalNock.done(); diff --git a/modules/bitgo/test/v2/unit/lightningWallet.ts b/modules/bitgo/test/v2/unit/lightningWallet.ts index 7d190f9551..60de4dee94 100644 --- a/modules/bitgo/test/v2/unit/lightningWallet.ts +++ b/modules/bitgo/test/v2/unit/lightningWallet.ts @@ -21,8 +21,8 @@ describe('LightningV2 Wallet:', function () { subType: 'lightningCustody', }); - assert(getLightningWallet(lnbtcWallet), 'lnbtc wallet should support lightningV2'); - assert(getLightningWallet(tlntcWallet), 'tlnbtc wallet should support lightningV2'); + assert.ok(getLightningWallet(lnbtcWallet), 'lnbtc wallet should support lightningV2'); + assert.ok(getLightningWallet(tlntcWallet), 'tlnbtc wallet should support lightningV2'); }); it('should throw error when creating lightningV2 wallet for unsupported coins', function () { diff --git a/modules/bitgo/test/v2/unit/mmi.ts b/modules/bitgo/test/v2/unit/mmi.ts index 7eca972c9b..5ce3ed1e06 100644 --- a/modules/bitgo/test/v2/unit/mmi.ts +++ b/modules/bitgo/test/v2/unit/mmi.ts @@ -1,7 +1,7 @@ import { TestBitGo } from '@bitgo/sdk-test'; import { BitGo } from '../../../src/bitgo'; -import * as nock from 'nock'; +import nock = require('nock'); import { bip32 } from '@bitgo/utxo-lib'; import { common, TransactionType } from '@bitgo/sdk-core'; import { AvaxC as AvaxCAccountLib, getBuilder } from '../../../../account-lib'; diff --git a/modules/bitgo/test/v2/unit/pendingApproval.ts b/modules/bitgo/test/v2/unit/pendingApproval.ts index 515eca0d93..5f0bf0abdf 100644 --- a/modules/bitgo/test/v2/unit/pendingApproval.ts +++ b/modules/bitgo/test/v2/unit/pendingApproval.ts @@ -2,7 +2,7 @@ * @prettier */ import 'should'; -import * as nock from 'nock'; +import nock = require('nock'); import * as sinon from 'sinon'; import { TestableBG, TestBitGo } from '@bitgo/sdk-test'; import { BitGo } from '../../../src'; diff --git a/modules/bitgo/test/v2/unit/recovery.ts b/modules/bitgo/test/v2/unit/recovery.ts index cdf707b535..10bacabdd4 100644 --- a/modules/bitgo/test/v2/unit/recovery.ts +++ b/modules/bitgo/test/v2/unit/recovery.ts @@ -1,5 +1,5 @@ -import * as should from 'should'; -import * as nock from 'nock'; +import should = require('should'); +import nock = require('nock'); import { mockSerializedChallengeWithProofs, TestBitGo } from '@bitgo/sdk-test'; import { BitGo } from '../../../src'; diff --git a/modules/bitgo/test/v2/unit/seedValidator.ts b/modules/bitgo/test/v2/unit/seedValidator.ts index 4486b355cc..b11bf8bbd2 100644 --- a/modules/bitgo/test/v2/unit/seedValidator.ts +++ b/modules/bitgo/test/v2/unit/seedValidator.ts @@ -1,6 +1,6 @@ import 'should'; -import * as nock from 'nock'; +import nock = require('nock'); import { TestBitGo } from '@bitgo/sdk-test'; import { BitGo } from '../../../src/bitgo'; diff --git a/modules/bitgo/test/v2/unit/staking/goStakingWalletCommon.ts b/modules/bitgo/test/v2/unit/staking/goStakingWalletCommon.ts index 5493baf1ba..302f7f88ce 100644 --- a/modules/bitgo/test/v2/unit/staking/goStakingWalletCommon.ts +++ b/modules/bitgo/test/v2/unit/staking/goStakingWalletCommon.ts @@ -1,5 +1,5 @@ -import * as nock from 'nock'; -import * as should from 'should'; +import nock = require('nock'); +import should = require('should'); import fixtures from '../../fixtures/staking/goStakingWallet'; import { Enterprise, Environments, GoStakingWallet, Wallet } from '@bitgo/sdk-core'; diff --git a/modules/bitgo/test/v2/unit/staking/stakingWalletCommon.ts b/modules/bitgo/test/v2/unit/staking/stakingWalletCommon.ts index 8cf8bfe034..80ddab3997 100644 --- a/modules/bitgo/test/v2/unit/staking/stakingWalletCommon.ts +++ b/modules/bitgo/test/v2/unit/staking/stakingWalletCommon.ts @@ -1,5 +1,5 @@ -import * as nock from 'nock'; -import * as should from 'should'; +import nock = require('nock'); +import should = require('should'); import fixtures from '../../fixtures/staking/stakingWallet'; import { Enterprise, Environments, StakingRequest, StakingWallet, TssUtils, Wallet } from '@bitgo/sdk-core'; diff --git a/modules/bitgo/test/v2/unit/staking/stakingWalletNonTSS.ts b/modules/bitgo/test/v2/unit/staking/stakingWalletNonTSS.ts index 44779f7f7d..0d8d6316c1 100644 --- a/modules/bitgo/test/v2/unit/staking/stakingWalletNonTSS.ts +++ b/modules/bitgo/test/v2/unit/staking/stakingWalletNonTSS.ts @@ -1,6 +1,6 @@ import * as _ from 'lodash'; -import * as nock from 'nock'; +import nock = require('nock'); import fixtures from '../../fixtures/staking/stakingWallet'; import { Enterprise, Environments, Keychain, Keychains, StakingWallet, Wallet } from '@bitgo/sdk-core'; diff --git a/modules/bitgo/test/v2/unit/staking/stakingWalletTSS.ts b/modules/bitgo/test/v2/unit/staking/stakingWalletTSS.ts index 99d39b5be1..d562c7f7ed 100644 --- a/modules/bitgo/test/v2/unit/staking/stakingWalletTSS.ts +++ b/modules/bitgo/test/v2/unit/staking/stakingWalletTSS.ts @@ -1,6 +1,6 @@ import * as _ from 'lodash'; -import * as nock from 'nock'; +import nock = require('nock'); import fixtures from '../../fixtures/staking/stakingWallet'; import { Enterprise, Environments, Keychain, Keychains, StakingWallet, TssUtils, Wallet } from '@bitgo/sdk-core'; diff --git a/modules/bitgo/test/v2/unit/sweep.ts b/modules/bitgo/test/v2/unit/sweep.ts index db07e991d7..8080ec6d6a 100644 --- a/modules/bitgo/test/v2/unit/sweep.ts +++ b/modules/bitgo/test/v2/unit/sweep.ts @@ -1,4 +1,4 @@ -import * as nock from 'nock'; +import nock = require('nock'); import { Environments, Wallet } from '@bitgo/sdk-core'; import { TestableBG, TestBitGo } from '@bitgo/sdk-test'; diff --git a/modules/bitgo/test/v2/unit/tss/ecdsa.ts b/modules/bitgo/test/v2/unit/tss/ecdsa.ts index 270315778e..66e26f9491 100644 --- a/modules/bitgo/test/v2/unit/tss/ecdsa.ts +++ b/modules/bitgo/test/v2/unit/tss/ecdsa.ts @@ -12,7 +12,7 @@ import { } from '@bitgo/sdk-core'; import { EcdsaTypes, EcdsaPaillierProof } from '@bitgo/sdk-lib-mpc'; import * as openpgp from 'openpgp'; -import * as should from 'should'; +import should = require('should'); import { mockSerializedChallengeWithProofs, TestBitGo } from '@bitgo/sdk-test'; import { BitGo } from '../../../../src'; import { nockGetTxRequest, nockSendSignatureShare } from './helpers'; diff --git a/modules/bitgo/test/v2/unit/tss/eddsa.ts b/modules/bitgo/test/v2/unit/tss/eddsa.ts index fb52d1ea8d..1fadbaff89 100644 --- a/modules/bitgo/test/v2/unit/tss/eddsa.ts +++ b/modules/bitgo/test/v2/unit/tss/eddsa.ts @@ -22,7 +22,7 @@ import { RequestTracer, } from '@bitgo/sdk-core'; import * as openpgp from 'openpgp'; -import * as should from 'should'; +import should = require('should'); import * as _ from 'lodash'; import { TestBitGo } from '@bitgo/sdk-test'; import { BitGo } from '../../../../src/bitgo'; diff --git a/modules/bitgo/test/v2/unit/tss/helpers.ts b/modules/bitgo/test/v2/unit/tss/helpers.ts index e21ec5e0b1..4ecfad415c 100644 --- a/modules/bitgo/test/v2/unit/tss/helpers.ts +++ b/modules/bitgo/test/v2/unit/tss/helpers.ts @@ -1,7 +1,7 @@ import * as openpgp from 'openpgp'; import { createSharedDataProof, SignatureShareRecord } from '@bitgo/sdk-core'; import { getRoute } from '../internal/tssUtils/common'; -import * as nock from 'nock'; +import nock = require('nock'); export async function nockSendSignatureShare( params: { diff --git a/modules/bitgo/test/v2/unit/unspents.ts b/modules/bitgo/test/v2/unit/unspents.ts index f37e295eee..5d6b707143 100644 --- a/modules/bitgo/test/v2/unit/unspents.ts +++ b/modules/bitgo/test/v2/unit/unspents.ts @@ -1,4 +1,4 @@ -import * as nock from 'nock'; +import nock = require('nock'); import * as sinon from 'sinon'; import { common, Wallet } from '@bitgo/sdk-core'; import { TestBitGo } from '@bitgo/sdk-test'; diff --git a/modules/bitgo/test/v2/unit/wallet.ts b/modules/bitgo/test/v2/unit/wallet.ts index 225e1a73a6..dac5cd6fa6 100644 --- a/modules/bitgo/test/v2/unit/wallet.ts +++ b/modules/bitgo/test/v2/unit/wallet.ts @@ -2,10 +2,10 @@ // Tests for Wallet // -import * as should from 'should'; +import should = require('should'); import * as sinon from 'sinon'; import '../lib/asserts'; -import * as nock from 'nock'; +import nock = require('nock'); import * as _ from 'lodash'; import { diff --git a/modules/bitgo/test/v2/unit/wallets.ts b/modules/bitgo/test/v2/unit/wallets.ts index 8a086fa6ec..b08e11bb1f 100644 --- a/modules/bitgo/test/v2/unit/wallets.ts +++ b/modules/bitgo/test/v2/unit/wallets.ts @@ -2,9 +2,9 @@ // Tests for Wallets // import * as assert from 'assert'; -import * as nock from 'nock'; +import nock = require('nock'); import * as sinon from 'sinon'; -import * as should from 'should'; +import should = require('should'); import * as _ from 'lodash'; import * as utxoLib from '@bitgo/utxo-lib'; import { TestBitGo } from '@bitgo/sdk-test'; @@ -2759,7 +2759,7 @@ describe('V2 Wallets:', function () { assert.strictEqual(result.shares[0].id, 'userId', 'The share ID should match'); assert.strictEqual(result.shares[0].coin, walletData.coin, 'The coin should match'); assert.strictEqual(result.shares[0].wallet, walletData.id, 'The wallet ID should match'); - assert(result.shares[0].keychain); + assert.ok(result.shares[0].keychain); assert.strictEqual(result.shares[0].keychain.pub, 'dummyPub', 'The keychain pub should match'); assert.strictEqual(result.shares[0].permissions.includes('view'), true, 'The permissions should include "view"'); assert.strictEqual( @@ -2826,7 +2826,7 @@ describe('V2 Wallets:', function () { } as BulkWalletShareOptions); assert.fail('Expected error not thrown'); } catch (error) { - assert(error instanceof NeedUserSignupError); + assert.ok(error instanceof NeedUserSignupError); assert.strictEqual(error.name, 'NeedUserSignupError'); assert.strictEqual(error.message, userId); } @@ -2870,7 +2870,7 @@ describe('V2 Wallets:', function () { }); assert.fail('Expected error not thrown'); } catch (error) { - assert(error instanceof NeedUserSignupError); + assert.ok(error instanceof NeedUserSignupError); assert.strictEqual(error.name, 'NeedUserSignupError'); assert.strictEqual(error.message, userId); } @@ -2999,7 +2999,7 @@ describe('V2 Wallets:', function () { await wallet.createBulkWalletShare(params); assert.fail('Expected error not thrown'); } catch (error) { - assert(error instanceof IncorrectPasswordError); + assert.ok(error instanceof IncorrectPasswordError); assert.equal(error.message, 'Password shared is incorrect for this wallet'); } }); From aad6d6009cd8e8ee1b4f594256dacab54f5fe3d9 Mon Sep 17 00:00:00 2001 From: Zahin Mohammad Date: Thu, 21 Aug 2025 18:52:51 -0400 Subject: [PATCH 10/14] fix(express): replace sinon stubs with proxyquire for ESM compatibility MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace sinon.stub() with proxyquire for mocking clientRoutes module imports. This fixes tests now that we use tsx which runs in ESM mode - ES modules are immutable and cannot be modified at runtime, preventing sinon from stubbing them. Proxyquire works by intercepting module resolution at the CommonJS level. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude TICKET: WP-5599 --- modules/express/src/clientRoutes.ts | 4 +- modules/express/src/expressApp.ts | 10 +- modules/express/test/unit/bitgoExpress.ts | 118 ++++++----- .../test/unit/clientRoutes/externalSign.ts | 18 +- .../lightning/lightningSignerRoutes.ts | 2 +- modules/express/test/unit/config.ts | 190 ++++++++++++------ .../lightning/lightningInvoiceRoutes.test.ts | 4 +- .../lightning/lightningWalletRoutes.test.ts | 2 +- .../lightning/lightningWithdrawRoutes.test.ts | 2 +- 9 files changed, 220 insertions(+), 130 deletions(-) diff --git a/modules/express/src/clientRoutes.ts b/modules/express/src/clientRoutes.ts index f36aa35ef5..3202623081 100755 --- a/modules/express/src/clientRoutes.ts +++ b/modules/express/src/clientRoutes.ts @@ -32,8 +32,8 @@ import { } from '@bitgo/sdk-core'; import { BitGo, BitGoOptions, Coin, CustomSigningFunction, SignedTransaction, SignedTransactionRequest } from 'bitgo'; import * as bodyParser from 'body-parser'; -import * as debugLib from 'debug'; -import * as express from 'express'; +import debugLib from 'debug'; +import express from 'express'; import type { ParamsDictionary } from 'express-serve-static-core'; import * as _ from 'lodash'; import * as url from 'url'; diff --git a/modules/express/src/expressApp.ts b/modules/express/src/expressApp.ts index 81938d4586..2914626f24 100644 --- a/modules/express/src/expressApp.ts +++ b/modules/express/src/expressApp.ts @@ -1,16 +1,16 @@ /** * @prettier */ -import * as express from 'express'; +import express from 'express'; import * as path from 'path'; import * as _ from 'lodash'; -import * as debugLib from 'debug'; +import debugLib from 'debug'; import * as https from 'https'; import * as http from 'http'; -import * as morgan from 'morgan'; +import morgan, { token as morganToken } from 'morgan'; import * as fs from 'fs'; import type { Request as StaticRequest } from 'express-serve-static-core'; -import * as timeout from 'connect-timeout'; +import timeout from 'connect-timeout'; import * as bodyParser from 'body-parser'; import { Config, config } from './config'; @@ -51,7 +51,7 @@ function setupLogging(app: express.Application, config: Config): void { } app.use(middleware); - morgan.token('remote-user', function (req: StaticRequest) { + morganToken('remote-user', function (req: StaticRequest) { return req.isProxy ? 'proxy' : 'local_express'; }); } diff --git a/modules/express/test/unit/bitgoExpress.ts b/modules/express/test/unit/bitgoExpress.ts index 24fc1f94af..fc9cdbd06b 100644 --- a/modules/express/test/unit/bitgoExpress.ts +++ b/modules/express/test/unit/bitgoExpress.ts @@ -1,25 +1,28 @@ -import * as should from 'should'; +import should from 'should'; import 'should-http'; import 'should-sinon'; import '../lib/asserts'; -import * as nock from 'nock'; import * as sinon from 'sinon'; +import * as nock from 'nock'; +import proxyquire from 'proxyquire'; -import * as fs from 'fs'; -import * as http from 'http'; -import * as https from 'https'; -import * as debugLib from 'debug'; -import * as path from 'path'; +import debugLib from 'debug'; import { Environments } from 'bitgo'; import { SSL_OP_NO_TLSv1 } from 'constants'; import { TlsConfigurationError, NodeEnvironmentError } from '../../src/errors'; -nock.disableNetConnect(); - import { app as expressApp, startup, createServer, createBaseUri, prepareIpc } from '../../src/expressApp'; -import * as clientRoutes from '../../src/clientRoutes'; + +// commonJS imports to allow stubbing +const path = require('path'); +const http = require('http'); +const https = require('https'); +const fs = require('fs'); + +nock.disableNetConnect(); +proxyquire.noPreserveCache(); describe('Bitgo Express', function () { describe('server initialization', function () { @@ -371,7 +374,7 @@ describe('Bitgo Express', function () { }); it('should remove the socket before binding if IPC socket exists and is a socket', async () => { - const statStub = sinon.stub(fs, 'statSync').returns({ isSocket: () => true } as unknown as fs.Stats); + const statStub = sinon.stub(fs, 'statSync').returns({ isSocket: () => true }); const unlinkStub = sinon.stub(fs, 'unlinkSync'); await prepareIpc('testipc').should.be.resolved(); unlinkStub.calledWithExactly('testipc').should.be.true(); @@ -381,7 +384,7 @@ describe('Bitgo Express', function () { }); it('should fail if IPC socket is not actually a socket', async () => { - const statStub = sinon.stub(fs, 'statSync').returns({ isSocket: () => false } as unknown as fs.Stats); + const statStub = sinon.stub(fs, 'statSync').returns({ isSocket: () => false }); const unlinkStub = sinon.stub(fs, 'unlinkSync'); await prepareIpc('testipc').should.be.rejectedWith(/IPC socket is not actually a socket/); unlinkStub.notCalled.should.be.true(); @@ -404,58 +407,81 @@ describe('Bitgo Express', function () { }); it('should only call setupAPIRoutes when running in regular mode', () => { + const setupAPIRoutesStub = sinon.stub(); + const setupSigningRoutesStub = sinon.stub(); + + const { app } = proxyquire('../../src/expressApp', { + './clientRoutes': { + setupAPIRoutes: setupAPIRoutesStub, + setupSigningRoutes: setupSigningRoutesStub, + setupLightningSignerNodeRoutes: sinon.stub(), + }, + }); + const args: any = { env: 'test', signerMode: undefined, }; - const apiStub = sinon.stub(clientRoutes, 'setupAPIRoutes'); - const signerStub = sinon.stub(clientRoutes, 'setupSigningRoutes'); - - expressApp(args); - apiStub.should.have.been.calledOnce(); - signerStub.called.should.be.false(); - apiStub.restore(); - signerStub.restore(); + app(args); + setupAPIRoutesStub.should.have.been.calledOnce(); + setupSigningRoutesStub.called.should.be.false(); }); it('should only call setupLightningSignerNodeRoutes when running with lightningSignerFileSystemPath', () => { + const setupAPIRoutesStub = sinon.stub(); + const setupSigningRoutesStub = sinon.stub(); + const setupLightningSignerNodeRoutesStub = sinon.stub(); + const { app } = proxyquire('../../src/expressApp', { + './clientRoutes': { + setupAPIRoutes: setupAPIRoutesStub, + setupSigningRoutes: setupSigningRoutesStub, + setupLightningSignerNodeRoutes: setupLightningSignerNodeRoutesStub, + }, + fs: { + readFileSync: () => { + return validLightningSignerConfigJSON; + }, + }, + }); + const args: any = { env: 'test', lightningSignerFileSystemPath: 'lightningSignerFileSystemPath', }; - const readValidStub = sinon.stub(fs, 'readFileSync').returns(validLightningSignerConfigJSON); - const lightningSignerStub = sinon.stub(clientRoutes, 'setupLightningSignerNodeRoutes'); - const apiStub = sinon.stub(clientRoutes, 'setupAPIRoutes'); - const signerStub = sinon.stub(clientRoutes, 'setupSigningRoutes'); - - expressApp(args); - lightningSignerStub.should.have.been.calledOnce(); - apiStub.should.have.been.calledOnce(); - signerStub.called.should.be.false(); - apiStub.restore(); - signerStub.restore(); - readValidStub.restore(); + app(args); + setupLightningSignerNodeRoutesStub.should.have.been.calledOnce(); + setupAPIRoutesStub.should.have.been.calledOnce(); + setupSigningRoutesStub.called.should.be.false(); }); it('should only call setupSigningRoutes when running in signer mode', () => { + const setupAPIRoutesStub = sinon.stub(); + const setupSigningRoutesStub = sinon.stub(); + + const { app } = proxyquire('../../src/expressApp', { + './clientRoutes': { + setupAPIRoutes: setupAPIRoutesStub, + setupSigningRoutes: setupSigningRoutesStub, + setupLightningSignerNodeRoutes: sinon.stub(), + }, + fs: { + readFileSync: () => { + return validPrvJSON; + }, + }, + }); + const args: any = { env: 'test', signerMode: 'signerMode', signerFileSystemPath: 'signerFileSystemPath', }; - const apiStub = sinon.stub(clientRoutes, 'setupAPIRoutes'); - const signerStub = sinon.stub(clientRoutes, 'setupSigningRoutes'); - const readFileStub = sinon.stub(fs, 'readFileSync').returns(validPrvJSON); - - expressApp(args); - signerStub.should.have.been.calledOnce(); - apiStub.called.should.be.false(); - apiStub.restore(); - signerStub.restore(); - readFileStub.restore(); + app(args); + setupSigningRoutesStub.should.have.been.calledOnce(); + setupAPIRoutesStub.called.should.be.false(); }); it('should require a signerFileSystemPath and signerMode are both set when running in signer mode', function () { @@ -555,7 +581,7 @@ describe('Bitgo Express', function () { it('should set keepAliveTimeout and headersTimeout if specified in config for HTTP server', async function () { const createServerStub = sinon.stub(http, 'createServer').callsFake(() => { - return { listen: sinon.stub(), setTimeout: sinon.stub() } as unknown as http.Server; + return { listen: sinon.stub(), setTimeout: sinon.stub() }; }); const args: any = { @@ -575,7 +601,7 @@ describe('Bitgo Express', function () { it('should set keepAliveTimeout and headersTimeout if specified in config for HTTPS server', async function () { const createServerStub = sinon.stub(https, 'createServer').callsFake(() => { - return { listen: sinon.stub(), setTimeout: sinon.stub() } as unknown as https.Server; + return { listen: sinon.stub(), setTimeout: sinon.stub() }; }); const args: any = { @@ -597,7 +623,7 @@ describe('Bitgo Express', function () { it('should not set keepAliveTimeout and headersTimeout if not specified in config for HTTP server', async function () { const createServerStub = sinon.stub(http, 'createServer').callsFake(() => { - return { listen: sinon.stub(), setTimeout: sinon.stub() } as unknown as http.Server; + return { listen: sinon.stub(), setTimeout: sinon.stub() }; }); const args: any = { @@ -616,7 +642,7 @@ describe('Bitgo Express', function () { it('should not set keepAliveTimeout and headersTimeout if not specified in config for HTTPS server', async function () { const createServerStub = sinon.stub(https, 'createServer').callsFake(() => { - return { listen: sinon.stub(), setTimeout: sinon.stub() } as unknown as https.Server; + return { listen: sinon.stub(), setTimeout: sinon.stub() }; }); const args: any = { diff --git a/modules/express/test/unit/clientRoutes/externalSign.ts b/modules/express/test/unit/clientRoutes/externalSign.ts index 077c08ba05..bb73a55edc 100644 --- a/modules/express/test/unit/clientRoutes/externalSign.ts +++ b/modules/express/test/unit/clientRoutes/externalSign.ts @@ -35,7 +35,7 @@ import { MPCv2SignatureShareRound3Input, } from '@bitgo/public-types'; import * as assert from 'assert'; -import * as nock from 'nock'; +import nock from 'nock'; import * as fs from 'fs'; import * as express from 'express'; @@ -504,7 +504,7 @@ describe('External signer', () => { const walletPassphrase = 'testPass'; const [userShare, backupShare, bitgoShare] = await DklsUtils.generateDKGKeyShares(); - assert(backupShare, 'backupShare is not defined'); + assert.ok(backupShare, 'backupShare is not defined'); const bgTest = new BitGo({ env: 'test' }); const userKeyShare = userShare.getKeyShare().toString('base64'); @@ -555,7 +555,7 @@ describe('External signer', () => { round1Result.signatureShareRound1, round1Result.userGpgPubKey ); - assert( + assert.ok( txRequestRound1.transactions && txRequestRound1.transactions.length === 1 && txRequestRound1.transactions[0].signatureShares.length === 2, @@ -589,7 +589,7 @@ describe('External signer', () => { round2Result.signatureShareRound2, round1Result.userGpgPubKey ); - assert( + assert.ok( txRequestRound2.transactions && txRequestRound2.transactions.length === 1 && txRequestRound2.transactions[0].signatureShares.length === 4, @@ -623,7 +623,7 @@ describe('External signer', () => { ); // signature generation and validation - assert(userMsg4.data.msg4.signatureR === bitgoMsg4.signatureR, 'User and BitGo signaturesR do not match'); + assert.ok(userMsg4.data.msg4.signatureR === bitgoMsg4.signatureR, 'User and BitGo signaturesR do not match'); const deserializedBitgoMsg4 = DklsTypes.deserializeMessages({ p2pMessages: [], @@ -652,8 +652,8 @@ describe('External signer', () => { derivationPath, createKeccakHash('keccak256') as Hash ); - assert(convertedSignature, 'Signature is not valid'); - assert(convertedSignature.split(':').length === 4, 'Signature is not valid'); + assert.ok(convertedSignature, 'Signature is not valid'); + assert.ok(convertedSignature.split(':').length === 4, 'Signature is not valid'); readFileStub.restore(); envStub.restore(); }); @@ -710,7 +710,7 @@ async function signBitgoMPCv2Round1( userShare: SignatureShareRecord, userGPGPubKey: string ): Promise { - assert( + assert.ok( txRequest.transactions && txRequest.transactions.length === 1, 'txRequest.transactions is not an array of length 1' ); @@ -772,7 +772,7 @@ async function signBitgoMPCv2Round2( userShare: SignatureShareRecord, userGPGPubKey: string ): Promise<{ txRequest: TxRequest; bitgoMsg4: DklsTypes.SerializedBroadcastMessage }> { - assert( + assert.ok( txRequest.transactions && txRequest.transactions.length === 1, 'txRequest.transactions is not an array of length 1' ); diff --git a/modules/express/test/unit/clientRoutes/lightning/lightningSignerRoutes.ts b/modules/express/test/unit/clientRoutes/lightning/lightningSignerRoutes.ts index b91fbc5c07..2f0c5dc2d9 100644 --- a/modules/express/test/unit/clientRoutes/lightning/lightningSignerRoutes.ts +++ b/modules/express/test/unit/clientRoutes/lightning/lightningSignerRoutes.ts @@ -1,7 +1,7 @@ import { TestBitGo, TestBitGoAPI } from '@bitgo/sdk-test'; import { BitGo } from 'bitgo'; import { common } from '@bitgo/sdk-core'; -import * as nock from 'nock'; +import nock from 'nock'; import * as express from 'express'; import * as sinon from 'sinon'; import * as fs from 'fs'; diff --git a/modules/express/test/unit/config.ts b/modules/express/test/unit/config.ts index 8a190d1d43..70fa45ffdb 100644 --- a/modules/express/test/unit/config.ts +++ b/modules/express/test/unit/config.ts @@ -5,92 +5,106 @@ import * as should from 'should'; import * as sinon from 'sinon'; -import { config, DefaultConfig } from '../../src/config'; +import { DefaultConfig } from '../../src/config'; import * as args from '../../src/args'; +import proxyquire from 'proxyquire'; describe('Config:', () => { it('should take command line config options', () => { - const argStub = sinon.stub(args, 'args').returns({ port: 12345 }); - config().port.should.equal(12345); - argStub.restore(); + const { config: proxyConfig } = proxyquire('../../src/config', { + './args': { + args: () => { + return { + port: 12345, + }; + }, + }, + }); + proxyConfig().port.should.equal(12345); }); it('should take environment variable config options', () => { - const argStub = sinon.stub(args, 'args').returns({}); const envStub = sinon.stub(process, 'env').value({ BITGO_PORT: '12345' }); - config().port.should.equal(12345); - argStub.restore(); + const { config: proxyConfig } = proxyquire('../../src/config', { + './args': { + args: () => { + return {}; + }, + }, + }); + proxyConfig().port.should.equal(12345); envStub.restore(); }); it('should fall back to default config options', () => { - const argStub = sinon.stub(args, 'args').returns({}); - config().port.should.equal(DefaultConfig.port); - argStub.restore(); + const { config: proxyConfig } = proxyquire('../../src/config', { + './args': { + args: () => { + return {}; + }, + }, + }); + proxyConfig().port.should.equal(DefaultConfig.port); }); it('should correctly handle config precedence', () => { - const argStub = sinon.stub(args, 'args').returns({ port: 23456 }); const envStub = sinon.stub(process, 'env').value({ BITGO_PORT: '12345' }); - config().port.should.equal(23456); - argStub.restore(); + const { config: proxyConfig } = proxyquire('../../src/config', { + './args': { + args: () => { + return { port: 23456 }; + }, + }, + }); + proxyConfig().port.should.equal(23456); envStub.restore(); }); it('should transform urls to secure urls when disableSSL is undefined', () => { - const argStub = sinon.stub(args, 'args').returns({ disableSSL: undefined, customrooturi: 'test.com' }); const envStub = sinon .stub(process, 'env') .value({ BITGO_DISABLE_SSL: undefined, BITGO_CUSTOM_ROOT_URI: 'test.com' }); - config().disableSSL.should.equal(false); - config().should.have.property('customRootUri', 'https://test.com'); - argStub.restore(); + const { config: proxyConfig } = proxyquire('../../src/config', { + './args': { + args: () => { + return { disableSSL: undefined, customrooturi: 'test.com' }; + }, + }, + }); + proxyConfig().disableSSL.should.equal(false); + proxyConfig().should.have.property('customRootUri', 'https://test.com'); envStub.restore(); }); it('should transform urls to secure urls when disableSSL is false', () => { - const argStub = sinon.stub(args, 'args').returns({ disableSSL: false, customrooturi: 'test.com' }); const envStub = sinon.stub(process, 'env').value({ BITGO_DISABLE_SSL: false, BITGO_CUSTOM_ROOT_URI: 'test.com' }); - config().disableSSL.should.equal(false); - config().should.have.property('customRootUri', 'https://test.com'); - argStub.restore(); + const { config: proxyConfig } = proxyquire('../../src/config', { + './args': { + args: () => { + return { disableSSL: false, customrooturi: 'test.com' }; + }, + }, + }); + proxyConfig().disableSSL.should.equal(false); + proxyConfig().should.have.property('customRootUri', 'https://test.com'); envStub.restore(); }); it('should not transform urls to secure urls when disableSSL is true', () => { - const argStub = sinon.stub(args, 'args').returns({ disableSSL: true, customrooturi: 'test.com' }); const envStub = sinon.stub(process, 'env').value({ BITGO_DISABLE_SSL: true, BITGO_CUSTOM_ROOT_URI: 'test.com' }); - config().disableSSL.should.equal(true); - config().should.have.property('customRootUri', 'test.com'); - argStub.restore(); + const { config: proxyConfig } = proxyquire('../../src/config', { + './args': { + args: () => { + return { disableSSL: true, customrooturi: 'test.com' }; + }, + }, + }); + proxyConfig().disableSSL.should.equal(true); + proxyConfig().should.have.property('customRootUri', 'test.com'); envStub.restore(); }); it('should correctly handle config precedence for a complete config', () => { - const argStub = sinon.stub(args, 'args').returns({ - port: 23456, - bind: 'argbind', - ipc: 'argipc', - env: 'argenv', - debugnamespace: 'argdebug', - keypath: 'argkeypath', - crtpath: 'argcrtpath', - logfile: 'arglogfile', - disablessl: 'argdisableSSL', - disableproxy: 'argdisableProxy', - disableenvcheck: 'argdisableEnvCheck', - timeout: 'argtimeout', - customrooturi: 'argcustomRootUri', - custombitcoinnetwork: 'argcustomBitcoinNetwork', - externalSignerUrl: 'argexternalSignerUrl', - enclavedExpressUrl: 'argenclavedExpressUrl', - enclavedExpressSSLCert: 'argenclavedExpressSSLCert', - signerMode: 'argsignerMode', - signerFileSystemPath: 'argsignerFileSystemPath', - lightningSignerFileSystemPath: 'arglightningSignerFileSystemPath', - keepalivetimeout: 'argkeepalivetimeout', - headerstimeout: 'argheaderstimeout', - }); const envStub = sinon.stub(process, 'env').value({ BITGO_PORT: 'env12345', BITGO_BIND: 'envbind', @@ -117,7 +131,38 @@ describe('Config:', () => { BITGO_KEEP_ALIVE_TIMETOUT: 'envkeepalivetimeout', BITGO_HEADERS_TIMETOUT: 'envheaderstimeout', }); - config().should.eql({ + + const { config: proxyConfig } = proxyquire('../../src/config', { + './args': { + args: () => { + return { + port: 23456, + bind: 'argbind', + ipc: 'argipc', + env: 'argenv', + debugnamespace: 'argdebug', + keypath: 'argkeypath', + crtpath: 'argcrtpath', + logfile: 'arglogfile', + disablessl: 'argdisableSSL', + disableproxy: 'argdisableProxy', + disableenvcheck: 'argdisableEnvCheck', + timeout: 'argtimeout', + customrooturi: 'argcustomRootUri', + custombitcoinnetwork: 'argcustomBitcoinNetwork', + externalSignerUrl: 'argexternalSignerUrl', + enclavedExpressUrl: 'argenclavedExpressUrl', + enclavedExpressSSLCert: 'argenclavedExpressSSLCert', + signerMode: 'argsignerMode', + signerFileSystemPath: 'argsignerFileSystemPath', + lightningSignerFileSystemPath: 'arglightningSignerFileSystemPath', + keepalivetimeout: 'argkeepalivetimeout', + headerstimeout: 'argheaderstimeout', + }; + }, + }, + }); + proxyConfig().should.eql({ port: 23456, bind: 'argbind', ipc: 'argipc', @@ -144,15 +189,19 @@ describe('Config:', () => { keepAliveTimeout: 'argkeepalivetimeout', headersTimeout: 'argheaderstimeout', }); - argStub.restore(); envStub.restore(); }); it('should correctly handle boolean config precedence', () => { - const argStub = sinon.stub(args, 'args').returns({ disablessl: true }); const envStub = sinon.stub(process, 'env').value({ BITGO_DISABLE_SSL: undefined }); - config().disableSSL.should.equal(true); - argStub.restore(); + const { config: proxyConfig } = proxyquire('../../src/config', { + './args': { + args: () => { + return { disablessl: true }; + }, + }, + }); + proxyConfig().disableSSL.should.equal(true); envStub.restore(); }); @@ -165,11 +214,16 @@ describe('Config:', () => { ]; for (const { deprecated, ...form } of optionForms) { - const argStub = sinon.stub(args, 'args').returns({}); const envStub = sinon.stub(process, 'env').value(form); const consoleStub = sinon.stub(console, 'warn').returns(undefined); - config().disableSSL.should.equal(true); - argStub.restore(); + const { config: proxyConfig } = proxyquire('../../src/config', { + './args': { + args: () => { + return {}; + }, + }, + }); + proxyConfig().disableSSL.should.equal(true); envStub.restore(); consoleStub.restore(); if (deprecated) { @@ -182,11 +236,16 @@ describe('Config:', () => { const optionForms = [{ deprecated: true, DISABLE_PROXY: true }, { BITGO_DISABLE_PROXY: true }]; for (const { deprecated = false, ...form } of optionForms) { - const argStub = sinon.stub(args, 'args').returns({}); const envStub = sinon.stub(process, 'env').value(form); const consoleStub = sinon.stub(console, 'warn').returns(undefined); - config().disableProxy.should.equal(true); - argStub.restore(); + const { config: proxyConfig } = proxyquire('../../src/config', { + './args': { + args: () => { + return {}; + }, + }, + }); + proxyConfig().disableProxy.should.equal(true); envStub.restore(); consoleStub.restore(); if (deprecated) { @@ -199,11 +258,16 @@ describe('Config:', () => { const optionForms = [{ BITGO_DISABLE_ENV_CHECK: true }, { deprecated: true, DISABLE_ENV_CHECK: true }]; for (const { deprecated = false, ...form } of optionForms) { - const argStub = sinon.stub(args, 'args').returns({}); const envStub = sinon.stub(process, 'env').value(form); const consoleStub = sinon.stub(console, 'warn').returns(undefined); - config().disableEnvCheck.should.equal(true); - argStub.restore(); + const { config: proxyConfig } = proxyquire('../../src/config', { + './args': { + args: () => { + return {}; + }, + }, + }); + proxyConfig().disableEnvCheck.should.equal(true); envStub.restore(); consoleStub.restore(); if (deprecated) { diff --git a/modules/express/test/unit/lightning/lightningInvoiceRoutes.test.ts b/modules/express/test/unit/lightning/lightningInvoiceRoutes.test.ts index 05234d7863..0a382a3364 100644 --- a/modules/express/test/unit/lightning/lightningInvoiceRoutes.test.ts +++ b/modules/express/test/unit/lightning/lightningInvoiceRoutes.test.ts @@ -1,5 +1,5 @@ import * as sinon from 'sinon'; -import * as should from 'should'; +import should from 'should'; import * as express from 'express'; import { handlePayLightningInvoice, handleCreateLightningInvoice } from '../../../src/lightning/lightningInvoiceRoutes'; import { Invoice, PayInvoiceResponse } from '@bitgo/abstract-lightning'; @@ -73,7 +73,7 @@ describe('Lightning Invoice Routes', () => { should(result).deepEqual(Invoice.encode(expectedResponse)); const decodedResult = Invoice.decode(result); - assert('right' in decodedResult); + assert.ok('right' in decodedResult); should(decodedResult.right).deepEqual(expectedResponse); should(createInvoiceSpy).be.calledOnce(); const [firstArg] = createInvoiceSpy.getCall(0).args; diff --git a/modules/express/test/unit/lightning/lightningWalletRoutes.test.ts b/modules/express/test/unit/lightning/lightningWalletRoutes.test.ts index 1087259f7e..d6fd40f172 100644 --- a/modules/express/test/unit/lightning/lightningWalletRoutes.test.ts +++ b/modules/express/test/unit/lightning/lightningWalletRoutes.test.ts @@ -1,5 +1,5 @@ import * as sinon from 'sinon'; -import * as should from 'should'; +import should from 'should'; import * as express from 'express'; import { handleUpdateLightningWalletCoinSpecific } from '../../../src/lightning/lightningWalletRoutes'; import { BitGo } from 'bitgo'; diff --git a/modules/express/test/unit/lightning/lightningWithdrawRoutes.test.ts b/modules/express/test/unit/lightning/lightningWithdrawRoutes.test.ts index 29a69cfef7..6338e4a0f8 100644 --- a/modules/express/test/unit/lightning/lightningWithdrawRoutes.test.ts +++ b/modules/express/test/unit/lightning/lightningWithdrawRoutes.test.ts @@ -1,5 +1,5 @@ import * as sinon from 'sinon'; -import * as should from 'should'; +import should from 'should'; import * as express from 'express'; import { LightningOnchainWithdrawResponse } from '@bitgo/abstract-lightning'; import { BitGo } from 'bitgo'; From 8883cf00b699fa613331b2d80e9bcccaa0c7530c Mon Sep 17 00:00:00 2001 From: Zahin Mohammad Date: Thu, 21 Aug 2025 18:57:40 -0400 Subject: [PATCH 11/14] docs: add commit style to claude.md TICKET: WP-5599 --- .gitignore | 1 + CLAUDE.md | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 12bfcf05ac..ea25569120 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,4 @@ modules/**/dist/ modules/**/pack-scoped/ coverage /.direnv/ +.claude/ diff --git a/CLAUDE.md b/CLAUDE.md index 491d70fcd8..c6b8a21a96 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -28,6 +28,9 @@ yarn lint-changed # Fix linting issues yarn lint-fix + +# Commit lint +yarn check-commits ``` ### Testing @@ -62,6 +65,10 @@ yarn compile # Build for development yarn compile-dbg ``` +## Code Style + +### Commits +BitGoJS uses conventional commits. All commits MUST pass the spec described in `commitlint.config.js`. ## Code Architecture @@ -113,4 +120,4 @@ This will generate the necessary boilerplate for a new coin implementation. ## Node.js Version Support -BitGoJS supports Node.js versions >=18 and <23, with NPM >=3.10.10. \ No newline at end of file +BitGoJS supports Node.js versions >=18 and <23, with NPM >=3.10.10. From 1d0bbae00965d8f9492f9160023a39f475a82d49 Mon Sep 17 00:00:00 2001 From: Zahin Mohammad Date: Thu, 21 Aug 2025 19:04:08 -0400 Subject: [PATCH 12/14] chore(root): run tests from src TICKET: WP-5599 --- modules/utxo-core/package.json | 2 +- modules/utxo-staking/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/utxo-core/package.json b/modules/utxo-core/package.json index 725d809ba0..1d74624762 100644 --- a/modules/utxo-core/package.json +++ b/modules/utxo-core/package.json @@ -27,7 +27,7 @@ "lint": "eslint --quiet .", "prepare": "npm run build", "test": "npm run unit-test", - "unit-test": "mocha --recursive \"dist/test/**/*.js\"" + "unit-test": "mocha --recursive \"test/**/*.ts\"" }, "author": "BitGo SDK Team ", "license": "MIT", diff --git a/modules/utxo-staking/package.json b/modules/utxo-staking/package.json index 6f8acf535e..a160f44ecd 100644 --- a/modules/utxo-staking/package.json +++ b/modules/utxo-staking/package.json @@ -15,7 +15,7 @@ "lint": "eslint --quiet .", "prepare": "npm run build", "coverage": "nyc -- npm run unit-test", - "unit-test": "mocha --recursive \"dist/test/**/*.js\"" + "unit-test": "mocha --recursive \"test/**/*.ts\"" }, "author": "BitGo SDK Team ", "license": "MIT", From 7149d02ed61d5f42d533973825221749b8cf271a Mon Sep 17 00:00:00 2001 From: Zahin Mohammad Date: Thu, 21 Aug 2025 19:05:33 -0400 Subject: [PATCH 13/14] fix(utxo-core): correct path name for fixtures TICKET: WP-5599 --- modules/utxo-core/test/descriptor/psbt/psbt.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/utxo-core/test/descriptor/psbt/psbt.ts b/modules/utxo-core/test/descriptor/psbt/psbt.ts index af339a2d22..76d7890db5 100644 --- a/modules/utxo-core/test/descriptor/psbt/psbt.ts +++ b/modules/utxo-core/test/descriptor/psbt/psbt.ts @@ -45,7 +45,7 @@ function normalize(v: unknown): unknown { } async function assertEqualsFixture(t: string, filename: string, value: unknown) { - filename = __dirname + '/../../../../test/descriptor/psbt/fixtures/' + t + '.' + filename; + filename = __dirname + '/../../descriptor/psbt/fixtures/' + t + '.' + filename; const nv = normalize(value); assert.deepStrictEqual(nv, await getFixture(filename, nv)); } From cf375c767aa678c491142f602c515761cd761bd6 Mon Sep 17 00:00:00 2001 From: Zahin Mohammad Date: Thu, 21 Aug 2025 19:06:47 -0400 Subject: [PATCH 14/14] fix(utxo-staking): correct path name for fixtures TICKET: WP-5599 --- modules/utxo-staking/test/unit/babylon/bug71.ts | 2 +- modules/utxo-staking/test/unit/babylon/undelegation.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/utxo-staking/test/unit/babylon/bug71.ts b/modules/utxo-staking/test/unit/babylon/bug71.ts index bdfc9fcf98..622868cfd3 100644 --- a/modules/utxo-staking/test/unit/babylon/bug71.ts +++ b/modules/utxo-staking/test/unit/babylon/bug71.ts @@ -10,7 +10,7 @@ describe('btc-staking-ts bug #71', function () { let buf: Buffer; before('load half-signed transaction', async function () { const fixture = JSON.parse( - await fs.promises.readFile(__dirname + '/../../../../test/fixtures/babylon/txTree.testnet.json', 'utf-8') + await fs.promises.readFile(__dirname + '/../../fixtures/babylon/txTree.testnet.json', 'utf-8') ); const base64 = fixture.slashingSignedBase64; assert(typeof base64 === 'string'); diff --git a/modules/utxo-staking/test/unit/babylon/undelegation.ts b/modules/utxo-staking/test/unit/babylon/undelegation.ts index 7a1f321dca..47e3b21d27 100644 --- a/modules/utxo-staking/test/unit/babylon/undelegation.ts +++ b/modules/utxo-staking/test/unit/babylon/undelegation.ts @@ -28,7 +28,7 @@ type BtcDelegation = t.TypeOf; async function getFixture(txid: string): Promise { // As returned by https://babylon.nodes.guru/api#/Query/BTCDelegation const BtcDelegationResponse = t.type({ btc_delegation: BtcDelegation }, 'BtcDelegationResponse'); - const filename = __dirname + `/../../../../test/fixtures/babylon/rpc/btc_delegation/testnet.${txid}.json`; + const filename = __dirname + `/../../fixtures/babylon/rpc/btc_delegation/testnet.${txid}.json`; const data = JSON.parse(await fs.readFile(filename, 'utf8')); const result = BtcDelegationResponse.decode(data); if (isLeft(result)) {