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/.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/.nvmrc b/.nvmrc index 5b540673a8..91d5f6ff8e 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -22.16.0 +22.18.0 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. 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/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', 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/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'); } }); 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/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'; 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/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); }); }); 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/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'); 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/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'; 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-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-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)); } 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-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 }) => { 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-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); 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/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", 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)) { 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"