From 0eb4c5c4bef6969962d14ea5e3b0018172697ddd Mon Sep 17 00:00:00 2001 From: Jingles Date: Sun, 25 Jan 2026 00:01:38 +0800 Subject: [PATCH 1/7] remove @cardananium/cardano-peer-connect and replace with @utxos/sdk --- package-lock.json | 4497 +++++++---------- packages/mesh-react/package.json | 3 +- .../src/cardano-wallet-dropdown/index.tsx | 51 +- .../mesh-react/src/cardano-wallet/data.ts | 4 - .../mesh-react/src/cardano-wallet/index.tsx | 18 +- .../src/cardano-wallet/screen-main.tsx | 14 +- .../src/cardano-wallet/screen-p2p.tsx | 85 - .../src/cardano-wallet/web3-services.tsx | 4 +- .../common/icons/icon-monitor-smartphone.tsx | 26 - .../mesh-react/src/contexts/WalletContext.ts | 37 +- packages/mesh-react/tsup.config.ts | 1 - 11 files changed, 1918 insertions(+), 2822 deletions(-) delete mode 100644 packages/mesh-react/src/cardano-wallet/screen-p2p.tsx delete mode 100644 packages/mesh-react/src/common/icons/icon-monitor-smartphone.tsx diff --git a/package-lock.json b/package-lock.json index 6f4ea00ec..906ad2bc2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1167,6 +1167,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -1282,18 +1283,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-import-attributes": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", @@ -1549,23 +1538,6 @@ "node": ">=6.9.0" } }, - "node_modules/@basementuniverse/commonjs": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/@basementuniverse/commonjs/-/commonjs-1.2.10.tgz", - "integrity": "sha512-hmqEAGVCdsyQWJ5PwweFegOZ19gBm5Ppw48/l8mOexcjubyuhmgRt6SB8BoLF9C4lzRemG816hH77w7hJRrDMA==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "license": "MIT" - }, - "node_modules/@basementuniverse/marble-identicons": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@basementuniverse/marble-identicons/-/marble-identicons-0.1.2.tgz", - "integrity": "sha512-Z9w8lp4hwy3zwtl+ldVtN+Vr9BkD/NJCJZWLDjiWYLIkMPglhqUDy8ffXNDAB35UmKj7p/X+LKtSr+ApbMYhLA==", - "license": "MIT", - "dependencies": { - "@basementuniverse/commonjs": "^1.2.10", - "seed-random": "^2.2.0" - } - }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", @@ -1658,74 +1630,6 @@ "integrity": "sha512-wJ8ReQbHxsAfXhrf9ixl0aYbZorRuOWpBNzm8pL8ftmSxQx/wnJD5Eg861NwJU/czy2VXFIebCeZnZrI9rktIQ==", "license": "(Apache-2.0 AND BSD-3-Clause)" }, - "node_modules/@cardananium/cardano-peer-connect": { - "version": "1.2.19", - "resolved": "https://registry.npmjs.org/@cardananium/cardano-peer-connect/-/cardano-peer-connect-1.2.19.tgz", - "integrity": "sha512-LiRHceU7MG2mEww5StYC3H4Pv2GMcKHMiYjqi/Kz7EQ2/msk/C0njhckjAiJZQ72n03QaMIVc/S+LzE/xCyCwA==", - "license": "Apache-2.0", - "dependencies": { - "@cardananium/marble-identicons": "^0.1.2", - "@cardananium/meerkat": "^1.0.18", - "qrcode-svg": "^1.1.0" - } - }, - "node_modules/@cardananium/commonjs": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/@cardananium/commonjs/-/commonjs-1.2.11.tgz", - "integrity": "sha512-yNr9AVjrwUZAV0QBhqjNSXNbL9JlhqaJ/1OAcIHQcik69WztPzvKzR8wFip6EI4m2crF7rHykuAIkVd/JsQGHg==", - "license": "MIT" - }, - "node_modules/@cardananium/marble-identicons": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@cardananium/marble-identicons/-/marble-identicons-0.1.2.tgz", - "integrity": "sha512-VtRf+YEWYPbyuZhdgc5WOqoqiM0eT9FrOV25WmnytTsqD+tKVDQML1y7BOGygOrK7YrklB572YTzHK8ECBL0OA==", - "license": "MIT", - "dependencies": { - "@cardananium/commonjs": "^1.2.11", - "seed-random": "^2.2.0" - } - }, - "node_modules/@cardananium/meerkat": { - "version": "1.0.18", - "resolved": "https://registry.npmjs.org/@cardananium/meerkat/-/meerkat-1.0.18.tgz", - "integrity": "sha512-8nrXyOiVG5Nlz2O3cNlGRX1ttvSxt87ijaW/j0Zi6KF9TCyeqKY3EuCsKb3TJXX+Z/Bi/kW9wdz8unQCFTwrdQ==", - "license": "Apache-2.0", - "dependencies": { - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@rvagg/ripemd160": "^2.2.4", - "@webpod/ip": "^0.6.1", - "bs58": "^6.0.0", - "bs58check": "^4.0.0", - "tweetnacl": "^1.0.3", - "vm-browserify": "^1.1.2", - "webtorrent": "^2.8.4" - } - }, - "node_modules/@cardananium/meerkat/node_modules/base-x": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-5.0.1.tgz", - "integrity": "sha512-M7uio8Zt++eg3jPj+rHMfCC+IuygQHHCOU+IYsVtik6FWjuYpVt/+MRKcgsAMHh8mMFAwnB+Bs+mTrFiXjMzKg==", - "license": "MIT" - }, - "node_modules/@cardananium/meerkat/node_modules/bs58": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-6.0.0.tgz", - "integrity": "sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==", - "license": "MIT", - "dependencies": { - "base-x": "^5.0.0" - } - }, - "node_modules/@cardananium/meerkat/node_modules/bs58check": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-4.0.0.tgz", - "integrity": "sha512-FsGDOnFg9aVI9erdriULkd/JjEWONV/lQE5aYziB5PoBsXRind56lh8doIZIc9X4HoxT5x4bLjMWN1/NB8Zp5g==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "^1.2.0", - "bs58": "^6.0.0" - } - }, "node_modules/@cardano-ogmios/client": { "version": "6.9.0", "resolved": "https://registry.npmjs.org/@cardano-ogmios/client/-/client-6.9.0.tgz", @@ -2085,20 +1989,22 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@colors/colors": { "version": "1.5.0", + "extraneous": true, "inBundle": true, "license": "MIT", - "optional": true, "engines": { "node": ">=0.1.90" } }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@gar/promisify": { "version": "1.1.3", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@isaacs/cliui": { "version": "8.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2115,6 +2021,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@isaacs/cliui/node_modules/ansi-regex": { "version": "6.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -2126,11 +2033,13 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": { "version": "9.2.2", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2147,6 +2056,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@isaacs/cliui/node_modules/strip-ansi": { "version": "7.1.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2161,11 +2071,13 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@isaacs/string-locale-compare": { "version": "1.1.0", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@npmcli/arborist": { "version": "6.5.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2212,6 +2124,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@npmcli/config": { "version": "6.4.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2230,6 +2143,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@npmcli/disparity-colors": { "version": "3.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2241,6 +2155,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@npmcli/fs": { "version": "3.1.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2252,6 +2167,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@npmcli/git": { "version": "4.1.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2270,6 +2186,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@npmcli/installed-package-contents": { "version": "2.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2285,6 +2202,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@npmcli/map-workspaces": { "version": "3.0.4", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2299,6 +2217,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@npmcli/metavuln-calculator": { "version": "5.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2313,6 +2232,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@npmcli/move-file": { "version": "2.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2325,6 +2245,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@npmcli/name-from-folder": { "version": "2.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -2333,6 +2254,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@npmcli/node-gyp": { "version": "3.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -2341,6 +2263,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@npmcli/package-json": { "version": "4.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2358,6 +2281,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@npmcli/promise-spawn": { "version": "6.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2369,6 +2293,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@npmcli/query": { "version": "3.1.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2380,6 +2305,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@npmcli/run-script": { "version": "6.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2395,15 +2321,16 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@pkgjs/parseargs": { "version": "0.11.0", + "extraneous": true, "inBundle": true, "license": "MIT", - "optional": true, "engines": { "node": ">=14" } }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@sigstore/bundle": { "version": "1.1.0", + "extraneous": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -2415,6 +2342,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@sigstore/protobuf-specs": { "version": "0.2.1", + "extraneous": true, "inBundle": true, "license": "Apache-2.0", "engines": { @@ -2423,6 +2351,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@sigstore/sign": { "version": "1.0.0", + "extraneous": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -2436,6 +2365,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@sigstore/tuf": { "version": "1.0.3", + "extraneous": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -2448,6 +2378,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@tootallnate/once": { "version": "2.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -2456,6 +2387,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@tufjs/canonical-json": { "version": "1.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -2464,6 +2396,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@tufjs/models": { "version": "1.0.4", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2476,6 +2409,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/abbrev": { "version": "2.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -2484,6 +2418,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/agent-base": { "version": "6.0.2", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2495,6 +2430,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/agentkeepalive": { "version": "4.5.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2506,6 +2442,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/aggregate-error": { "version": "3.1.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2518,6 +2455,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/ansi-regex": { "version": "5.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -2526,6 +2464,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/ansi-styles": { "version": "4.3.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2540,16 +2479,19 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/aproba": { "version": "2.0.0", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/archy": { "version": "1.0.0", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/are-we-there-yet": { "version": "4.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -2558,11 +2500,13 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/balanced-match": { "version": "1.0.2", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/bin-links": { "version": "4.0.3", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2577,6 +2521,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/binary-extensions": { "version": "2.2.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -2585,6 +2530,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/brace-expansion": { "version": "2.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2593,6 +2539,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/builtins": { "version": "5.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2601,6 +2548,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/cacache": { "version": "17.1.4", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2623,6 +2571,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/chalk": { "version": "5.3.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -2634,6 +2583,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/chownr": { "version": "2.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -2642,6 +2592,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/ci-info": { "version": "4.0.0", + "extraneous": true, "funding": [ { "type": "github", @@ -2656,6 +2607,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/cidr-regex": { "version": "3.1.1", + "extraneous": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { @@ -2667,6 +2619,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/clean-stack": { "version": "2.2.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -2675,6 +2628,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/cli-columns": { "version": "4.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2687,6 +2641,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/cli-table3": { "version": "0.6.3", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2701,6 +2656,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/clone": { "version": "1.0.4", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -2709,6 +2665,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/cmd-shim": { "version": "6.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -2717,6 +2674,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/color-convert": { "version": "2.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2728,11 +2686,13 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/color-name": { "version": "1.1.4", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/color-support": { "version": "1.1.3", + "extraneous": true, "inBundle": true, "license": "ISC", "bin": { @@ -2741,6 +2701,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/columnify": { "version": "1.6.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2753,21 +2714,25 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/common-ancestor-path": { "version": "1.0.1", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/concat-map": { "version": "0.0.1", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/console-control-strings": { "version": "1.1.0", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/cross-spawn": { "version": "7.0.6", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2781,6 +2746,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/cross-spawn/node_modules/which": { "version": "2.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2795,6 +2761,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/cssesc": { "version": "3.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "bin": { @@ -2806,6 +2773,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/debug": { "version": "4.3.7", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2822,6 +2790,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/defaults": { "version": "1.0.4", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2833,11 +2802,13 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/delegates": { "version": "1.0.0", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/diff": { "version": "5.2.0", + "extraneous": true, "inBundle": true, "license": "BSD-3-Clause", "engines": { @@ -2846,25 +2817,28 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/eastasianwidth": { "version": "0.2.0", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/emoji-regex": { "version": "8.0.0", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/encoding": { "version": "0.1.13", + "extraneous": true, "inBundle": true, "license": "MIT", - "optional": true, "dependencies": { "iconv-lite": "^0.6.2" } }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/env-paths": { "version": "2.2.1", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -2873,16 +2847,19 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/err-code": { "version": "2.0.3", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/exponential-backoff": { "version": "3.1.1", + "extraneous": true, "inBundle": true, "license": "Apache-2.0" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/fastest-levenshtein": { "version": "1.0.16", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -2891,6 +2868,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/foreground-child": { "version": "3.1.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2906,6 +2884,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/fs-minipass": { "version": "3.0.3", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2917,11 +2896,13 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/fs.realpath": { "version": "1.0.0", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/function-bind": { "version": "1.1.2", + "extraneous": true, "inBundle": true, "license": "MIT", "funding": { @@ -2930,6 +2911,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/gauge": { "version": "5.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2948,6 +2930,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/glob": { "version": "10.3.10", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2969,16 +2952,19 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/graceful-fs": { "version": "4.2.11", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/has-unicode": { "version": "2.0.1", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/hasown": { "version": "2.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2990,6 +2976,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/hosted-git-info": { "version": "6.1.3", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3001,11 +2988,13 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/http-cache-semantics": { "version": "4.1.1", + "extraneous": true, "inBundle": true, "license": "BSD-2-Clause" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/http-proxy-agent": { "version": "5.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -3019,6 +3008,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/https-proxy-agent": { "version": "5.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -3031,6 +3021,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/humanize-ms": { "version": "1.2.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -3039,9 +3030,9 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/iconv-lite": { "version": "0.6.3", + "extraneous": true, "inBundle": true, "license": "MIT", - "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -3051,6 +3042,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/ignore-walk": { "version": "6.0.4", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3062,6 +3054,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/imurmurhash": { "version": "0.1.4", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -3070,6 +3063,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/indent-string": { "version": "4.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -3078,11 +3072,13 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/infer-owner": { "version": "1.0.4", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/inflight": { "version": "1.0.6", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3092,11 +3088,13 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/inherits": { "version": "2.0.4", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/ini": { "version": "4.1.1", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -3105,6 +3103,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/init-package-json": { "version": "5.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3122,6 +3121,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/ip-address": { "version": "9.0.5", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -3134,11 +3134,13 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/ip-address/node_modules/sprintf-js": { "version": "1.1.3", + "extraneous": true, "inBundle": true, "license": "BSD-3-Clause" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/ip-regex": { "version": "4.3.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -3147,6 +3149,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/is-cidr": { "version": "4.0.2", + "extraneous": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { @@ -3158,6 +3161,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/is-core-module": { "version": "2.13.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -3169,6 +3173,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -3177,16 +3182,19 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/is-lambda": { "version": "1.0.1", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/isexe": { "version": "2.0.0", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/jackspeak": { "version": "2.3.6", + "extraneous": true, "inBundle": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -3204,11 +3212,13 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/jsbn": { "version": "1.1.0", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/json-parse-even-better-errors": { "version": "3.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -3217,6 +3227,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/json-stringify-nice": { "version": "1.1.4", + "extraneous": true, "inBundle": true, "license": "ISC", "funding": { @@ -3228,21 +3239,25 @@ "engines": [ "node >= 0.2.0" ], + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/just-diff": { "version": "6.0.2", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/just-diff-apply": { "version": "5.5.0", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/libnpmaccess": { "version": "7.0.3", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3255,6 +3270,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/libnpmdiff": { "version": "5.0.21", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3274,6 +3290,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/libnpmexec": { "version": "6.0.5", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3295,6 +3312,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/libnpmfund": { "version": "4.2.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3306,6 +3324,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/libnpmhook": { "version": "9.0.4", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3318,6 +3337,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/libnpmorg": { "version": "5.0.5", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3330,6 +3350,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/libnpmpack": { "version": "5.0.21", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3344,6 +3365,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/libnpmpublish": { "version": "7.5.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3362,6 +3384,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/libnpmsearch": { "version": "6.0.3", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3373,6 +3396,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/libnpmteam": { "version": "5.0.4", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3385,6 +3409,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/libnpmversion": { "version": "4.0.3", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3400,6 +3425,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/lru-cache": { "version": "7.18.3", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -3408,6 +3434,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/make-fetch-happen": { "version": "11.1.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3433,6 +3460,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/make-fetch-happen/node_modules/minipass": { "version": "5.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -3441,6 +3469,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/minimatch": { "version": "9.0.3", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3455,6 +3484,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/minipass": { "version": "7.0.4", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -3463,6 +3493,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/minipass-collect": { "version": "1.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3474,6 +3505,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/minipass-collect/node_modules/minipass": { "version": "3.3.6", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3485,6 +3517,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/minipass-fetch": { "version": "3.0.4", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -3501,6 +3534,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/minipass-flush": { "version": "1.0.5", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3512,6 +3546,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/minipass-flush/node_modules/minipass": { "version": "3.3.6", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3523,6 +3558,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/minipass-json-stream": { "version": "1.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -3532,6 +3568,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/minipass-json-stream/node_modules/minipass": { "version": "3.3.6", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3543,6 +3580,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/minipass-pipeline": { "version": "1.2.4", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3554,6 +3592,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass": { "version": "3.3.6", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3565,6 +3604,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/minipass-sized": { "version": "1.0.3", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3576,6 +3616,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/minipass-sized/node_modules/minipass": { "version": "3.3.6", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3587,6 +3628,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/minizlib": { "version": "2.1.2", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -3599,6 +3641,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/minizlib/node_modules/minipass": { "version": "3.3.6", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3610,6 +3653,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/mkdirp": { "version": "1.0.4", + "extraneous": true, "inBundle": true, "license": "MIT", "bin": { @@ -3621,11 +3665,13 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/ms": { "version": "2.1.3", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/mute-stream": { "version": "1.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -3634,6 +3680,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/negotiator": { "version": "0.6.3", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -3642,6 +3689,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp": { "version": "9.4.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -3666,6 +3714,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/@npmcli/fs": { "version": "2.1.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3678,11 +3727,13 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/abbrev": { "version": "1.1.1", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/are-we-there-yet": { "version": "3.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3695,6 +3746,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/brace-expansion": { "version": "1.1.11", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -3704,6 +3756,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/cacache": { "version": "16.1.3", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3732,6 +3785,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/brace-expansion": { "version": "2.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -3740,6 +3794,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/glob": { "version": "8.1.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3758,6 +3813,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/minimatch": { "version": "5.1.6", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3769,6 +3825,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/fs-minipass": { "version": "2.1.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3780,6 +3837,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/gauge": { "version": "4.0.4", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3798,6 +3856,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/glob": { "version": "7.2.3", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3817,6 +3876,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/make-fetch-happen": { "version": "10.2.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3843,6 +3903,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/minimatch": { "version": "3.1.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3854,6 +3915,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/minipass": { "version": "3.3.6", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3865,6 +3927,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/minipass-fetch": { "version": "2.1.2", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -3881,6 +3944,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/nopt": { "version": "6.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3895,6 +3959,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/npmlog": { "version": "6.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3909,11 +3974,13 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/signal-exit": { "version": "3.0.7", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/ssri": { "version": "9.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3925,6 +3992,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/unique-filename": { "version": "2.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3936,6 +4004,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/unique-slug": { "version": "3.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3947,6 +4016,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/which": { "version": "2.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3961,6 +4031,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/nopt": { "version": "7.2.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3975,6 +4046,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/normalize-package-data": { "version": "5.0.0", + "extraneous": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { @@ -3989,6 +4061,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/npm-audit-report": { "version": "5.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -3997,6 +4070,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/npm-bundled": { "version": "3.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4008,6 +4082,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/npm-install-checks": { "version": "6.3.0", + "extraneous": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { @@ -4019,6 +4094,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/npm-normalize-package-bin": { "version": "3.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -4027,6 +4103,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/npm-package-arg": { "version": "10.1.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4041,6 +4118,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/npm-packlist": { "version": "7.0.4", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4052,6 +4130,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/npm-pick-manifest": { "version": "8.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4066,6 +4145,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/npm-profile": { "version": "7.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4078,6 +4158,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/npm-registry-fetch": { "version": "14.0.5", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4095,6 +4176,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/npm-registry-fetch/node_modules/minipass": { "version": "5.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -4103,6 +4185,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/npm-user-validate": { "version": "2.0.0", + "extraneous": true, "inBundle": true, "license": "BSD-2-Clause", "engines": { @@ -4111,6 +4194,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/npmlog": { "version": "7.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4125,6 +4209,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/once": { "version": "1.4.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4133,6 +4218,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/p-map": { "version": "4.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4147,6 +4233,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/pacote": { "version": "15.2.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4178,6 +4265,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/pacote/node_modules/minipass": { "version": "5.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -4186,6 +4274,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/parse-conflict-json": { "version": "3.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4199,6 +4288,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/path-is-absolute": { "version": "1.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -4207,6 +4297,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/path-key": { "version": "3.1.1", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -4215,6 +4306,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/path-scurry": { "version": "1.10.1", + "extraneous": true, "inBundle": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -4230,6 +4322,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/path-scurry/node_modules/lru-cache": { "version": "10.2.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -4238,6 +4331,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/postcss-selector-parser": { "version": "6.0.15", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4250,6 +4344,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/proc-log": { "version": "3.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -4258,6 +4353,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/promise-all-reject-late": { "version": "1.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "funding": { @@ -4266,6 +4362,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/promise-call-limit": { "version": "1.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "funding": { @@ -4274,11 +4371,13 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/promise-inflight": { "version": "1.0.1", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/promise-retry": { "version": "2.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4291,6 +4390,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/promzard": { "version": "1.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4302,6 +4402,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/qrcode-terminal": { "version": "0.12.0", + "extraneous": true, "inBundle": true, "bin": { "qrcode-terminal": "bin/qrcode-terminal.js" @@ -4309,6 +4410,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/read": { "version": "2.1.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4320,6 +4422,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/read-cmd-shim": { "version": "4.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -4328,6 +4431,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/read-package-json": { "version": "6.0.4", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4342,6 +4446,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/read-package-json-fast": { "version": "3.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4354,6 +4459,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/readable-stream": { "version": "3.6.2", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4367,6 +4473,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/retry": { "version": "0.12.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -4375,6 +4482,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/rimraf": { "version": "3.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4389,6 +4497,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/rimraf/node_modules/brace-expansion": { "version": "1.1.11", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4398,6 +4507,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/rimraf/node_modules/glob": { "version": "7.2.3", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4417,6 +4527,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/rimraf/node_modules/minimatch": { "version": "3.1.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4428,6 +4539,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/safe-buffer": { "version": "5.2.1", + "extraneous": true, "funding": [ { "type": "github", @@ -4447,12 +4559,13 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/safer-buffer": { "version": "2.1.2", + "extraneous": true, "inBundle": true, - "license": "MIT", - "optional": true + "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/semver": { "version": "7.6.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4467,6 +4580,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/semver/node_modules/lru-cache": { "version": "6.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4478,11 +4592,13 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/set-blocking": { "version": "2.0.0", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/shebang-command": { "version": "2.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4494,6 +4610,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/shebang-regex": { "version": "3.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -4502,6 +4619,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/signal-exit": { "version": "4.1.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -4513,6 +4631,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/sigstore": { "version": "1.9.0", + "extraneous": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -4531,6 +4650,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/smart-buffer": { "version": "4.2.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -4540,6 +4660,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/socks": { "version": "2.8.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4553,6 +4674,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/socks-proxy-agent": { "version": "7.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4566,6 +4688,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/spdx-correct": { "version": "3.2.0", + "extraneous": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -4575,11 +4698,13 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/spdx-exceptions": { "version": "2.5.0", + "extraneous": true, "inBundle": true, "license": "CC-BY-3.0" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/spdx-expression-parse": { "version": "3.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4589,11 +4714,13 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/spdx-license-ids": { "version": "3.0.17", + "extraneous": true, "inBundle": true, "license": "CC0-1.0" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/ssri": { "version": "10.0.5", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4605,6 +4732,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/string_decoder": { "version": "1.3.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4613,6 +4741,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/string-width": { "version": "4.2.3", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4627,6 +4756,7 @@ "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/string-width-cjs": { "name": "string-width", "version": "4.2.3", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4640,6 +4770,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/strip-ansi": { "version": "6.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4652,6 +4783,7 @@ "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/strip-ansi-cjs": { "name": "strip-ansi", "version": "6.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4663,6 +4795,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/supports-color": { "version": "9.4.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -4674,6 +4807,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/tar": { "version": "6.2.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4690,6 +4824,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/tar/node_modules/fs-minipass": { "version": "2.1.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4701,6 +4836,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { "version": "3.3.6", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4712,6 +4848,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/tar/node_modules/minipass": { "version": "5.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -4720,16 +4857,19 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/text-table": { "version": "0.2.0", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/tiny-relative-date": { "version": "1.3.0", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/treeverse": { "version": "3.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -4738,6 +4878,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/tuf-js": { "version": "1.1.7", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4751,6 +4892,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/unique-filename": { "version": "3.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4762,6 +4904,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/unique-slug": { "version": "4.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4773,11 +4916,13 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/util-deprecate": { "version": "1.0.2", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/validate-npm-package-license": { "version": "3.0.4", + "extraneous": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -4787,6 +4932,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/validate-npm-package-name": { "version": "5.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4798,11 +4944,13 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/walk-up-path": { "version": "3.0.1", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/wcwidth": { "version": "1.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4811,6 +4959,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/which": { "version": "3.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4825,6 +4974,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/wide-align": { "version": "1.1.5", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4833,6 +4983,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/wrap-ansi": { "version": "8.1.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4850,6 +5001,7 @@ "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/wrap-ansi-cjs": { "name": "wrap-ansi", "version": "7.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4866,6 +5018,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { "version": "6.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -4877,6 +5030,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "6.2.1", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -4888,11 +5042,13 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": { "version": "9.2.2", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": { "version": "5.1.2", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4909,6 +5065,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/wrap-ansi/node_modules/strip-ansi": { "version": "7.1.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4923,11 +5080,13 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/wrappy": { "version": "1.0.2", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/write-file-atomic": { "version": "5.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4940,6 +5099,7 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/yallist": { "version": "4.0.0", + "extraneous": true, "inBundle": true, "license": "ISC" }, @@ -5356,20 +5516,22 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@colors/colors": { "version": "1.5.0", + "extraneous": true, "inBundle": true, "license": "MIT", - "optional": true, "engines": { "node": ">=0.1.90" } }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@gar/promisify": { "version": "1.1.3", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@isaacs/cliui": { "version": "8.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5386,6 +5548,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@isaacs/cliui/node_modules/ansi-regex": { "version": "6.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -5397,11 +5560,13 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": { "version": "9.2.2", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -5418,6 +5583,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@isaacs/cliui/node_modules/strip-ansi": { "version": "7.1.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -5432,11 +5598,13 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@isaacs/string-locale-compare": { "version": "1.1.0", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@npmcli/arborist": { "version": "6.5.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5483,6 +5651,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@npmcli/config": { "version": "6.4.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5501,6 +5670,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@npmcli/disparity-colors": { "version": "3.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5512,6 +5682,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@npmcli/fs": { "version": "3.1.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5523,6 +5694,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@npmcli/git": { "version": "4.1.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5541,6 +5713,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@npmcli/installed-package-contents": { "version": "2.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5556,6 +5729,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@npmcli/map-workspaces": { "version": "3.0.4", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5570,6 +5744,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@npmcli/metavuln-calculator": { "version": "5.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5584,6 +5759,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@npmcli/move-file": { "version": "2.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -5596,6 +5772,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@npmcli/name-from-folder": { "version": "2.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -5604,6 +5781,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@npmcli/node-gyp": { "version": "3.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -5612,6 +5790,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@npmcli/package-json": { "version": "4.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5629,6 +5808,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@npmcli/promise-spawn": { "version": "6.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5640,6 +5820,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@npmcli/query": { "version": "3.1.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5651,6 +5832,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@npmcli/run-script": { "version": "6.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5666,15 +5848,16 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@pkgjs/parseargs": { "version": "0.11.0", + "extraneous": true, "inBundle": true, "license": "MIT", - "optional": true, "engines": { "node": ">=14" } }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@sigstore/bundle": { "version": "1.1.0", + "extraneous": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -5686,6 +5869,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@sigstore/protobuf-specs": { "version": "0.2.1", + "extraneous": true, "inBundle": true, "license": "Apache-2.0", "engines": { @@ -5694,6 +5878,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@sigstore/sign": { "version": "1.0.0", + "extraneous": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -5707,6 +5892,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@sigstore/tuf": { "version": "1.0.3", + "extraneous": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -5719,6 +5905,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@tootallnate/once": { "version": "2.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -5727,6 +5914,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@tufjs/canonical-json": { "version": "1.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -5735,6 +5923,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@tufjs/models": { "version": "1.0.4", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -5747,6 +5936,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/abbrev": { "version": "2.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -5755,6 +5945,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/agent-base": { "version": "6.0.2", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -5766,6 +5957,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/agentkeepalive": { "version": "4.5.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -5777,6 +5969,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/aggregate-error": { "version": "3.1.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -5789,6 +5982,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/ansi-regex": { "version": "5.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -5797,6 +5991,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/ansi-styles": { "version": "4.3.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -5811,16 +6006,19 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/aproba": { "version": "2.0.0", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/archy": { "version": "1.0.0", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/are-we-there-yet": { "version": "4.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -5829,11 +6027,13 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/balanced-match": { "version": "1.0.2", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/bin-links": { "version": "4.0.3", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5848,6 +6048,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/binary-extensions": { "version": "2.2.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -5856,6 +6057,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/brace-expansion": { "version": "2.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -5864,6 +6066,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/builtins": { "version": "5.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -5872,6 +6075,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/cacache": { "version": "17.1.4", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5894,6 +6098,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/chalk": { "version": "5.3.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -5905,6 +6110,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/chownr": { "version": "2.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -5913,6 +6119,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/ci-info": { "version": "4.0.0", + "extraneous": true, "funding": [ { "type": "github", @@ -5927,6 +6134,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/cidr-regex": { "version": "3.1.1", + "extraneous": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { @@ -5938,6 +6146,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/clean-stack": { "version": "2.2.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -5946,6 +6155,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/cli-columns": { "version": "4.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -5958,6 +6168,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/cli-table3": { "version": "0.6.3", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -5972,6 +6183,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/clone": { "version": "1.0.4", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -5980,6 +6192,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/cmd-shim": { "version": "6.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -5988,6 +6201,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/color-convert": { "version": "2.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -5999,11 +6213,13 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/color-name": { "version": "1.1.4", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/color-support": { "version": "1.1.3", + "extraneous": true, "inBundle": true, "license": "ISC", "bin": { @@ -6012,6 +6228,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/columnify": { "version": "1.6.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6024,21 +6241,25 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/common-ancestor-path": { "version": "1.0.1", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/concat-map": { "version": "0.0.1", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/console-control-strings": { "version": "1.1.0", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/cross-spawn": { "version": "7.0.6", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6052,6 +6273,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/cross-spawn/node_modules/which": { "version": "2.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6066,6 +6288,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/cssesc": { "version": "3.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "bin": { @@ -6077,6 +6300,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/debug": { "version": "4.3.7", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6093,6 +6317,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/defaults": { "version": "1.0.4", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6104,11 +6329,13 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/delegates": { "version": "1.0.0", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/diff": { "version": "5.2.0", + "extraneous": true, "inBundle": true, "license": "BSD-3-Clause", "engines": { @@ -6117,25 +6344,28 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/eastasianwidth": { "version": "0.2.0", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/emoji-regex": { "version": "8.0.0", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/encoding": { "version": "0.1.13", + "extraneous": true, "inBundle": true, "license": "MIT", - "optional": true, "dependencies": { "iconv-lite": "^0.6.2" } }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/env-paths": { "version": "2.2.1", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -6144,16 +6374,19 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/err-code": { "version": "2.0.3", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/exponential-backoff": { "version": "3.1.1", + "extraneous": true, "inBundle": true, "license": "Apache-2.0" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/fastest-levenshtein": { "version": "1.0.16", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -6162,6 +6395,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/foreground-child": { "version": "3.1.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6177,6 +6411,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/fs-minipass": { "version": "3.0.3", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6188,11 +6423,13 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/fs.realpath": { "version": "1.0.0", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/function-bind": { "version": "1.1.2", + "extraneous": true, "inBundle": true, "license": "MIT", "funding": { @@ -6201,6 +6438,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/gauge": { "version": "5.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6219,6 +6457,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/glob": { "version": "10.3.10", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6240,16 +6479,19 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/graceful-fs": { "version": "4.2.11", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/has-unicode": { "version": "2.0.1", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/hasown": { "version": "2.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6261,6 +6503,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/hosted-git-info": { "version": "6.1.3", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6272,11 +6515,13 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/http-cache-semantics": { "version": "4.1.1", + "extraneous": true, "inBundle": true, "license": "BSD-2-Clause" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/http-proxy-agent": { "version": "5.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6290,6 +6535,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/https-proxy-agent": { "version": "5.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6302,6 +6548,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/humanize-ms": { "version": "1.2.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6310,9 +6557,9 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/iconv-lite": { "version": "0.6.3", + "extraneous": true, "inBundle": true, "license": "MIT", - "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -6322,6 +6569,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/ignore-walk": { "version": "6.0.4", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6333,6 +6581,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/imurmurhash": { "version": "0.1.4", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -6341,6 +6590,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/indent-string": { "version": "4.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -6349,11 +6599,13 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/infer-owner": { "version": "1.0.4", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/inflight": { "version": "1.0.6", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6363,11 +6615,13 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/inherits": { "version": "2.0.4", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/ini": { "version": "4.1.1", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -6376,6 +6630,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/init-package-json": { "version": "5.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6393,6 +6648,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/ip-address": { "version": "9.0.5", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6405,11 +6661,13 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/ip-address/node_modules/sprintf-js": { "version": "1.1.3", + "extraneous": true, "inBundle": true, "license": "BSD-3-Clause" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/ip-regex": { "version": "4.3.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -6418,6 +6676,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/is-cidr": { "version": "4.0.2", + "extraneous": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { @@ -6429,6 +6688,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/is-core-module": { "version": "2.13.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6440,6 +6700,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -6448,16 +6709,19 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/is-lambda": { "version": "1.0.1", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/isexe": { "version": "2.0.0", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/jackspeak": { "version": "2.3.6", + "extraneous": true, "inBundle": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -6475,11 +6739,13 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/jsbn": { "version": "1.1.0", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/json-parse-even-better-errors": { "version": "3.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -6488,6 +6754,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/json-stringify-nice": { "version": "1.1.4", + "extraneous": true, "inBundle": true, "license": "ISC", "funding": { @@ -6499,21 +6766,25 @@ "engines": [ "node >= 0.2.0" ], + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/just-diff": { "version": "6.0.2", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/just-diff-apply": { "version": "5.5.0", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/libnpmaccess": { "version": "7.0.3", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6526,6 +6797,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/libnpmdiff": { "version": "5.0.21", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6545,6 +6817,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/libnpmexec": { "version": "6.0.5", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6566,6 +6839,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/libnpmfund": { "version": "4.2.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6577,6 +6851,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/libnpmhook": { "version": "9.0.4", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6589,6 +6864,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/libnpmorg": { "version": "5.0.5", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6601,6 +6877,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/libnpmpack": { "version": "5.0.21", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6615,6 +6892,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/libnpmpublish": { "version": "7.5.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6633,6 +6911,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/libnpmsearch": { "version": "6.0.3", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6644,6 +6923,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/libnpmteam": { "version": "5.0.4", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6656,6 +6936,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/libnpmversion": { "version": "4.0.3", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6671,6 +6952,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/lru-cache": { "version": "7.18.3", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -6679,6 +6961,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/make-fetch-happen": { "version": "11.1.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6704,6 +6987,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/make-fetch-happen/node_modules/minipass": { "version": "5.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -6712,6 +6996,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/minimatch": { "version": "9.0.3", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6726,6 +7011,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/minipass": { "version": "7.0.4", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -6734,6 +7020,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/minipass-collect": { "version": "1.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6745,6 +7032,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/minipass-collect/node_modules/minipass": { "version": "3.3.6", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6756,6 +7044,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/minipass-fetch": { "version": "3.0.4", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6772,6 +7061,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/minipass-flush": { "version": "1.0.5", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6783,6 +7073,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/minipass-flush/node_modules/minipass": { "version": "3.3.6", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6794,6 +7085,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/minipass-json-stream": { "version": "1.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6803,6 +7095,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/minipass-json-stream/node_modules/minipass": { "version": "3.3.6", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6814,6 +7107,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/minipass-pipeline": { "version": "1.2.4", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6825,6 +7119,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass": { "version": "3.3.6", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6836,6 +7131,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/minipass-sized": { "version": "1.0.3", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6847,6 +7143,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/minipass-sized/node_modules/minipass": { "version": "3.3.6", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6858,6 +7155,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/minizlib": { "version": "2.1.2", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6870,6 +7168,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/minizlib/node_modules/minipass": { "version": "3.3.6", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6881,6 +7180,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/mkdirp": { "version": "1.0.4", + "extraneous": true, "inBundle": true, "license": "MIT", "bin": { @@ -6892,11 +7192,13 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/ms": { "version": "2.1.3", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/mute-stream": { "version": "1.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -6905,6 +7207,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/negotiator": { "version": "0.6.3", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -6913,6 +7216,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp": { "version": "9.4.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6937,6 +7241,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/@npmcli/fs": { "version": "2.1.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6949,11 +7254,13 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/abbrev": { "version": "1.1.1", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/are-we-there-yet": { "version": "3.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6966,6 +7273,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/brace-expansion": { "version": "1.1.11", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6975,6 +7283,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/cacache": { "version": "16.1.3", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7003,6 +7312,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/brace-expansion": { "version": "2.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7011,6 +7321,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/glob": { "version": "8.1.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7029,6 +7340,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/minimatch": { "version": "5.1.6", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7040,6 +7352,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/fs-minipass": { "version": "2.1.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7051,6 +7364,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/gauge": { "version": "4.0.4", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7069,6 +7383,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/glob": { "version": "7.2.3", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7088,6 +7403,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/make-fetch-happen": { "version": "10.2.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7114,6 +7430,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/minimatch": { "version": "3.1.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7125,6 +7442,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/minipass": { "version": "3.3.6", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7136,6 +7454,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/minipass-fetch": { "version": "2.1.2", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7152,6 +7471,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/nopt": { "version": "6.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7166,6 +7486,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/npmlog": { "version": "6.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7180,11 +7501,13 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/signal-exit": { "version": "3.0.7", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/ssri": { "version": "9.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7196,6 +7519,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/unique-filename": { "version": "2.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7207,6 +7531,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/unique-slug": { "version": "3.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7218,6 +7543,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/which": { "version": "2.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7232,6 +7558,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/nopt": { "version": "7.2.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7246,6 +7573,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/normalize-package-data": { "version": "5.0.0", + "extraneous": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { @@ -7260,6 +7588,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/npm-audit-report": { "version": "5.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -7268,6 +7597,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/npm-bundled": { "version": "3.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7279,6 +7609,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/npm-install-checks": { "version": "6.3.0", + "extraneous": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { @@ -7290,6 +7621,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/npm-normalize-package-bin": { "version": "3.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -7298,6 +7630,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/npm-package-arg": { "version": "10.1.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7312,6 +7645,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/npm-packlist": { "version": "7.0.4", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7323,6 +7657,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/npm-pick-manifest": { "version": "8.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7337,6 +7672,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/npm-profile": { "version": "7.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7349,6 +7685,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/npm-registry-fetch": { "version": "14.0.5", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7366,6 +7703,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/npm-registry-fetch/node_modules/minipass": { "version": "5.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -7374,6 +7712,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/npm-user-validate": { "version": "2.0.0", + "extraneous": true, "inBundle": true, "license": "BSD-2-Clause", "engines": { @@ -7382,6 +7721,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/npmlog": { "version": "7.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7396,6 +7736,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/once": { "version": "1.4.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7404,6 +7745,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/p-map": { "version": "4.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7418,6 +7760,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/pacote": { "version": "15.2.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7449,6 +7792,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/pacote/node_modules/minipass": { "version": "5.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -7457,6 +7801,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/parse-conflict-json": { "version": "3.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7470,6 +7815,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/path-is-absolute": { "version": "1.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -7478,6 +7824,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/path-key": { "version": "3.1.1", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -7486,6 +7833,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/path-scurry": { "version": "1.10.1", + "extraneous": true, "inBundle": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -7501,6 +7849,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/path-scurry/node_modules/lru-cache": { "version": "10.2.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -7509,6 +7858,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/postcss-selector-parser": { "version": "6.0.15", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7521,6 +7871,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/proc-log": { "version": "3.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -7529,6 +7880,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/promise-all-reject-late": { "version": "1.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "funding": { @@ -7537,6 +7889,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/promise-call-limit": { "version": "1.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "funding": { @@ -7545,11 +7898,13 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/promise-inflight": { "version": "1.0.1", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/promise-retry": { "version": "2.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7562,6 +7917,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/promzard": { "version": "1.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7573,6 +7929,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/qrcode-terminal": { "version": "0.12.0", + "extraneous": true, "inBundle": true, "bin": { "qrcode-terminal": "bin/qrcode-terminal.js" @@ -7580,6 +7937,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/read": { "version": "2.1.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7591,6 +7949,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/read-cmd-shim": { "version": "4.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -7599,6 +7958,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/read-package-json": { "version": "6.0.4", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7613,6 +7973,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/read-package-json-fast": { "version": "3.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7625,6 +7986,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/readable-stream": { "version": "3.6.2", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7638,6 +8000,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/retry": { "version": "0.12.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -7646,6 +8009,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/rimraf": { "version": "3.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7660,6 +8024,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/rimraf/node_modules/brace-expansion": { "version": "1.1.11", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7669,6 +8034,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/rimraf/node_modules/glob": { "version": "7.2.3", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7688,6 +8054,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/rimraf/node_modules/minimatch": { "version": "3.1.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7699,6 +8066,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/safe-buffer": { "version": "5.2.1", + "extraneous": true, "funding": [ { "type": "github", @@ -7718,12 +8086,13 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/safer-buffer": { "version": "2.1.2", + "extraneous": true, "inBundle": true, - "license": "MIT", - "optional": true + "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/semver": { "version": "7.6.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7738,6 +8107,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/semver/node_modules/lru-cache": { "version": "6.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7749,11 +8119,13 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/set-blocking": { "version": "2.0.0", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/shebang-command": { "version": "2.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7765,6 +8137,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/shebang-regex": { "version": "3.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -7773,6 +8146,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/signal-exit": { "version": "4.1.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -7784,6 +8158,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/sigstore": { "version": "1.9.0", + "extraneous": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -7802,6 +8177,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/smart-buffer": { "version": "4.2.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -7811,6 +8187,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/socks": { "version": "2.8.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7824,6 +8201,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/socks-proxy-agent": { "version": "7.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7837,6 +8215,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/spdx-correct": { "version": "3.2.0", + "extraneous": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -7846,11 +8225,13 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/spdx-exceptions": { "version": "2.5.0", + "extraneous": true, "inBundle": true, "license": "CC-BY-3.0" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/spdx-expression-parse": { "version": "3.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7860,11 +8241,13 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/spdx-license-ids": { "version": "3.0.17", + "extraneous": true, "inBundle": true, "license": "CC0-1.0" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/ssri": { "version": "10.0.5", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7876,6 +8259,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/string_decoder": { "version": "1.3.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7884,6 +8268,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/string-width": { "version": "4.2.3", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7898,6 +8283,7 @@ "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/string-width-cjs": { "name": "string-width", "version": "4.2.3", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7911,6 +8297,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/strip-ansi": { "version": "6.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7923,6 +8310,7 @@ "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/strip-ansi-cjs": { "name": "strip-ansi", "version": "6.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7934,6 +8322,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/supports-color": { "version": "9.4.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -7945,6 +8334,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/tar": { "version": "6.2.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7961,6 +8351,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/tar/node_modules/fs-minipass": { "version": "2.1.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7972,6 +8363,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { "version": "3.3.6", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7983,6 +8375,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/tar/node_modules/minipass": { "version": "5.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -7991,16 +8384,19 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/text-table": { "version": "0.2.0", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/tiny-relative-date": { "version": "1.3.0", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/treeverse": { "version": "3.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -8009,6 +8405,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/tuf-js": { "version": "1.1.7", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8022,6 +8419,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/unique-filename": { "version": "3.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8033,6 +8431,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/unique-slug": { "version": "4.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8044,11 +8443,13 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/util-deprecate": { "version": "1.0.2", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/validate-npm-package-license": { "version": "3.0.4", + "extraneous": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -8058,6 +8459,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/validate-npm-package-name": { "version": "5.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8069,11 +8471,13 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/walk-up-path": { "version": "3.0.1", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/wcwidth": { "version": "1.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8082,6 +8486,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/which": { "version": "3.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8096,6 +8501,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/wide-align": { "version": "1.1.5", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8104,6 +8510,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/wrap-ansi": { "version": "8.1.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8121,6 +8528,7 @@ "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/wrap-ansi-cjs": { "name": "wrap-ansi", "version": "7.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8137,6 +8545,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { "version": "6.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -8148,6 +8557,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "6.2.1", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -8159,11 +8569,13 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": { "version": "9.2.2", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": { "version": "5.1.2", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8180,6 +8592,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/wrap-ansi/node_modules/strip-ansi": { "version": "7.1.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8194,11 +8607,13 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/wrappy": { "version": "1.0.2", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/write-file-atomic": { "version": "5.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8211,6 +8626,7 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/yallist": { "version": "4.0.0", + "extraneous": true, "inBundle": true, "license": "ISC" }, @@ -8500,20 +8916,22 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@colors/colors": { "version": "1.5.0", + "extraneous": true, "inBundle": true, "license": "MIT", - "optional": true, "engines": { "node": ">=0.1.90" } }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@gar/promisify": { "version": "1.1.3", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@isaacs/cliui": { "version": "8.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8530,6 +8948,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@isaacs/cliui/node_modules/ansi-regex": { "version": "6.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -8541,11 +8960,13 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": { "version": "9.2.2", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8562,6 +8983,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@isaacs/cliui/node_modules/strip-ansi": { "version": "7.1.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8576,11 +8998,13 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@isaacs/string-locale-compare": { "version": "1.1.0", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@npmcli/arborist": { "version": "6.5.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8627,6 +9051,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@npmcli/config": { "version": "6.4.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8645,6 +9070,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@npmcli/disparity-colors": { "version": "3.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8656,6 +9082,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@npmcli/fs": { "version": "3.1.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8667,6 +9094,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@npmcli/git": { "version": "4.1.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8685,6 +9113,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@npmcli/installed-package-contents": { "version": "2.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8700,6 +9129,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@npmcli/map-workspaces": { "version": "3.0.4", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8714,6 +9144,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@npmcli/metavuln-calculator": { "version": "5.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8728,6 +9159,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@npmcli/move-file": { "version": "2.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8740,6 +9172,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@npmcli/name-from-folder": { "version": "2.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -8748,6 +9181,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@npmcli/node-gyp": { "version": "3.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -8756,6 +9190,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@npmcli/package-json": { "version": "4.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8773,6 +9208,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@npmcli/promise-spawn": { "version": "6.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8784,6 +9220,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@npmcli/query": { "version": "3.1.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8795,6 +9232,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@npmcli/run-script": { "version": "6.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8810,15 +9248,16 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@pkgjs/parseargs": { "version": "0.11.0", + "extraneous": true, "inBundle": true, "license": "MIT", - "optional": true, "engines": { "node": ">=14" } }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@sigstore/bundle": { "version": "1.1.0", + "extraneous": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -8830,6 +9269,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@sigstore/protobuf-specs": { "version": "0.2.1", + "extraneous": true, "inBundle": true, "license": "Apache-2.0", "engines": { @@ -8838,6 +9278,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@sigstore/sign": { "version": "1.0.0", + "extraneous": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -8851,6 +9292,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@sigstore/tuf": { "version": "1.0.3", + "extraneous": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -8863,6 +9305,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@tootallnate/once": { "version": "2.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -8871,6 +9314,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@tufjs/canonical-json": { "version": "1.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -8879,6 +9323,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@tufjs/models": { "version": "1.0.4", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8891,6 +9336,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/abbrev": { "version": "2.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -8899,6 +9345,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/agent-base": { "version": "6.0.2", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8910,6 +9357,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/agentkeepalive": { "version": "4.5.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8921,6 +9369,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/aggregate-error": { "version": "3.1.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8933,6 +9382,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/ansi-regex": { "version": "5.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -8941,6 +9391,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/ansi-styles": { "version": "4.3.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8955,16 +9406,19 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/aproba": { "version": "2.0.0", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/archy": { "version": "1.0.0", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/are-we-there-yet": { "version": "4.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -8973,11 +9427,13 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/balanced-match": { "version": "1.0.2", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/bin-links": { "version": "4.0.3", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8992,6 +9448,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/binary-extensions": { "version": "2.2.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -9000,6 +9457,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/brace-expansion": { "version": "2.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9008,6 +9466,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/builtins": { "version": "5.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9016,6 +9475,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/cacache": { "version": "17.1.4", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9038,6 +9498,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/chalk": { "version": "5.3.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -9049,6 +9510,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/chownr": { "version": "2.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -9057,6 +9519,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/ci-info": { "version": "4.0.0", + "extraneous": true, "funding": [ { "type": "github", @@ -9071,6 +9534,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/cidr-regex": { "version": "3.1.1", + "extraneous": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { @@ -9082,6 +9546,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/clean-stack": { "version": "2.2.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -9090,6 +9555,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/cli-columns": { "version": "4.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9102,6 +9568,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/cli-table3": { "version": "0.6.3", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9116,6 +9583,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/clone": { "version": "1.0.4", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -9124,6 +9592,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/cmd-shim": { "version": "6.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -9132,6 +9601,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/color-convert": { "version": "2.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9143,11 +9613,13 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/color-name": { "version": "1.1.4", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/color-support": { "version": "1.1.3", + "extraneous": true, "inBundle": true, "license": "ISC", "bin": { @@ -9156,6 +9628,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/columnify": { "version": "1.6.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9168,21 +9641,25 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/common-ancestor-path": { "version": "1.0.1", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/concat-map": { "version": "0.0.1", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/console-control-strings": { "version": "1.1.0", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/cross-spawn": { "version": "7.0.6", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9196,6 +9673,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/cross-spawn/node_modules/which": { "version": "2.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9210,6 +9688,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/cssesc": { "version": "3.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "bin": { @@ -9221,6 +9700,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/debug": { "version": "4.3.7", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9237,6 +9717,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/defaults": { "version": "1.0.4", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9248,11 +9729,13 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/delegates": { "version": "1.0.0", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/diff": { "version": "5.2.0", + "extraneous": true, "inBundle": true, "license": "BSD-3-Clause", "engines": { @@ -9261,25 +9744,28 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/eastasianwidth": { "version": "0.2.0", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/emoji-regex": { "version": "8.0.0", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/encoding": { "version": "0.1.13", + "extraneous": true, "inBundle": true, "license": "MIT", - "optional": true, "dependencies": { "iconv-lite": "^0.6.2" } }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/env-paths": { "version": "2.2.1", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -9288,16 +9774,19 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/err-code": { "version": "2.0.3", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/exponential-backoff": { "version": "3.1.1", + "extraneous": true, "inBundle": true, "license": "Apache-2.0" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/fastest-levenshtein": { "version": "1.0.16", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -9306,6 +9795,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/foreground-child": { "version": "3.1.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9321,6 +9811,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/fs-minipass": { "version": "3.0.3", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9332,11 +9823,13 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/fs.realpath": { "version": "1.0.0", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/function-bind": { "version": "1.1.2", + "extraneous": true, "inBundle": true, "license": "MIT", "funding": { @@ -9345,6 +9838,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/gauge": { "version": "5.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9363,6 +9857,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/glob": { "version": "10.3.10", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9384,16 +9879,19 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/graceful-fs": { "version": "4.2.11", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/has-unicode": { "version": "2.0.1", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/hasown": { "version": "2.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9405,6 +9903,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/hosted-git-info": { "version": "6.1.3", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9416,11 +9915,13 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/http-cache-semantics": { "version": "4.1.1", + "extraneous": true, "inBundle": true, "license": "BSD-2-Clause" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/http-proxy-agent": { "version": "5.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9434,6 +9935,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/https-proxy-agent": { "version": "5.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9446,6 +9948,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/humanize-ms": { "version": "1.2.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9454,9 +9957,9 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/iconv-lite": { "version": "0.6.3", + "extraneous": true, "inBundle": true, "license": "MIT", - "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -9466,6 +9969,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/ignore-walk": { "version": "6.0.4", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9477,6 +9981,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/imurmurhash": { "version": "0.1.4", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -9485,6 +9990,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/indent-string": { "version": "4.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -9493,11 +9999,13 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/infer-owner": { "version": "1.0.4", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/inflight": { "version": "1.0.6", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9507,11 +10015,13 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/inherits": { "version": "2.0.4", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/ini": { "version": "4.1.1", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -9520,6 +10030,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/init-package-json": { "version": "5.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9537,6 +10048,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/ip-address": { "version": "9.0.5", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9549,11 +10061,13 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/ip-address/node_modules/sprintf-js": { "version": "1.1.3", + "extraneous": true, "inBundle": true, "license": "BSD-3-Clause" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/ip-regex": { "version": "4.3.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -9562,6 +10076,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/is-cidr": { "version": "4.0.2", + "extraneous": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { @@ -9573,6 +10088,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/is-core-module": { "version": "2.13.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9584,6 +10100,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -9592,16 +10109,19 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/is-lambda": { "version": "1.0.1", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/isexe": { "version": "2.0.0", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/jackspeak": { "version": "2.3.6", + "extraneous": true, "inBundle": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -9619,11 +10139,13 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/jsbn": { "version": "1.1.0", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/json-parse-even-better-errors": { "version": "3.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -9632,6 +10154,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/json-stringify-nice": { "version": "1.1.4", + "extraneous": true, "inBundle": true, "license": "ISC", "funding": { @@ -9643,21 +10166,25 @@ "engines": [ "node >= 0.2.0" ], + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/just-diff": { "version": "6.0.2", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/just-diff-apply": { "version": "5.5.0", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/libnpmaccess": { "version": "7.0.3", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9670,6 +10197,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/libnpmdiff": { "version": "5.0.21", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9689,6 +10217,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/libnpmexec": { "version": "6.0.5", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9710,6 +10239,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/libnpmfund": { "version": "4.2.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9721,6 +10251,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/libnpmhook": { "version": "9.0.4", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9733,6 +10264,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/libnpmorg": { "version": "5.0.5", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9745,6 +10277,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/libnpmpack": { "version": "5.0.21", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9759,6 +10292,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/libnpmpublish": { "version": "7.5.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9777,6 +10311,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/libnpmsearch": { "version": "6.0.3", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9788,6 +10323,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/libnpmteam": { "version": "5.0.4", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9800,6 +10336,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/libnpmversion": { "version": "4.0.3", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9815,6 +10352,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/lru-cache": { "version": "7.18.3", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -9823,6 +10361,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/make-fetch-happen": { "version": "11.1.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9848,6 +10387,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/make-fetch-happen/node_modules/minipass": { "version": "5.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -9856,6 +10396,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/minimatch": { "version": "9.0.3", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9870,6 +10411,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/minipass": { "version": "7.0.4", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -9878,6 +10420,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/minipass-collect": { "version": "1.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9889,6 +10432,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/minipass-collect/node_modules/minipass": { "version": "3.3.6", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9900,6 +10444,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/minipass-fetch": { "version": "3.0.4", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9916,6 +10461,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/minipass-flush": { "version": "1.0.5", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9927,6 +10473,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/minipass-flush/node_modules/minipass": { "version": "3.3.6", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9938,6 +10485,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/minipass-json-stream": { "version": "1.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9947,6 +10495,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/minipass-json-stream/node_modules/minipass": { "version": "3.3.6", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9958,6 +10507,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/minipass-pipeline": { "version": "1.2.4", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9969,6 +10519,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass": { "version": "3.3.6", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9980,6 +10531,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/minipass-sized": { "version": "1.0.3", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9991,6 +10543,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/minipass-sized/node_modules/minipass": { "version": "3.3.6", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10002,6 +10555,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/minizlib": { "version": "2.1.2", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -10014,6 +10568,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/minizlib/node_modules/minipass": { "version": "3.3.6", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10025,6 +10580,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/mkdirp": { "version": "1.0.4", + "extraneous": true, "inBundle": true, "license": "MIT", "bin": { @@ -10036,11 +10592,13 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/ms": { "version": "2.1.3", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/mute-stream": { "version": "1.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -10049,6 +10607,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/negotiator": { "version": "0.6.3", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -10057,6 +10616,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp": { "version": "9.4.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -10081,6 +10641,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/@npmcli/fs": { "version": "2.1.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10093,11 +10654,13 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/abbrev": { "version": "1.1.1", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/are-we-there-yet": { "version": "3.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10110,6 +10673,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/brace-expansion": { "version": "1.1.11", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -10119,6 +10683,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/cacache": { "version": "16.1.3", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10147,6 +10712,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/brace-expansion": { "version": "2.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -10155,6 +10721,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/glob": { "version": "8.1.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10173,6 +10740,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/minimatch": { "version": "5.1.6", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10184,6 +10752,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/fs-minipass": { "version": "2.1.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10195,6 +10764,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/gauge": { "version": "4.0.4", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10213,6 +10783,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/glob": { "version": "7.2.3", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10232,6 +10803,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/make-fetch-happen": { "version": "10.2.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10258,6 +10830,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/minimatch": { "version": "3.1.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10269,6 +10842,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/minipass": { "version": "3.3.6", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10280,6 +10854,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/minipass-fetch": { "version": "2.1.2", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -10296,6 +10871,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/nopt": { "version": "6.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10310,6 +10886,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/npmlog": { "version": "6.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10324,11 +10901,13 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/signal-exit": { "version": "3.0.7", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/ssri": { "version": "9.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10340,6 +10919,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/unique-filename": { "version": "2.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10351,6 +10931,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/unique-slug": { "version": "3.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10362,6 +10943,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/which": { "version": "2.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10376,6 +10958,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/nopt": { "version": "7.2.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10390,6 +10973,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/normalize-package-data": { "version": "5.0.0", + "extraneous": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { @@ -10404,6 +10988,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/npm-audit-report": { "version": "5.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -10412,6 +10997,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/npm-bundled": { "version": "3.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10423,6 +11009,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/npm-install-checks": { "version": "6.3.0", + "extraneous": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { @@ -10434,6 +11021,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/npm-normalize-package-bin": { "version": "3.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -10442,6 +11030,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/npm-package-arg": { "version": "10.1.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10456,6 +11045,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/npm-packlist": { "version": "7.0.4", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10467,6 +11057,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/npm-pick-manifest": { "version": "8.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10481,6 +11072,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/npm-profile": { "version": "7.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10493,6 +11085,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/npm-registry-fetch": { "version": "14.0.5", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10510,6 +11103,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/npm-registry-fetch/node_modules/minipass": { "version": "5.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -10518,6 +11112,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/npm-user-validate": { "version": "2.0.0", + "extraneous": true, "inBundle": true, "license": "BSD-2-Clause", "engines": { @@ -10526,6 +11121,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/npmlog": { "version": "7.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10540,6 +11136,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/once": { "version": "1.4.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10548,6 +11145,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/p-map": { "version": "4.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -10562,6 +11160,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/pacote": { "version": "15.2.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10593,6 +11192,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/pacote/node_modules/minipass": { "version": "5.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -10601,6 +11201,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/parse-conflict-json": { "version": "3.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10614,6 +11215,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/path-is-absolute": { "version": "1.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -10622,6 +11224,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/path-key": { "version": "3.1.1", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -10630,6 +11233,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/path-scurry": { "version": "1.10.1", + "extraneous": true, "inBundle": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -10645,6 +11249,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/path-scurry/node_modules/lru-cache": { "version": "10.2.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -10653,6 +11258,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/postcss-selector-parser": { "version": "6.0.15", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -10665,6 +11271,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/proc-log": { "version": "3.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -10673,6 +11280,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/promise-all-reject-late": { "version": "1.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "funding": { @@ -10681,6 +11289,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/promise-call-limit": { "version": "1.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "funding": { @@ -10689,11 +11298,13 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/promise-inflight": { "version": "1.0.1", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/promise-retry": { "version": "2.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -10706,6 +11317,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/promzard": { "version": "1.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10717,6 +11329,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/qrcode-terminal": { "version": "0.12.0", + "extraneous": true, "inBundle": true, "bin": { "qrcode-terminal": "bin/qrcode-terminal.js" @@ -10724,6 +11337,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/read": { "version": "2.1.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10735,6 +11349,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/read-cmd-shim": { "version": "4.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -10743,6 +11358,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/read-package-json": { "version": "6.0.4", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10757,6 +11373,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/read-package-json-fast": { "version": "3.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10769,6 +11386,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/readable-stream": { "version": "3.6.2", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -10782,6 +11400,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/retry": { "version": "0.12.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -10790,6 +11409,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/rimraf": { "version": "3.0.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10804,6 +11424,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/rimraf/node_modules/brace-expansion": { "version": "1.1.11", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -10813,6 +11434,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/rimraf/node_modules/glob": { "version": "7.2.3", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10832,6 +11454,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/rimraf/node_modules/minimatch": { "version": "3.1.2", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10843,6 +11466,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/safe-buffer": { "version": "5.2.1", + "extraneous": true, "funding": [ { "type": "github", @@ -10862,12 +11486,13 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/safer-buffer": { "version": "2.1.2", + "extraneous": true, "inBundle": true, - "license": "MIT", - "optional": true + "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/semver": { "version": "7.6.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10882,6 +11507,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/semver/node_modules/lru-cache": { "version": "6.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10893,11 +11519,13 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/set-blocking": { "version": "2.0.0", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/shebang-command": { "version": "2.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -10909,6 +11537,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/shebang-regex": { "version": "3.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -10917,6 +11546,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/signal-exit": { "version": "4.1.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -10928,6 +11558,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/sigstore": { "version": "1.9.0", + "extraneous": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -10946,6 +11577,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/smart-buffer": { "version": "4.2.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -10955,6 +11587,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/socks": { "version": "2.8.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -10968,6 +11601,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/socks-proxy-agent": { "version": "7.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -10981,6 +11615,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/spdx-correct": { "version": "3.2.0", + "extraneous": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -10990,11 +11625,13 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/spdx-exceptions": { "version": "2.5.0", + "extraneous": true, "inBundle": true, "license": "CC-BY-3.0" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/spdx-expression-parse": { "version": "3.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -11004,11 +11641,13 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/spdx-license-ids": { "version": "3.0.17", + "extraneous": true, "inBundle": true, "license": "CC0-1.0" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/ssri": { "version": "10.0.5", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11020,6 +11659,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/string_decoder": { "version": "1.3.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -11028,6 +11668,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/string-width": { "version": "4.2.3", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -11042,6 +11683,7 @@ "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/string-width-cjs": { "name": "string-width", "version": "4.2.3", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -11055,6 +11697,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/strip-ansi": { "version": "6.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -11067,6 +11710,7 @@ "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/strip-ansi-cjs": { "name": "strip-ansi", "version": "6.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -11078,6 +11722,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/supports-color": { "version": "9.4.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -11089,6 +11734,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/tar": { "version": "6.2.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11105,6 +11751,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/tar/node_modules/fs-minipass": { "version": "2.1.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11116,6 +11763,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { "version": "3.3.6", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11127,6 +11775,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/tar/node_modules/minipass": { "version": "5.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -11135,16 +11784,19 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/text-table": { "version": "0.2.0", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/tiny-relative-date": { "version": "1.3.0", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/treeverse": { "version": "3.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -11153,6 +11805,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/tuf-js": { "version": "1.1.7", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -11166,6 +11819,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/unique-filename": { "version": "3.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11177,6 +11831,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/unique-slug": { "version": "4.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11188,11 +11843,13 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/util-deprecate": { "version": "1.0.2", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/validate-npm-package-license": { "version": "3.0.4", + "extraneous": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -11202,6 +11859,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/validate-npm-package-name": { "version": "5.0.0", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11213,11 +11871,13 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/walk-up-path": { "version": "3.0.1", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/wcwidth": { "version": "1.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -11226,6 +11886,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/which": { "version": "3.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11240,6 +11901,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/wide-align": { "version": "1.1.5", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11248,6 +11910,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/wrap-ansi": { "version": "8.1.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -11265,6 +11928,7 @@ "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/wrap-ansi-cjs": { "name": "wrap-ansi", "version": "7.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -11281,6 +11945,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { "version": "6.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -11292,6 +11957,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "6.2.1", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -11303,11 +11969,13 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": { "version": "9.2.2", + "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": { "version": "5.1.2", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -11324,6 +11992,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/wrap-ansi/node_modules/strip-ansi": { "version": "7.1.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -11338,11 +12007,13 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/wrappy": { "version": "1.0.2", + "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/write-file-atomic": { "version": "5.0.1", + "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11355,6 +12026,7 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/yallist": { "version": "4.0.0", + "extraneous": true, "inBundle": true, "license": "ISC" }, @@ -12024,58 +12696,6 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@fabianbormann/cardano-peer-connect": { - "version": "1.2.18", - "resolved": "https://registry.npmjs.org/@fabianbormann/cardano-peer-connect/-/cardano-peer-connect-1.2.18.tgz", - "integrity": "sha512-eyVVMlThkURTsHFJDww253Mk+IzCR2yRYaepyomyqu9HWu2/N8qqC98vNksAbAQ12AzQs7ElwwRgT9HggOuhcw==", - "license": "Apache-2.0", - "dependencies": { - "@basementuniverse/marble-identicons": "^0.1.2", - "@fabianbormann/meerkat": "^1.0.17", - "qrcode-svg": "^1.1.0" - } - }, - "node_modules/@fabianbormann/meerkat": { - "version": "1.0.18", - "resolved": "https://registry.npmjs.org/@fabianbormann/meerkat/-/meerkat-1.0.18.tgz", - "integrity": "sha512-4QuyhlpouIJvcwqlItn91ugl8uC/L1muuN3XFLuO38qMrUucyV0+yykAp1RlzwOlO7YvDYZEaJ8kCa+/MU7UCg==", - "license": "Apache-2.0", - "dependencies": { - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@rvagg/ripemd160": "^2.2.4", - "@webpod/ip": "^0.6.1", - "bs58": "^6.0.0", - "bs58check": "^4.0.0", - "tweetnacl": "^1.0.3", - "vm-browserify": "^1.1.2", - "webtorrent": "^2.8.4" - } - }, - "node_modules/@fabianbormann/meerkat/node_modules/base-x": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-5.0.1.tgz", - "integrity": "sha512-M7uio8Zt++eg3jPj+rHMfCC+IuygQHHCOU+IYsVtik6FWjuYpVt/+MRKcgsAMHh8mMFAwnB+Bs+mTrFiXjMzKg==", - "license": "MIT" - }, - "node_modules/@fabianbormann/meerkat/node_modules/bs58": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-6.0.0.tgz", - "integrity": "sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==", - "license": "MIT", - "dependencies": { - "base-x": "^5.0.0" - } - }, - "node_modules/@fabianbormann/meerkat/node_modules/bs58check": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-4.0.0.tgz", - "integrity": "sha512-FsGDOnFg9aVI9erdriULkd/JjEWONV/lQE5aYziB5PoBsXRind56lh8doIZIc9X4HoxT5x4bLjMWN1/NB8Zp5g==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "^1.2.0", - "bs58": "^6.0.0" - } - }, "node_modules/@fastify/busboy": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", @@ -12163,6 +12783,37 @@ "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, + "node_modules/@grpc/grpc-js": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.14.3.tgz", + "integrity": "sha512-Iq8QQQ/7X3Sac15oB6p0FmUg/klxQvXLeileoqrTRGJYLV+/9tubbr9ipz0GKHjmXVsgFPo/+W+2cA8eNcR+XA==", + "license": "Apache-2.0", + "dependencies": { + "@grpc/proto-loader": "^0.8.0", + "@js-sdsl/ordered-map": "^4.4.2" + }, + "engines": { + "node": ">=12.10.0" + } + }, + "node_modules/@grpc/proto-loader": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.8.0.tgz", + "integrity": "sha512-rc1hOQtjIWGxcxpb9aHAfLpIctjEnsDehj0DAiVfBlmT84uvR0uUtN2hEi/ecvWVjXUGf5qPF4qEgiLOx1YIMQ==", + "license": "Apache-2.0", + "dependencies": { + "lodash.camelcase": "^4.3.0", + "long": "^5.0.0", + "protobufjs": "^7.5.3", + "yargs": "^17.7.2" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/@harmoniclabs/bigint-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@harmoniclabs/bigint-utils/-/bigint-utils-1.0.0.tgz", @@ -12202,6 +12853,7 @@ "integrity": "sha512-gzRqqcJL8sulc2/6iqRXZdWUCEeK3A+jwJ88sbVNzgk4IeMFQLSFg4Ck8ZBETu/W/q1zdknjNfJYyH1OxVriQA==", "deprecated": "update to 1.6.0", "license": "Apache-2.0", + "peer": true, "dependencies": { "@harmoniclabs/bytestring": "^1.0.0", "@harmoniclabs/obj-utils": "^1.0.0", @@ -13115,12 +13767,51 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@js-sdsl/ordered-map": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz", + "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, "node_modules/@leichtgewicht/ip-codec": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", "license": "MIT" }, + "node_modules/@lightsparkdev/core": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/@lightsparkdev/core/-/core-1.4.8.tgz", + "integrity": "sha512-ZnDJPQS6nrjqaDb++PAfI3KV/cWgaca76zTrQNPZOKF8Uhya8v6O0fIWmjlZR8GmBXx825PI4mwbcycZdfq3bA==", + "license": "Apache-2.0", + "dependencies": { + "dayjs": "^1.11.7", + "graphql": "^16.6.0", + "graphql-ws": "^5.11.3", + "secp256k1": "^5.0.1", + "ws": "^8.12.1", + "zen-observable-ts": "^1.1.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@lightsparkdev/core/node_modules/graphql-ws": { + "version": "5.16.2", + "resolved": "https://registry.npmjs.org/graphql-ws/-/graphql-ws-5.16.2.tgz", + "integrity": "sha512-E1uccsZxt/96jH/OwmLPuXMACILs76pKF2i3W861LpKBCYtGIyPQGtWLuBLkND4ox1KHns70e83PS4te50nvPQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "graphql": ">=0.11 <=16" + } + }, "node_modules/@mdx-js/loader": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/@mdx-js/loader/-/loader-3.1.1.tgz", @@ -13257,251 +13948,6 @@ "resolved": "packages/mesh-wallet", "link": true }, - "node_modules/@meshsdk/web3-sdk": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@meshsdk/web3-sdk/-/web3-sdk-0.0.50.tgz", - "integrity": "sha512-mBEdwGJNCJgUfl/VXDicGMe8duqzrNCNEiEgkSRy795JhXrppl9ARPb64P6AkryZ5DxRRjMqZyVNXQRv9fIITQ==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "license": "Apache-2.0", - "dependencies": { - "@meshsdk/bitcoin": "1.9.0-beta.68", - "@meshsdk/common": "1.9.0-beta.68", - "@meshsdk/core": "1.9.0-beta.68", - "@meshsdk/core-cst": "1.9.0-beta.68", - "@meshsdk/wallet": "1.9.0-beta.68", - "@peculiar/webcrypto": "^1.5.0", - "axios": "^1.8.3", - "base32-encoding": "^1.0.0", - "uuid": "^11.1.0" - } - }, - "node_modules/@meshsdk/web3-sdk/node_modules/@meshsdk/bitcoin": { - "version": "1.9.0-beta.68", - "resolved": "https://registry.npmjs.org/@meshsdk/bitcoin/-/bitcoin-1.9.0-beta.68.tgz", - "integrity": "sha512-Ni050tWpSR9GABYVgoB/3tOtINJElg8+A4BWsqU0Ez/HK0AJBxLj+/gKAwzIAsOw0utcxd7mgADFUjXZU+oDlQ==", - "dependencies": { - "@bitcoin-js/tiny-secp256k1-asmjs": "^2.2.3", - "bip174": "^3.0.0-rc.1", - "bip32": "^4.0.0", - "bip39": "^3.1.0", - "bitcoinjs-lib": "^6.1.7", - "ecpair": "^2.0.0" - } - }, - "node_modules/@meshsdk/web3-sdk/node_modules/@meshsdk/common": { - "version": "1.9.0-beta.68", - "resolved": "https://registry.npmjs.org/@meshsdk/common/-/common-1.9.0-beta.68.tgz", - "integrity": "sha512-rmL2uZzSTEW52OYNCdRF1mBdL4pXLcMwjNZrK3Np/6E1zl2to0pArMfuc2bUl5urTIDfTqa2CsuWpgzZQ47N6Q==", - "license": "Apache-2.0", - "dependencies": { - "bech32": "^2.0.0", - "bip39": "3.1.0", - "blake2b": "^2.1.4", - "blakejs": "^1.2.1" - } - }, - "node_modules/@meshsdk/web3-sdk/node_modules/@meshsdk/core": { - "version": "1.9.0-beta.68", - "resolved": "https://registry.npmjs.org/@meshsdk/core/-/core-1.9.0-beta.68.tgz", - "integrity": "sha512-/1ul9u+WDGylfICcX0Kj1FIDjH4lYyvDae3xmo+X/0DLXDCC9FwgWtpxIyJYXWJUTlsVfjvdqeLbPUeeQEniSw==", - "license": "Apache-2.0", - "dependencies": { - "@meshsdk/common": "1.9.0-beta.68", - "@meshsdk/core-cst": "1.9.0-beta.68", - "@meshsdk/provider": "1.9.0-beta.68", - "@meshsdk/react": "1.9.0-beta.68", - "@meshsdk/transaction": "1.9.0-beta.68", - "@meshsdk/wallet": "1.9.0-beta.68" - } - }, - "node_modules/@meshsdk/web3-sdk/node_modules/@meshsdk/core-cst": { - "version": "1.9.0-beta.68", - "resolved": "https://registry.npmjs.org/@meshsdk/core-cst/-/core-cst-1.9.0-beta.68.tgz", - "integrity": "sha512-7KXr9k+Cpg/g2Fwj/opwHl6/yw5fkPxDXe0yCBuX3IeOSwM1lfjaENVdBGUtxz+opkbg+0a8RyPt3wKQG+tiJA==", - "license": "Apache-2.0", - "dependencies": { - "@cardano-sdk/core": "^0.45.5", - "@cardano-sdk/crypto": "^0.2.2", - "@cardano-sdk/input-selection": "^0.13.33", - "@cardano-sdk/util": "^0.15.5", - "@harmoniclabs/cbor": "1.3.0", - "@harmoniclabs/pair": "^1.0.0", - "@harmoniclabs/plutus-data": "1.2.4", - "@harmoniclabs/uplc": "1.2.4", - "@meshsdk/common": "1.9.0-beta.68", - "@types/base32-encoding": "^1.0.2", - "base32-encoding": "^1.0.0", - "bech32": "^2.0.0", - "blakejs": "^1.2.1", - "bn.js": "^5.2.0" - } - }, - "node_modules/@meshsdk/web3-sdk/node_modules/@meshsdk/provider": { - "version": "1.9.0-beta.68", - "resolved": "https://registry.npmjs.org/@meshsdk/provider/-/provider-1.9.0-beta.68.tgz", - "integrity": "sha512-FzcPet8fDBT37CNc2cD/iYGhYsHar6E1dQtt/p2P+DGqnKd7IYp7L6T98fbEBzrJJZI8S0BuhLmRSdAQ0OTqSg==", - "license": "Apache-2.0", - "dependencies": { - "@meshsdk/common": "1.9.0-beta.68", - "@meshsdk/core-cst": "1.9.0-beta.68", - "@utxorpc/sdk": "^0.6.7", - "@utxorpc/spec": "^0.16.0", - "axios": "^1.7.2", - "cbor": "^10.0.9" - } - }, - "node_modules/@meshsdk/web3-sdk/node_modules/@meshsdk/react": { - "version": "1.9.0-beta.68", - "resolved": "https://registry.npmjs.org/@meshsdk/react/-/react-1.9.0-beta.68.tgz", - "integrity": "sha512-6LPeyj8qChVBpE+ulBah/WS2N5loLpxnrvYFQ6i4po0kRpLDta13jxF7qE4lQ00olsU5qnjEh5KOCbnhhCxSmw==", - "license": "Apache-2.0", - "dependencies": { - "@fabianbormann/cardano-peer-connect": "^1.2.18", - "@meshsdk/bitcoin": "1.9.0-beta.68", - "@meshsdk/common": "1.9.0-beta.68", - "@meshsdk/transaction": "1.9.0-beta.68", - "@meshsdk/wallet": "1.9.0-beta.68", - "@meshsdk/web3-sdk": "0.0.37", - "@radix-ui/react-dialog": "^1.1.2", - "@radix-ui/react-dropdown-menu": "^2.1.2", - "@radix-ui/react-icons": "^1.3.2", - "@radix-ui/react-label": "^2.1.1", - "@radix-ui/react-tooltip": "^1.1.4", - "class-variance-authority": "^0.7.1", - "tailwind-merge": "^2.6.0", - "tailwindcss-animate": "^1.0.7" - }, - "peerDependencies": { - "react": ">=16.0.0 <20.0.0 || >=16.0.0-rc <20.0.0-rc || >=19.0.0-rc", - "react-dom": ">=16.0.0 <20.0.0 || >=16.0.0-rc <20.0.0-rc || >=19.0.0-rc" - } - }, - "node_modules/@meshsdk/web3-sdk/node_modules/@meshsdk/transaction": { - "version": "1.9.0-beta.68", - "resolved": "https://registry.npmjs.org/@meshsdk/transaction/-/transaction-1.9.0-beta.68.tgz", - "integrity": "sha512-FsVKqtCyAGrk3IRzEKIr4R6SNYFEGClwCPzM6LlfuC1z97lScM7yP9FgwkOMe4ZPXn4BS32i62X7EdQVIaQwMg==", - "license": "Apache-2.0", - "dependencies": { - "@cardano-sdk/core": "^0.45.5", - "@cardano-sdk/input-selection": "^0.13.33", - "@cardano-sdk/util": "^0.15.5", - "@meshsdk/common": "1.9.0-beta.68", - "@meshsdk/core-cst": "1.9.0-beta.68", - "json-bigint": "^1.0.0" - } - }, - "node_modules/@meshsdk/web3-sdk/node_modules/@meshsdk/wallet": { - "version": "1.9.0-beta.68", - "resolved": "https://registry.npmjs.org/@meshsdk/wallet/-/wallet-1.9.0-beta.68.tgz", - "integrity": "sha512-7rxU2MD4cDYDoS6soIOqeS+2HVW8ONm/j11+sgoMvLiUbPCpfogWLGLklRKxvZhgzAipUKbPNjak24AoD0Tq6g==", - "license": "Apache-2.0", - "dependencies": { - "@meshsdk/common": "1.9.0-beta.68", - "@meshsdk/core-cst": "1.9.0-beta.68", - "@meshsdk/transaction": "1.9.0-beta.68", - "@simplewebauthn/browser": "^13.0.0" - } - }, - "node_modules/@meshsdk/web3-sdk/node_modules/@meshsdk/web3-sdk": { - "version": "0.0.37", - "resolved": "https://registry.npmjs.org/@meshsdk/web3-sdk/-/web3-sdk-0.0.37.tgz", - "integrity": "sha512-uRG0jLjsa83JbPZqnVkec3gjvi0LEMiu1E6ItUALEnKUTTuhDOe3Cx4Ov1PbPTsYVsGRq61DCgzCNHSh2bXy+Q==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "license": "Apache-2.0", - "dependencies": { - "@meshsdk/bitcoin": "1.9.0-beta.53", - "@meshsdk/common": "1.9.0-beta.53", - "@meshsdk/core-cst": "1.9.0-beta.53", - "@meshsdk/wallet": "1.9.0-beta.53", - "@peculiar/webcrypto": "^1.5.0", - "axios": "^1.8.3", - "base32-encoding": "^1.0.0", - "uuid": "^11.1.0" - } - }, - "node_modules/@meshsdk/web3-sdk/node_modules/@meshsdk/web3-sdk/node_modules/@meshsdk/bitcoin": { - "version": "1.9.0-beta.53", - "resolved": "https://registry.npmjs.org/@meshsdk/bitcoin/-/bitcoin-1.9.0-beta.53.tgz", - "integrity": "sha512-nl6+UZT05vpWUT+Vic2IkhfeJPZlNHm0zvDlOmos5u2JcC1li9T0QmMjYLvyaSj0u29Q0v+iRR4fvF0a8RZTQA==", - "dependencies": { - "@bitcoin-js/tiny-secp256k1-asmjs": "^2.2.3", - "bip174": "^3.0.0-rc.1", - "bip32": "^4.0.0", - "bip39": "^3.1.0", - "bitcoinjs-lib": "^6.1.7", - "ecpair": "^2.0.0" - } - }, - "node_modules/@meshsdk/web3-sdk/node_modules/@meshsdk/web3-sdk/node_modules/@meshsdk/common": { - "version": "1.9.0-beta.53", - "resolved": "https://registry.npmjs.org/@meshsdk/common/-/common-1.9.0-beta.53.tgz", - "integrity": "sha512-GH75W2P4LPb8MS/F+ftP1wmf2UhSYsug9Naq09bvEU1woohJLmpkJ6JJ1e9fBbAK/N3VRVQEGvv+yM4zs634rQ==", - "license": "Apache-2.0", - "dependencies": { - "bech32": "^2.0.0", - "bip39": "3.1.0", - "blake2b": "^2.1.4", - "blakejs": "^1.2.1" - } - }, - "node_modules/@meshsdk/web3-sdk/node_modules/@meshsdk/web3-sdk/node_modules/@meshsdk/core-cst": { - "version": "1.9.0-beta.53", - "resolved": "https://registry.npmjs.org/@meshsdk/core-cst/-/core-cst-1.9.0-beta.53.tgz", - "integrity": "sha512-u8I1g8EqfI+ysCtMg258NrMZ+uoSdM5RlrfVRuss0a7jsrSB64ae1kZXDaO2HROycpwz+muZbCVN5JywSVKmTQ==", - "license": "Apache-2.0", - "dependencies": { - "@cardano-sdk/core": "^0.45.5", - "@cardano-sdk/crypto": "^0.2.2", - "@cardano-sdk/input-selection": "^0.13.33", - "@cardano-sdk/util": "^0.15.5", - "@harmoniclabs/cbor": "1.3.0", - "@harmoniclabs/pair": "^1.0.0", - "@harmoniclabs/plutus-data": "1.2.4", - "@harmoniclabs/uplc": "1.2.4", - "@meshsdk/common": "1.9.0-beta.53", - "@types/base32-encoding": "^1.0.2", - "base32-encoding": "^1.0.0", - "bech32": "^2.0.0", - "blakejs": "^1.2.1", - "bn.js": "^5.2.0" - } - }, - "node_modules/@meshsdk/web3-sdk/node_modules/@meshsdk/web3-sdk/node_modules/@meshsdk/transaction": { - "version": "1.9.0-beta.53", - "resolved": "https://registry.npmjs.org/@meshsdk/transaction/-/transaction-1.9.0-beta.53.tgz", - "integrity": "sha512-U53sj8Qve9/XQPqy6gaO7Sm57Fq0tGcYcTlIUq2XUOZtVV0ad88qvCakj9AG0uSq0WnrvPk+L0ExmnnzyL/akw==", - "license": "Apache-2.0", - "dependencies": { - "@cardano-sdk/core": "^0.45.5", - "@cardano-sdk/input-selection": "^0.13.33", - "@cardano-sdk/util": "^0.15.5", - "@meshsdk/common": "1.9.0-beta.53", - "@meshsdk/core-cst": "1.9.0-beta.53", - "json-bigint": "^1.0.0" - } - }, - "node_modules/@meshsdk/web3-sdk/node_modules/@meshsdk/web3-sdk/node_modules/@meshsdk/wallet": { - "version": "1.9.0-beta.53", - "resolved": "https://registry.npmjs.org/@meshsdk/wallet/-/wallet-1.9.0-beta.53.tgz", - "integrity": "sha512-UyvcRbh3StEowkjTyuomDqG5Pykgbz3PU84gB9LdbxGuX46ZUaqHa5+zq+TfOreJ9CVvIEPkg7YwLas6c1HqMw==", - "license": "Apache-2.0", - "dependencies": { - "@meshsdk/common": "1.9.0-beta.53", - "@meshsdk/core-cst": "1.9.0-beta.53", - "@meshsdk/transaction": "1.9.0-beta.53", - "@simplewebauthn/browser": "^13.0.0" - } - }, - "node_modules/@meshsdk/web3-sdk/node_modules/tailwind-merge": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.6.0.tgz", - "integrity": "sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/dcastil" - } - }, "node_modules/@microsoft/tsdoc": { "version": "0.14.2", "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz", @@ -14328,6 +14774,162 @@ "integrity": "sha512-gvX9u9v5xLUMDWITYPqDr/QTWFTDgTbprz2Wn1YQJs7WW2JLuaOGmDQn4ZWsv54VsGt/j/paRmGCbaqZYDJECQ==", "license": "MIT" }, + "node_modules/@opentelemetry/api": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/api-logs": { + "version": "0.203.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.203.0.tgz", + "integrity": "sha512-9B9RU0H7Ya1Dx/Rkyc4stuBZSGVQF27WigitInx2QQoj6KUpEFYPKoWjdFTunJYxmXmh17HeBvbMa1EhGyPmqQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/context-async-hooks": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-2.5.0.tgz", + "integrity": "sha512-uOXpVX0ZjO7heSVjhheW2XEPrhQAWr2BScDPoZ9UDycl5iuHG+Usyc3AIfG6kZeC1GyLpMInpQ6X5+9n69yOFw==", + "license": "Apache-2.0", + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/core": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.5.0.tgz", + "integrity": "sha512-ka4H8OM6+DlUhSAZpONu0cPBtPPTQKxbxVzC4CzVx5+K4JnroJVBtDzLAMx4/3CDTJXRvVFhpFjtl4SaiTNoyQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/instrumentation": { + "version": "0.203.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.203.0.tgz", + "integrity": "sha512-ke1qyM+3AK2zPuBPb6Hk/GCsc5ewbLvPNkEuELx/JmANeEp6ZjnZ+wypPAJSucTw0wvCGrUaibDSdcrGFoWxKQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.203.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-undici": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-undici/-/instrumentation-undici-0.14.0.tgz", + "integrity": "sha512-2HN+7ztxAReXuxzrtA3WboAKlfP5OsPA57KQn2AdYZbJ3zeRPcLXyW4uO/jpLE6PLm0QRtmeGCmfYpqRlwgSwg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.203.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.7.0" + } + }, + "node_modules/@opentelemetry/resources": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.5.0.tgz", + "integrity": "sha512-F8W52ApePshpoSrfsSk1H2yJn9aKjCrbpQF1M9Qii0GHzbfVeFUB+rc3X4aggyZD8x9Gu3Slua+s6krmq6Dt8g==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.5.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-base": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.5.0.tgz", + "integrity": "sha512-VzRf8LzotASEyNDUxTdaJ9IRJ1/h692WyArDBInf5puLCjxbICD6XkHgpuudis56EndyS7LYFmtTMny6UABNdQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.5.0", + "@opentelemetry/resources": "2.5.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-node": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-2.5.0.tgz", + "integrity": "sha512-O6N/ejzburFm2C84aKNrwJVPpt6HSTSq8T0ZUMq3xT2XmqT4cwxUItcL5UWGThYuq8RTcbH8u1sfj6dmRci0Ow==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/context-async-hooks": "2.5.0", + "@opentelemetry/core": "2.5.0", + "@opentelemetry/sdk-trace-base": "2.5.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-web": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-web/-/sdk-trace-web-2.5.0.tgz", + "integrity": "sha512-xWibakHs+xbx6vxH7Q8TbFS6zjf812o/kIS4xBDB32qSL9wF+Z5IZl2ZAGu4rtmPBQ7coZcOd684DobMhf8dKw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.5.0", + "@opentelemetry/sdk-trace-base": "2.5.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/semantic-conventions": { + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.39.0.tgz", + "integrity": "sha512-R5R9tb2AXs2IRLNKLBJDynhkfmx7mX0vi8NkhZb3gUkPWHn6HXk5J8iQ/dql0U3ApfWym4kXXmBDRGO+oeOfjg==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, "node_modules/@peculiar/asn1-schema": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.6.0.tgz", @@ -14367,17 +14969,6 @@ "node": ">=10.12.0" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, "node_modules/@pkgr/core": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", @@ -14489,36 +15080,31 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", - "license": "BSD-3-Clause", - "peer": true + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/base64": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", - "license": "BSD-3-Clause", - "peer": true + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/codegen": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", - "license": "BSD-3-Clause", - "peer": true + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/eventemitter": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", - "license": "BSD-3-Clause", - "peer": true + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/fetch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", "license": "BSD-3-Clause", - "peer": true, "dependencies": { "@protobufjs/aspromise": "^1.1.1", "@protobufjs/inquire": "^1.1.0" @@ -14528,36 +15114,31 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", - "license": "BSD-3-Clause", - "peer": true + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/inquire": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", - "license": "BSD-3-Clause", - "peer": true + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/path": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", - "license": "BSD-3-Clause", - "peer": true + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/pool": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", - "license": "BSD-3-Clause", - "peer": true + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/utf8": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", - "license": "BSD-3-Clause", - "peer": true + "license": "BSD-3-Clause" }, "node_modules/@radix-ui/primitive": { "version": "1.1.3", @@ -15978,12 +16559,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@rvagg/ripemd160": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@rvagg/ripemd160/-/ripemd160-2.2.4.tgz", - "integrity": "sha512-ejuJhx9Q+hfOy/4w86E+obE4OAzTVcDh6QNc0v/0IG9hHvegqzwLeltNJSarzkXvIIZfgh63a/EZhpA25VoJLg==", - "license": "MIT" - }, "node_modules/@scure/base": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz", @@ -15993,6 +16568,48 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/@scure/bip32": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.7.0.tgz", + "integrity": "sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==", + "license": "MIT", + "dependencies": { + "@noble/curves": "~1.9.0", + "@noble/hashes": "~1.8.0", + "@scure/base": "~1.2.5" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.6.0.tgz", + "integrity": "sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "~1.8.0", + "@scure/base": "~1.2.5" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/btc-signer": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@scure/btc-signer/-/btc-signer-1.8.1.tgz", + "integrity": "sha512-8nX9T++dFyKpvqksNHfSi9CgRsGnHAQtCdIQ1y1GmbCGLpV97v4MUyemUUT6uDumKL3oo3m4niyY6A32nmdLuQ==", + "license": "MIT", + "dependencies": { + "@noble/curves": "~1.9.0", + "@noble/hashes": "~1.8.0", + "@scure/base": "~1.2.5", + "micro-packed": "~0.7.3" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@sec-ant/readable-stream": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", @@ -16108,23 +16725,6 @@ "integrity": "sha512-XlUFBrLQ0FJxln52GRozxsVyCbueJwT4gU2G1jFLPEnZ8dN49e6Wgg82bLd204MEWJ1zKe3c7nHLMFAAz5jKfA==", "license": "Apache-2.0" }, - "node_modules/@silentbot1/nat-api": { - "version": "0.4.9", - "resolved": "https://registry.npmjs.org/@silentbot1/nat-api/-/nat-api-0.4.9.tgz", - "integrity": "sha512-Bm2Fr0sJyGr4B/XgKjQxjGe7Rzs/OlK91OIHsghObxhP3Y4j2y8o7Xjlledu/pxzFEIWaTbZIBSl8ABqoP/WhQ==", - "license": "MIT", - "dependencies": { - "chrome-dgram": "^3.0.6", - "cross-fetch-ponyfill": "^1.0.3", - "debug": "^4.4.0", - "default-gateway": "^7.2.2", - "unordered-array-remove": "^1.0.2", - "xml2js": "^0.6.2" - }, - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/@simplewebauthn/browser": { "version": "13.2.2", "resolved": "https://registry.npmjs.org/@simplewebauthn/browser/-/browser-13.2.2.tgz", @@ -16410,7 +17010,7 @@ "version": "1.15.8", "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.15.8.tgz", "integrity": "sha512-T8keoJjXaSUoVBCIjgL6wAnhADIb09GOELzKg10CjNg+vLX48P93SME6jTfte9MZIm5m+Il57H3rTSk/0kzDUw==", - "devOptional": true, + "dev": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { @@ -16445,166 +17045,6 @@ } } }, - "node_modules/@swc/core-darwin-arm64": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.8.tgz", - "integrity": "sha512-M9cK5GwyWWRkRGwwCbREuj6r8jKdES/haCZ3Xckgkl8MUQJZA3XB7IXXK1IXRNeLjg6m7cnoMICpXv1v1hlJOg==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-darwin-x64": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.15.8.tgz", - "integrity": "sha512-j47DasuOvXl80sKJHSi2X25l44CMc3VDhlJwA7oewC1nV1VsSzwX+KOwE5tLnfORvVJJyeiXgJORNYg4jeIjYQ==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.8.tgz", - "integrity": "sha512-siAzDENu2rUbwr9+fayWa26r5A9fol1iORG53HWxQL1J8ym4k7xt9eME0dMPXlYZDytK5r9sW8zEA10F2U3Xwg==", - "cpu": [ - "arm" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.8.tgz", - "integrity": "sha512-o+1y5u6k2FfPYbTRUPvurwzNt5qd0NTumCTFscCNuBksycloXY16J8L+SMW5QRX59n4Hp9EmFa3vpvNHRVv1+Q==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.8.tgz", - "integrity": "sha512-koiCqL09EwOP1S2RShCI7NbsQuG6r2brTqUYE7pV7kZm9O17wZ0LSz22m6gVibpwEnw8jI3IE1yYsQTVpluALw==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.8.tgz", - "integrity": "sha512-4p6lOMU3bC+Vd5ARtKJ/FxpIC5G8v3XLoPEZ5s7mLR8h7411HWC/LmTXDHcrSXRC55zvAVia1eldy6zDLz8iFQ==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-x64-musl": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.8.tgz", - "integrity": "sha512-z3XBnbrZAL+6xDGAhJoN4lOueIxC/8rGrJ9tg+fEaeqLEuAtHSW2QHDHxDwkxZMjuF/pZ6MUTjHjbp8wLbuRLA==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.8.tgz", - "integrity": "sha512-djQPJ9Rh9vP8GTS/Df3hcc6XP6xnG5c8qsngWId/BLA9oX6C7UzCPAn74BG/wGb9a6j4w3RINuoaieJB3t+7iQ==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.8.tgz", - "integrity": "sha512-/wfAgxORg2VBaUoFdytcVBVCgf1isWZIEXB9MZEUty4wwK93M/PxAkjifOho9RN3WrM3inPLabICRCEgdHpKKQ==", - "cpu": [ - "ia32" - ], - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.8.tgz", - "integrity": "sha512-GpMePrh9Sl4d61o4KAHOOv5is5+zt6BEXCOCgs/H0FLGeii7j9bWDE8ExvKFy2GRRZVNR1ugsnzaGWHKM6kuzA==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, "node_modules/@swc/counter": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", @@ -16624,7 +17064,7 @@ "version": "0.1.25", "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.25.tgz", "integrity": "sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "dependencies": { "@swc/counter": "^0.1.3" @@ -16634,7 +17074,7 @@ "version": "1.15.8", "resolved": "https://registry.npmjs.org/@swc/wasm/-/wasm-1.15.8.tgz", "integrity": "sha512-RG2BxGbbsjtddFCo1ghKH6A/BMXbY1eMBfpysV0lJMCpI4DZOjW1BNBnxvBt7YsYmlJtmy5UXIg9/4ekBTFFaQ==", - "devOptional": true, + "dev": true, "license": "Apache-2.0" }, "node_modules/@szmarczak/http-timer": { @@ -16689,44 +17129,6 @@ "url": "https://github.com/sponsors/tannerlinsley" } }, - "node_modules/@thaunknown/simple-peer": { - "version": "10.0.12", - "resolved": "https://registry.npmjs.org/@thaunknown/simple-peer/-/simple-peer-10.0.12.tgz", - "integrity": "sha512-sDrkkOdzlJL8+FXQqYcBb2THHQU+Yrar92SjfW4ZLs877/4QA2kFejuA6DVepsoMpoIbXShc7OCXCwYt4AtGdQ==", - "license": "MIT", - "dependencies": { - "debug": "^4.3.7", - "err-code": "^3.0.1", - "streamx": "^2.20.1", - "uint8-util": "^2.2.5", - "webrtc-polyfill": "^1.1.10" - } - }, - "node_modules/@thaunknown/simple-websocket": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/@thaunknown/simple-websocket/-/simple-websocket-9.1.3.tgz", - "integrity": "sha512-pf/FCJsgWtLJiJmIpiSI7acOZVq3bIQCpnNo222UFc8Ph1lOUOTpe6LoYhhiOSKB9GUaWJEVUtZ+sK1/aBgU5Q==", - "license": "MIT", - "dependencies": { - "debug": "^4.3.5", - "queue-microtask": "^1.2.3", - "streamx": "^2.17.0", - "uint8-util": "^2.2.5", - "ws": "^8.17.1" - } - }, - "node_modules/@thaunknown/thirty-two": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@thaunknown/thirty-two/-/thirty-two-1.0.5.tgz", - "integrity": "sha512-Q53KyCXweV1CS62EfqtPDqfpksn5keQ59PGqzzkK+g8Vif1jB4inoBCcs/BUSdsqddhE3G+2Fn+4RX3S6RqT0A==", - "license": "MIT", - "dependencies": { - "uint8-util": "^2.2.5" - }, - "engines": { - "node": ">=0.2.6" - } - }, "node_modules/@tsconfig/node10": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", @@ -17767,6 +18169,346 @@ "node": ">=20.0.0" } }, + "node_modules/@utxos/api-contracts": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@utxos/api-contracts/-/api-contracts-0.0.1.tgz", + "integrity": "sha512-94YfIpGuOjrnonTRSWduCf0OFth8M0tV8nGlmQgLux4BRenrGNK+Oi7YJXk/Sj4iGr8T2syisgDnaNYVtOS6Xw==", + "dependencies": { + "zod": "^3.23.8" + } + }, + "node_modules/@utxos/sdk": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@utxos/sdk/-/sdk-0.1.0.tgz", + "integrity": "sha512-SbXO/evhfqAq85Vtbj+ZU5ViS5aUbW/ZfwyIX3KuHXyxarConuuxUSghLSoxUS8D28RrLHSTkIVGYzC1GsW77Q==", + "license": "Apache-2.0", + "dependencies": { + "@buildonspark/issuer-sdk": "^0.1.5", + "@buildonspark/spark-sdk": "0.5.0", + "@meshsdk/bitcoin": "1.9.0-beta.89", + "@meshsdk/common": "1.9.0-beta.89", + "@meshsdk/core-cst": "1.9.0-beta.89", + "@meshsdk/transaction": "1.9.0-beta.89", + "@meshsdk/wallet": "1.9.0-beta.89", + "@peculiar/webcrypto": "^1.5.0", + "@utxos/api-contracts": "^0.0.1", + "axios": "^1.8.3", + "base32-encoding": "^1.0.0", + "uuid": "^11.1.0" + } + }, + "node_modules/@utxos/sdk/node_modules/@bufbuild/protobuf": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.11.0.tgz", + "integrity": "sha512-sBXGT13cpmPR5BMgHE6UEEfEaShh5Ror6rfN3yEK5si7QVrtZg8LEPQb0VVhiLRUslD2yLnXtnRzG035J/mZXQ==", + "license": "(Apache-2.0 AND BSD-3-Clause)" + }, + "node_modules/@utxos/sdk/node_modules/@buildonspark/issuer-sdk": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/@buildonspark/issuer-sdk/-/issuer-sdk-0.1.7.tgz", + "integrity": "sha512-m+dcQCaPcIIq8WkCJNftzj22+FKHsZDrtlULucnoq1LNaKZ5eE4dVCHWfSFkRmME1tRPj0RIlh16gUswC0lgbg==", + "license": "Apache-2.0", + "dependencies": { + "@buildonspark/spark-sdk": "0.5.7", + "@noble/curves": "^1.8.0", + "@scure/btc-signer": "^1.5.0", + "buffer": "^6.0.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "react": ">=18.2.0", + "react-native": ">=0.71.0", + "react-native-get-random-values": ">=1.11.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-native": { + "optional": true + }, + "react-native-get-random-values": { + "optional": true + } + } + }, + "node_modules/@utxos/sdk/node_modules/@buildonspark/issuer-sdk/node_modules/@buildonspark/spark-sdk": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@buildonspark/spark-sdk/-/spark-sdk-0.5.7.tgz", + "integrity": "sha512-isk/FeInp6c98V/OQZGaKVhxiPLDdrW+u4DzUD5CptCuvDfq32MQkxtprQTq6gJu0yxMXqaYohYTNMCFMx0ayg==", + "license": "Apache-2.0", + "dependencies": { + "@bufbuild/protobuf": "^2.2.5", + "@lightsparkdev/core": "^1.4.4", + "@noble/curves": "^1.8.0", + "@noble/hashes": "^1.7.0", + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation-undici": "^0.14.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.1", + "@opentelemetry/sdk-trace-web": "^2.0.1", + "@scure/base": "^1.2.4", + "@scure/bip32": "^1.6.2", + "@scure/bip39": "^1.5.4", + "@scure/btc-signer": "^1.5.0", + "abort-controller-x": "^0.4.3", + "abortcontroller-polyfill": "^1.7.8", + "async-mutex": "^0.5.0", + "bare-crypto": "^1.9.2", + "bare-fetch": "^2.4.1", + "buffer": "^6.0.3", + "eventemitter3": "^5.0.1", + "js-base64": "^3.7.7", + "light-bolt11-decoder": "^3.2.0", + "nice-grpc": "^2.1.10", + "nice-grpc-client-middleware-retry": "^3.1.10", + "nice-grpc-common": "^2.0.2", + "nice-grpc-opentelemetry": "^0.1.18", + "nice-grpc-web": "^3.3.7", + "ts-proto": "2.8.3", + "ua-parser-js": "^2.0.6", + "uuidv7": "^1.0.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "react": ">=18.2.0", + "react-native": ">=0.71.0", + "react-native-get-random-values": ">=1.11.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-native": { + "optional": true + }, + "react-native-get-random-values": { + "optional": true + } + } + }, + "node_modules/@utxos/sdk/node_modules/@buildonspark/spark-sdk": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@buildonspark/spark-sdk/-/spark-sdk-0.5.0.tgz", + "integrity": "sha512-+u39p8Hb9t0VzWPsPvnt5r8P799R/wTyLfycu9PvZdsTQbxOPbSV+vYhMWLxqQdEtT/DeC+zVgt2skda+lG4Gg==", + "license": "Apache-2.0", + "dependencies": { + "@bufbuild/protobuf": "^2.2.5", + "@lightsparkdev/core": "^1.4.4", + "@noble/curves": "^1.8.0", + "@noble/hashes": "^1.7.0", + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.203.0", + "@opentelemetry/instrumentation-undici": "^0.14.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", + "@opentelemetry/sdk-trace-node": "^2.0.1", + "@opentelemetry/sdk-trace-web": "^2.0.1", + "@scure/base": "^1.2.4", + "@scure/bip32": "^1.6.2", + "@scure/bip39": "^1.5.4", + "@scure/btc-signer": "^1.5.0", + "abort-controller-x": "^0.4.3", + "abortcontroller-polyfill": "^1.7.8", + "async-mutex": "^0.5.0", + "bare-crypto": "^1.9.2", + "bare-fetch": "^2.4.1", + "buffer": "^6.0.3", + "eventemitter3": "^5.0.1", + "js-base64": "^3.7.7", + "light-bolt11-decoder": "^3.2.0", + "nice-grpc": "^2.1.10", + "nice-grpc-client-middleware-retry": "^3.1.10", + "nice-grpc-common": "^2.0.2", + "nice-grpc-opentelemetry": "^0.1.18", + "nice-grpc-web": "^3.3.7", + "ts-proto": "^2.6.1", + "ua-parser-js": "^2.0.6", + "uuidv7": "^1.0.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "react": ">=18.2.0", + "react-native": ">=0.71.0", + "react-native-get-random-values": ">=1.11.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-native": { + "optional": true + }, + "react-native-get-random-values": { + "optional": true + } + } + }, + "node_modules/@utxos/sdk/node_modules/@harmoniclabs/cbor": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@harmoniclabs/cbor/-/cbor-1.6.0.tgz", + "integrity": "sha512-KI25p8pHI1rmFZC9NYSxATwlCZ+KJdjydpptKebHcw03Iy7M+E8mF+hSnN5dTbS45xw5ZyKUgPLRgLo1sTuIoQ==", + "license": "Apache-2.0", + "dependencies": { + "@harmoniclabs/bytestring": "^1.0.0", + "@harmoniclabs/obj-utils": "^1.0.0", + "@harmoniclabs/uint8array-utils": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/HarmonicLabs" + } + }, + "node_modules/@utxos/sdk/node_modules/@meshsdk/bitcoin": { + "version": "1.9.0-beta.89", + "resolved": "https://registry.npmjs.org/@meshsdk/bitcoin/-/bitcoin-1.9.0-beta.89.tgz", + "integrity": "sha512-2ZREpEwqzMt63bRMi2vf+rbts+xzoWSMdSLhqA7XgGHkfZKr8eonaJW37NSsMFVtafwgR1UppIF7SuslrSlnww==", + "dependencies": { + "@bitcoin-js/tiny-secp256k1-asmjs": "^2.2.3", + "bip174": "^3.0.0", + "bip32": "^4.0.0", + "bip39": "^3.1.0", + "bitcoinjs-lib": "^6.1.7", + "ecpair": "^2.0.0" + } + }, + "node_modules/@utxos/sdk/node_modules/@meshsdk/common": { + "version": "1.9.0-beta.89", + "resolved": "https://registry.npmjs.org/@meshsdk/common/-/common-1.9.0-beta.89.tgz", + "integrity": "sha512-K78TSif28c+gcXuk9yeqN0VCI4LNoZm6z+oPI+bQWQz865aSsCBVMuE3AN1plZtLCn6fhhWW5O72HLRQzX+Bkg==", + "license": "Apache-2.0", + "dependencies": { + "bech32": "^2.0.0", + "bip39": "3.1.0", + "blake2b": "^2.1.4", + "blakejs": "^1.2.1" + } + }, + "node_modules/@utxos/sdk/node_modules/@meshsdk/core-cst": { + "version": "1.9.0-beta.89", + "resolved": "https://registry.npmjs.org/@meshsdk/core-cst/-/core-cst-1.9.0-beta.89.tgz", + "integrity": "sha512-DSnAKOlCD+LncUNnxNYMTvOx4Zf7NlV3koa781idA1jCJneW17VSgE7VmrLdg2gO68t7xkF5931xSZUDzUwbIg==", + "license": "Apache-2.0", + "dependencies": { + "@cardano-sdk/core": "^0.45.5", + "@cardano-sdk/crypto": "^0.2.2", + "@cardano-sdk/input-selection": "^0.13.33", + "@cardano-sdk/util": "^0.15.5", + "@harmoniclabs/cbor": "1.6.0", + "@harmoniclabs/pair": "^1.0.0", + "@harmoniclabs/plutus-data": "1.2.4", + "@harmoniclabs/uplc": "1.2.4", + "@meshsdk/common": "1.9.0-beta.89", + "@types/base32-encoding": "^1.0.2", + "base32-encoding": "^1.0.0", + "bech32": "^2.0.0", + "blakejs": "^1.2.1", + "bn.js": "^5.2.0" + } + }, + "node_modules/@utxos/sdk/node_modules/@meshsdk/transaction": { + "version": "1.9.0-beta.89", + "resolved": "https://registry.npmjs.org/@meshsdk/transaction/-/transaction-1.9.0-beta.89.tgz", + "integrity": "sha512-p3ePCJWcLosswb4F5OiCHYszTci6EG5UR7JnONTJmjkE83blg92iNSkWYQbHclXXM5Ldf/CuHL9BDhPQcIfErw==", + "license": "Apache-2.0", + "dependencies": { + "@cardano-sdk/core": "^0.45.5", + "@cardano-sdk/input-selection": "^0.13.33", + "@cardano-sdk/util": "^0.15.5", + "@meshsdk/common": "1.9.0-beta.89", + "@meshsdk/core-cst": "1.9.0-beta.89", + "json-bigint": "^1.0.0" + } + }, + "node_modules/@utxos/sdk/node_modules/@meshsdk/wallet": { + "version": "1.9.0-beta.89", + "resolved": "https://registry.npmjs.org/@meshsdk/wallet/-/wallet-1.9.0-beta.89.tgz", + "integrity": "sha512-HcirkitcpSflgCjZdKu2hKy6ico36L54cgI+mJXIqhYk8evAZiUyw8bLhfqQhjjTCKCTfmGDtu+xuBs8eYmVWw==", + "license": "Apache-2.0", + "dependencies": { + "@meshsdk/common": "1.9.0-beta.89", + "@meshsdk/core-cst": "1.9.0-beta.89", + "@meshsdk/transaction": "1.9.0-beta.89", + "@simplewebauthn/browser": "^13.0.0" + } + }, + "node_modules/@utxos/sdk/node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/@utxos/sdk/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/@utxos/sdk/node_modules/ts-proto": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/ts-proto/-/ts-proto-2.8.3.tgz", + "integrity": "sha512-TdXInqG+61pj/TvORqITWjvjTTsL1EZxwX49iEj89+xFAcqPT8tjChpAGQXzfcF4MJwvNiuoCEbBOKqVf3ds3g==", + "license": "ISC", + "dependencies": { + "@bufbuild/protobuf": "^2.0.0", + "case-anything": "^2.1.13", + "ts-poet": "^6.12.0", + "ts-proto-descriptors": "2.0.0" + }, + "bin": { + "protoc-gen-ts_proto": "protoc-gen-ts_proto" + } + }, + "node_modules/@utxos/sdk/node_modules/ts-proto-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ts-proto-descriptors/-/ts-proto-descriptors-2.0.0.tgz", + "integrity": "sha512-wHcTH3xIv11jxgkX5OyCSFfw27agpInAd6yh89hKG6zqIXnjW9SYqSER2CVQxdPj4czeOhGagNvZBEbJPy7qkw==", + "license": "ISC", + "dependencies": { + "@bufbuild/protobuf": "^2.0.0" + } + }, "node_modules/@vercel/og": { "version": "0.6.8", "resolved": "https://registry.npmjs.org/@vercel/og/-/og-0.6.8.tgz", @@ -17868,25 +18610,6 @@ } } }, - "node_modules/@webpod/ip": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@webpod/ip/-/ip-0.6.1.tgz", - "integrity": "sha512-0oPIqLPfoIPzstsbmWUFlLx9I8KiisiC9/+YQPaotVU67DnTV+vx/zXXnkMgZTKu9rHWznmUQX3jgvfqr1t4+g==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/@webtorrent/http-node": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@webtorrent/http-node/-/http-node-1.3.0.tgz", - "integrity": "sha512-GWZQKroPES4z91Ijx6zsOsb7+USOxjy66s8AoTWg0HiBBdfnbtf9aeh3Uav0MgYn4BL8Q7tVSUpd0gGpngKGEQ==", - "license": "MIT", - "dependencies": { - "freelist": "^1.0.3", - "http-parser-js": "^0.4.3" - } - }, "node_modules/@wry/caches": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@wry/caches/-/caches-1.0.1.tgz", @@ -17958,12 +18681,24 @@ "node": ">=6.5" } }, + "node_modules/abort-controller-x": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/abort-controller-x/-/abort-controller-x-0.4.3.tgz", + "integrity": "sha512-VtUwTNU8fpMwvWGn4xE93ywbogTYsuT+AUxAXOeelbXuQVIwNmC5YLeho9sH4vZ4ITW8414TTAOG1nW6uIVHCA==", + "license": "MIT" + }, "node_modules/abort-error": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/abort-error/-/abort-error-1.0.1.tgz", "integrity": "sha512-fxqCblJiIPdSXIUrxI0PL+eJG49QdP9SQ70qtB65MVAoMr2rASlOyAbJFOylfB467F/f+5BCLJJq58RYi7mGfg==", "license": "Apache-2.0 OR MIT" }, + "node_modules/abortcontroller-polyfill": { + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.8.tgz", + "integrity": "sha512-9f1iZ2uWh92VcrU9Y8x+LdM4DLj75VE0MJB8zuF1iUnroEptStw+DQ8EQPMUdfe5k+PkB1uUfDQfWbhstH8LrQ==", + "license": "MIT" + }, "node_modules/abstract-level": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/abstract-level/-/abstract-level-3.1.1.tgz", @@ -18040,6 +18775,15 @@ "node": ">=0.4.0" } }, + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "license": "MIT", + "peerDependencies": { + "acorn": "^8" + } + }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -18062,15 +18806,6 @@ "node": ">=0.4.0" } }, - "node_modules/addr-to-ip-port": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/addr-to-ip-port/-/addr-to-ip-port-2.0.0.tgz", - "integrity": "sha512-9bYbtjamtdLHZSqVIUXhilOryNPiL+x+Q5J/Unpg4VY3ZIkK3fT52UoErj1NdUeVm3J1t2iBEAur4Ywbl/bahw==", - "license": "MIT", - "engines": { - "node": ">=12.20.0" - } - }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -18469,6 +19204,15 @@ "node": ">= 0.4" } }, + "node_modules/async-mutex": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.5.0.tgz", + "integrity": "sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -18733,25 +19477,32 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "license": "MIT" }, - "node_modules/bare-addon-resolve": { - "version": "1.9.6", - "resolved": "https://registry.npmjs.org/bare-addon-resolve/-/bare-addon-resolve-1.9.6.tgz", - "integrity": "sha512-hvOQY1zDK6u0rSr27T6QlULoVLwi8J2k8HHHJlxSfT7XQdQ/7bsS+AnjYkHtu/TkL+gm3aMXAKucJkJAbrDG/g==", + "node_modules/bare-crypto": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/bare-crypto/-/bare-crypto-1.13.0.tgz", + "integrity": "sha512-RQl13yD+YTACWUZHMMck0C6LNjXgGgRyhVC557ag0xIrkxXf4IQwpnc8WOB58f4k5kSzKhIjy05oW3HUBrFpSQ==", "license": "Apache-2.0", - "optional": true, "dependencies": { - "bare-module-resolve": "^1.10.0", - "bare-semver": "^1.0.0" + "bare-stream": "^2.6.3" }, "peerDependencies": { - "bare-url": "*" + "bare-buffer": "*" }, "peerDependenciesMeta": { - "bare-url": { + "bare-buffer": { "optional": true } } }, + "node_modules/bare-dns": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/bare-dns/-/bare-dns-2.1.4.tgz", + "integrity": "sha512-abwjHmpWqSRNB7V5615QxPH92L71AVzFm/kKTs8VYiNTAi2xVdonpv0BjJ0hwXLwomoW+xsSOPjW6PZPO14asg==", + "license": "Apache-2.0", + "engines": { + "bare": ">=1.7.0" + } + }, "node_modules/bare-events": { "version": "2.8.2", "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", @@ -18766,72 +19517,105 @@ } } }, - "node_modules/bare-fs": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.5.2.tgz", - "integrity": "sha512-veTnRzkb6aPHOvSKIOy60KzURfBdUflr5VReI+NSaPL6xf+XLdONQgZgpYvUuZLVQ8dCqxpBAudaOM1+KpAUxw==", + "node_modules/bare-fetch": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/bare-fetch/-/bare-fetch-2.5.1.tgz", + "integrity": "sha512-BdJie1S9y3TW0pzF6Q/dP95QDjlUPXexiJWSnKFIM/OHID6ITJk2XEQQ25rsGqwLqxQ4felfGkj13mC/ao27mg==", "license": "Apache-2.0", "dependencies": { - "bare-events": "^2.5.4", - "bare-path": "^3.0.0", - "bare-stream": "^2.6.4", - "bare-url": "^2.2.2", - "fast-fifo": "^1.3.2" - }, - "engines": { - "bare": ">=1.16.0" + "bare-form-data": "^1.1.3", + "bare-http1": "^4.0.2", + "bare-https": "^2.0.0", + "bare-stream": "^2.7.0", + "bare-zlib": "^1.3.0" }, "peerDependencies": { - "bare-buffer": "*" + "bare-buffer": "*", + "bare-url": "*" }, "peerDependenciesMeta": { "bare-buffer": { "optional": true + }, + "bare-url": { + "optional": true } } }, - "node_modules/bare-module-resolve": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/bare-module-resolve/-/bare-module-resolve-1.12.0.tgz", - "integrity": "sha512-JrzrqlC3Tds0iKRwQs8xIIJ+FRieKA9ll0jaqpotDLZtjJPVevzRoeuUYZ5GIo1t1z7/pIRdk85Q3i/2xQLfEQ==", + "node_modules/bare-form-data": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/bare-form-data/-/bare-form-data-1.1.6.tgz", + "integrity": "sha512-q1IN7dVo/lEhTlVkVQdULZvoBx6eTI94co0NtO7/A3JLFL/aZGA1wAHgcNEPrlkqTK9jTEdtzQXSoqGzlVjzgg==", "license": "Apache-2.0", - "optional": true, "dependencies": { - "bare-semver": "^1.0.0" + "bare-stream": "^2.6.5" + } + }, + "node_modules/bare-http-parser": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bare-http-parser/-/bare-http-parser-1.0.1.tgz", + "integrity": "sha512-A3LTDTcELcmNJ3g5liIaS038v/BQxOhA9cjhBESn7eoV7QCuMoIRBKLDadDe08flxyLbxI2f+1l2MZ/5+HnKPA==", + "license": "Apache-2.0" + }, + "node_modules/bare-http1": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/bare-http1/-/bare-http1-4.2.3.tgz", + "integrity": "sha512-zyvHF3xzvBJNpuw0QydE9etTn2AyC/TRVDWTo8Ed3LQEEGaFOkv6KHhaJPlf4eWEeTekk41Fowie+fTsXoNxkA==", + "license": "Apache-2.0", + "dependencies": { + "bare-events": "^2.6.0", + "bare-http-parser": "^1.0.0", + "bare-stream": "^2.3.0", + "bare-tcp": "^2.2.0" }, "peerDependencies": { + "bare-buffer": "*", "bare-url": "*" }, "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + }, "bare-url": { "optional": true } } }, - "node_modules/bare-os": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.2.tgz", - "integrity": "sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A==", + "node_modules/bare-https": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bare-https/-/bare-https-2.1.2.tgz", + "integrity": "sha512-Q+TTydUDsuKQJvh8dX2dvOXCR9fM3xR5TBmKaFrs5p7Lj7XbKX7v4vIUJ36H0SXg2xCOQxXKIbjwrLg5tfJNYg==", "license": "Apache-2.0", - "engines": { - "bare": ">=1.14.0" + "dependencies": { + "bare-http1": "^4.0.0", + "bare-tcp": "^2.2.0", + "bare-tls": "^2.0.0" } }, - "node_modules/bare-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", - "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", + "node_modules/bare-net": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/bare-net/-/bare-net-2.2.0.tgz", + "integrity": "sha512-UF7cAbHsGE+H6uEqWF5IULBow1x58chZz4g3ALgHtv7wZsFcCbRDt0JKWEumf5Oma3QWS1Q6aLi0Rpll8RElMg==", "license": "Apache-2.0", "dependencies": { - "bare-os": "^3.0.1" + "bare-events": "^2.2.2", + "bare-pipe": "^4.0.0", + "bare-stream": "^2.0.0", + "bare-tcp": "^2.0.0" } }, - "node_modules/bare-semver": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bare-semver/-/bare-semver-1.0.2.tgz", - "integrity": "sha512-ESVaN2nzWhcI5tf3Zzcq9aqCZ676VWzqw07eEZ0qxAcEOAFYBa0pWq8sK34OQeHLY3JsfKXZS9mDyzyxGjeLzA==", + "node_modules/bare-pipe": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/bare-pipe/-/bare-pipe-4.1.2.tgz", + "integrity": "sha512-btXtZLlABEDRp50cfLj9iweISqAJSNMCjeq5v0v9tBY2a7zSSqmfa2ZoE1ki2qxAvubagLUqw6VDifpsuI/qmg==", "license": "Apache-2.0", - "optional": true + "dependencies": { + "bare-events": "^2.0.0", + "bare-stream": "^2.0.0" + }, + "engines": { + "bare": ">=1.16.0" + } }, "node_modules/bare-stream": { "version": "2.7.0", @@ -18854,13 +19638,40 @@ } } }, - "node_modules/bare-url": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.3.2.tgz", - "integrity": "sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==", + "node_modules/bare-tcp": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/bare-tcp/-/bare-tcp-2.2.2.tgz", + "integrity": "sha512-bYnw1AhzGlfLOD4nTceUXkhhgznZKvDuwjX1Au0VWaVitwqG40oaTvvhEQVCcK3FEwjRTiukUzHnAFsYXUI+3Q==", "license": "Apache-2.0", "dependencies": { - "bare-path": "^3.0.0" + "bare-dns": "^2.0.4", + "bare-events": "^2.5.4", + "bare-stream": "^2.6.4" + }, + "engines": { + "bare": ">=1.16.0" + } + }, + "node_modules/bare-tls": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/bare-tls/-/bare-tls-2.1.7.tgz", + "integrity": "sha512-h6wcNXQdBeTX7fed9tjPp0/9cA/QfcBTv3ItgjnbUk4rWAU8bEFalZCZnUDdCK/t9zrNfJ+yvcPx4D/1Y6biyA==", + "license": "Apache-2.0", + "dependencies": { + "bare-net": "^2.0.1", + "bare-stream": "^2.6.4" + }, + "engines": { + "bare": ">=1.7.0" + } + }, + "node_modules/bare-zlib": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/bare-zlib/-/bare-zlib-1.3.1.tgz", + "integrity": "sha512-VP93GFzhrTdWh9mXNocn7XsP/nF5JQluiiSsbTvsQ4yIYlhEHRMF9lQmZZDXwzK9PNYaVGUV1bdQuqp0Mj7MHw==", + "license": "Apache-2.0", + "dependencies": { + "bare-stream": "^2.0.0" } }, "node_modules/base-x": { @@ -18875,15 +19686,6 @@ "integrity": "sha512-k1gA7f00ODLY7YtuEQFz0Kn3huTCmL/JW+oQtw51ID+zxs5chj/YQ1bXN+Q0JsqiKB2Yn0oA0AA8uipFYgpagQ==", "license": "ISC" }, - "node_modules/base64-arraybuffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", - "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==", - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, "node_modules/base64-js": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", @@ -18908,27 +19710,6 @@ "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==", "license": "MIT" }, - "node_modules/bencode": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/bencode/-/bencode-4.0.0.tgz", - "integrity": "sha512-AERXw18df0pF3ziGOCyUjqKZBVNH8HV3lBxnx5w0qtgMIk4a1wb9BkcCQbkp9Zstfrn/dzRwl7MmUHHocX3sRQ==", - "license": "MIT", - "dependencies": { - "uint8-util": "^2.2.2" - }, - "engines": { - "node": ">=12.20.0" - } - }, - "node_modules/bep53-range": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bep53-range/-/bep53-range-2.0.0.tgz", - "integrity": "sha512-sMm2sV5PRs0YOVk0LTKtjuIprVzxgTQUsrGX/7Yph2Rm4FO2Fqqtq7hNjsOB5xezM4v4+5rljCgK++UeQJZguA==", - "license": "MIT", - "engines": { - "node": ">=12.20.0" - } - }, "node_modules/big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -19068,18 +19849,6 @@ "node": ">=8.0.0" } }, - "node_modules/bitfield": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/bitfield/-/bitfield-4.2.0.tgz", - "integrity": "sha512-kUTatQb/mBd8uhvdLrUkouGDBUQiJaIOvPlptUwOWp6MFqih4d1MiVf0m3ATxfZSzu+LjW/awFeABltYa62uIA==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, "node_modules/bits-ui": { "version": "1.0.0-next.65", "resolved": "https://registry.npmjs.org/bits-ui/-/bits-ui-1.0.0-next.65.tgz", @@ -19113,172 +19882,6 @@ "@floating-ui/utils": "^0.2.10" } }, - "node_modules/bittorrent-dht": { - "version": "11.0.11", - "resolved": "https://registry.npmjs.org/bittorrent-dht/-/bittorrent-dht-11.0.11.tgz", - "integrity": "sha512-5rWMoK/2XjcPSx9nfqiL6mHxsXLwohX+81aL4a3qUyGU1992mBqARQE/evZ+a6eWb5DeRjeDU+qFZm11rmPZnQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "bencode": "^4.0.0", - "debug": "^4.4.3", - "k-bucket": "^5.1.0", - "k-rpc": "^5.1.0", - "last-one-wins": "^1.0.4", - "lru": "^3.1.0", - "randombytes": "^2.1.0", - "record-cache": "^1.2.0" - }, - "engines": { - "node": ">=12.20.0" - } - }, - "node_modules/bittorrent-lsd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bittorrent-lsd/-/bittorrent-lsd-2.0.0.tgz", - "integrity": "sha512-jV+SMTGNY1iGWjf5cPA2HMeA6axuMQRWwWELtsuZ1FmQmZwC74we92nwtDTfv1WMnLx+oqEjWRri42IHjZitSQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "chrome-dgram": "^3.0.6", - "debug": "^4.2.0" - }, - "engines": { - "node": ">=12.20.0" - } - }, - "node_modules/bittorrent-peerid": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/bittorrent-peerid/-/bittorrent-peerid-1.3.6.tgz", - "integrity": "sha512-VyLcUjVMEOdSpHaCG/7odvCdLbAB1y3l9A2V6WIje24uV7FkJPrQrH/RrlFmKxP89pFVDEnE+YlHaFujlFIZsg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/bittorrent-protocol": { - "version": "4.1.21", - "resolved": "https://registry.npmjs.org/bittorrent-protocol/-/bittorrent-protocol-4.1.21.tgz", - "integrity": "sha512-CcuPt6BL7gXa8BF+0GckYcQmr44ARfSPM0rYwMeYgWg+jftekWgy5vuxX6wJDpC5bKFvqNG+74bPBjyM7Swxrw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "bencode": "^4.0.0", - "bitfield": "^4.2.0", - "debug": "^4.4.3", - "rc4": "^0.1.5", - "streamx": "^2.22.1", - "throughput": "^1.0.2", - "uint8-util": "^2.2.5", - "unordered-array-remove": "^1.0.2" - }, - "engines": { - "node": ">=12.20.0" - } - }, - "node_modules/bittorrent-tracker": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/bittorrent-tracker/-/bittorrent-tracker-11.2.2.tgz", - "integrity": "sha512-pVjpd6tPtLByrYwtDOo+cVx9zQZ2XUvlaWrlm57+9yvVDKHuNL+TFEAtyfXuIutghG7Bde/uWXGfoVWpPYY+8A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "@thaunknown/simple-peer": "^10.0.8", - "@thaunknown/simple-websocket": "^9.1.3", - "bencode": "^4.0.0", - "bittorrent-peerid": "^1.3.6", - "chrome-dgram": "^3.0.6", - "compact2string": "^1.4.1", - "cross-fetch-ponyfill": "^1.0.3", - "debug": "^4.3.4", - "ip": "^2.0.1", - "lru": "^3.1.0", - "minimist": "^1.2.8", - "once": "^1.4.0", - "queue-microtask": "^1.2.3", - "random-iterate": "^1.0.1", - "run-parallel": "^1.2.0", - "run-series": "^1.1.9", - "socks": "^2.8.3", - "string2compact": "^2.0.1", - "uint8-util": "^2.2.5", - "unordered-array-remove": "^1.0.2", - "ws": "^8.17.0" - }, - "bin": { - "bittorrent-tracker": "bin/cmd.js" - }, - "engines": { - "node": ">=16.0.0" - }, - "optionalDependencies": { - "bufferutil": "^4.0.8", - "utf-8-validate": "^6.0.4" - } - }, "node_modules/bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -19330,12 +19933,6 @@ "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", "license": "MIT" }, - "node_modules/block-iterator": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/block-iterator/-/block-iterator-1.1.1.tgz", - "integrity": "sha512-DrjdVWZemVO4iBf4tiOXjUrY5cNesjzy0t7sIiu2rdl8cOCHRxAgKjSJFc3vBZYYMMmshUAxajl8QQh/uxXTKQ==", - "license": "MIT" - }, "node_modules/bn.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz", @@ -19368,7 +19965,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", - "dev": true, "license": "MIT" }, "node_modules/browser-level": { @@ -19664,20 +20260,6 @@ ], "license": "MIT" }, - "node_modules/bufferutil": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.1.0.tgz", - "integrity": "sha512-ZMANVnAixE6AWWnPzlW2KpUrxhm9woycYvPOo67jWHyFowASTEd9s+QN1EIMsSDtwhIxN4sWE1jotpuDUIgyIw==", - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, "node_modules/builtin-modules": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", @@ -19735,30 +20317,6 @@ "node": ">=8" } }, - "node_modules/cache-chunk-store": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/cache-chunk-store/-/cache-chunk-store-3.2.2.tgz", - "integrity": "sha512-2lJdWbgHFFxcSth9s2wpId3CR3v1YC63KjP4T9WhpW7LWlY7Hiiei3QwwqzkWqlJTfR8lSy9F5kRQECeyj+yQA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "lru": "^3.1.0", - "queue-microtask": "^1.2.3" - } - }, "node_modules/cacheable-lookup": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", @@ -19946,6 +20504,18 @@ ], "license": "CC-BY-4.0" }, + "node_modules/case-anything": { + "version": "2.1.13", + "resolved": "https://registry.npmjs.org/case-anything/-/case-anything-2.1.13.tgz", + "integrity": "sha512-zlOQ80VrQ2Ue+ymH5OuM/DlDq64mEm+B9UTdHULv5osUMD6HalNTblf2b1u/m6QecjsnOkBpqVZ+XPwIVsy7Ng==", + "license": "MIT", + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, "node_modules/cbor": { "version": "10.0.11", "resolved": "https://registry.npmjs.org/cbor/-/cbor-10.0.11.tgz", @@ -20135,71 +20705,6 @@ "node": ">=18" } }, - "node_modules/chrome-dgram": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/chrome-dgram/-/chrome-dgram-3.0.6.tgz", - "integrity": "sha512-bqBsUuaOiXiqxXt/zA/jukNJJ4oaOtc7ciwqJpZVEaaXwwxqgI2/ZdG02vXYWUhHGziDlvGMQWk0qObgJwVYKA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "inherits": "^2.0.4", - "run-series": "^1.1.9" - } - }, - "node_modules/chrome-dns": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/chrome-dns/-/chrome-dns-1.0.1.tgz", - "integrity": "sha512-HqsYJgIc8ljJJOqOzLphjAs79EUuWSX3nzZi2LNkzlw3GIzAeZbaSektC8iT/tKvLqZq8yl1GJu5o6doA4TRbg==", - "license": "MIT", - "dependencies": { - "chrome-net": "^3.3.2" - } - }, - "node_modules/chrome-net": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/chrome-net/-/chrome-net-3.3.4.tgz", - "integrity": "sha512-Jzy2EnzmE+ligqIZUsmWnck9RBXLuUy6CaKyuNMtowFG3ZvLt8d+WBJCTPEludV0DHpIKjAOlwjFmTaEdfdWCw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1" - } - }, - "node_modules/chunk-store-iterator": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/chunk-store-iterator/-/chunk-store-iterator-1.0.4.tgz", - "integrity": "sha512-LGjzJNmk7W1mrdaBoJNztPumT2ACmgjHmI1AMm8aeGYOl4+LKaYC/yfnx27i++LiAtoe/dR+3jC8HRzb6gW4/A==", - "license": "MIT", - "dependencies": { - "block-iterator": "^1.1.1" - } - }, "node_modules/ci-info": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", @@ -20234,7 +20739,6 @@ "version": "1.4.3", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", - "dev": true, "license": "MIT" }, "node_modules/class-variance-authority": { @@ -20338,7 +20842,6 @@ "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, "license": "ISC", "dependencies": { "string-width": "^4.2.0", @@ -20353,14 +20856,12 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, "license": "MIT" }, "node_modules/cliui/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -20375,7 +20876,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -20491,15 +20991,6 @@ "dev": true, "license": "MIT" }, - "node_modules/compact2string": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/compact2string/-/compact2string-1.4.1.tgz", - "integrity": "sha512-3D+EY5nsRhqnOwDxveBv5T8wGo4DEvYxjDtPGmdOX+gfr5gE92c2RC0w2wa+xEefm07QuVqqcF3nZJUZ92l/og==", - "license": "BSD", - "dependencies": { - "ipaddr.js": ">= 0.1.5" - } - }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -20641,26 +21132,6 @@ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "license": "MIT" }, - "node_modules/cpus": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/cpus/-/cpus-1.0.3.tgz", - "integrity": "sha512-PXHBvGLuL69u55IkLa5e5838fLhIMHxmkV4ge42a8alGyn7BtawYgI0hQ849EedvtHIOLNNH3i6eQU1BiE9SUA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, "node_modules/create-ecdh": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", @@ -20735,46 +21206,6 @@ "devOptional": true, "license": "MIT" }, - "node_modules/create-torrent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/create-torrent/-/create-torrent-6.1.0.tgz", - "integrity": "sha512-War593HCsg4TotHgMGWTJqnDHN0pmEU2RM13xUzzSZ78TpRNOC2bbcsC5yMO3pqIkedHEWFzYNqH1yhwuuBYTg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "bencode": "^4.0.0", - "block-iterator": "^1.1.1", - "fast-readable-async-iterator": "^2.0.0", - "is-file": "^1.0.0", - "join-async-iterator": "^1.1.1", - "junk": "^4.0.1", - "minimist": "^1.2.8", - "once": "^1.4.0", - "piece-length": "^2.0.1", - "queue-microtask": "^1.2.3", - "run-parallel": "^1.2.0", - "uint8-util": "^2.2.5" - }, - "bin": { - "create-torrent": "bin/cmd.js" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/cross-fetch": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", @@ -20784,16 +21215,6 @@ "node-fetch": "^2.7.0" } }, - "node_modules/cross-fetch-ponyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/cross-fetch-ponyfill/-/cross-fetch-ponyfill-1.0.3.tgz", - "integrity": "sha512-uOBkDhUAGAbx/FEzNKkOfx3w57H8xReBBXoZvUnOKTI0FW0Xvrj3GrYv2iZXUqlffC1LMGfQzhmBM/ke+6eTDA==", - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "node-fetch": "^3.3.0" - } - }, "node_modules/cross-fetch/node_modules/node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", @@ -20934,15 +21355,6 @@ "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", "license": "BSD-2-Clause" }, - "node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, "node_modules/data-view-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", @@ -21018,6 +21430,12 @@ "url": "https://opencollective.com/date-fns" } }, + "node_modules/dayjs": { + "version": "1.11.19", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", + "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==", + "license": "MIT" + }, "node_modules/debounce": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/debounce/-/debounce-2.0.0.tgz", @@ -21146,15 +21564,6 @@ "dev": true, "license": "MIT" }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "license": "MIT", - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -21170,146 +21579,6 @@ "node": ">=0.10.0" } }, - "node_modules/default-gateway": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-7.2.2.tgz", - "integrity": "sha512-AD7TrdNNPXRZIGw63dw+lnGmT4v7ggZC5NHNJgAYWm5njrwoze1q5JSAW9YuLy2tjnoLUG/r8FEB93MCh9QJPg==", - "license": "BSD-2-Clause", - "dependencies": { - "execa": "^7.1.1" - }, - "engines": { - "node": ">= 16" - } - }, - "node_modules/default-gateway/node_modules/execa": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", - "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^4.3.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": "^14.18.0 || ^16.14.0 || >=18.0.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/default-gateway/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-gateway/node_modules/human-signals": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", - "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", - "license": "Apache-2.0", - "engines": { - "node": ">=14.18.0" - } - }, - "node_modules/default-gateway/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-gateway/node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-gateway/node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", - "license": "MIT", - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-gateway/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "license": "MIT", - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-gateway/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-gateway/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "license": "ISC" - }, - "node_modules/default-gateway/node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/defaults": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", @@ -21394,6 +21663,26 @@ "minimalistic-assert": "^1.0.0" } }, + "node_modules/detect-europe-js": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/detect-europe-js/-/detect-europe-js-0.1.2.tgz", + "integrity": "sha512-lgdERlL3u0aUdHocoouzT10d9I89VVhk0qNRmll7mXdGfJT1/wqZ2ZLA4oJAjeACPY5fT1wsbq2AT+GkuInsow==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], + "license": "MIT" + }, "node_modules/detect-indent": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", @@ -21404,15 +21693,6 @@ "node": ">=8" } }, - "node_modules/detect-libc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", - "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, "node_modules/detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", @@ -21571,6 +21851,27 @@ "url": "https://dotenvx.com" } }, + "node_modules/dprint-node": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/dprint-node/-/dprint-node-1.0.8.tgz", + "integrity": "sha512-iVKnUtYfGrYcW1ZAlfR/F59cUVL8QIhWoBJoSjkkdua/dkWIgjZfiLMeTjiB06X0ZLkQ0M2C1VbUj/CxkIf1zg==", + "license": "MIT", + "dependencies": { + "detect-libc": "^1.0.3" + } + }, + "node_modules/dprint-node/node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "license": "Apache-2.0", + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -21616,7 +21917,6 @@ "version": "6.6.1", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", - "dev": true, "license": "MIT", "dependencies": { "bn.js": "^4.11.9", @@ -21632,7 +21932,6 @@ "version": "4.12.2", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", - "dev": true, "license": "MIT" }, "node_modules/emittery": { @@ -21670,15 +21969,6 @@ "node": ">= 4" } }, - "node_modules/end-of-stream": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", - "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", - "license": "MIT", - "dependencies": { - "once": "^1.4.0" - } - }, "node_modules/enquirer": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", @@ -21706,12 +21996,6 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/err-code": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-3.0.1.tgz", - "integrity": "sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==", - "license": "MIT" - }, "node_modules/error-ex": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", @@ -23094,15 +23378,6 @@ "node": ">= 0.8.0" } }, - "node_modules/expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "license": "(MIT OR WTFPL)", - "engines": { - "node": ">=6" - } - }, "node_modules/expect": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", @@ -23178,12 +23453,6 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "license": "MIT" }, - "node_modules/fast-readable-async-iterator": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-readable-async-iterator/-/fast-readable-async-iterator-2.0.0.tgz", - "integrity": "sha512-8Sld+DuyWRIftl86ZguJxR2oXCBccOiJxrY/Rj9/7ZBynW8pYMWzIcqxFL1da+25jaWJZVa+HHX/8SsA21JdTA==", - "license": "MIT" - }, "node_modules/fast-redact": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz", @@ -23212,29 +23481,6 @@ "bser": "2.1.1" } }, - "node_modules/fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "paypal", - "url": "https://paypal.me/jimmywarting" - } - ], - "license": "MIT", - "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - }, - "engines": { - "node": "^12.20 || >= 14.13" - } - }, "node_modules/fetch-retry": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/fetch-retry/-/fetch-retry-6.0.0.tgz", @@ -23279,18 +23525,6 @@ "license": "MIT", "optional": true }, - "node_modules/filename-reserved-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-3.0.0.tgz", - "integrity": "sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -23613,18 +23847,6 @@ "node": ">= 18" } }, - "node_modules/formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "license": "MIT", - "dependencies": { - "fetch-blob": "^3.1.2" - }, - "engines": { - "node": ">=12.20.0" - } - }, "node_modules/fp-ts": { "version": "2.16.11", "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-2.16.11.tgz", @@ -23671,49 +23893,6 @@ } } }, - "node_modules/freelist": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/freelist/-/freelist-1.0.3.tgz", - "integrity": "sha512-Ji7fEnMdZDGbS5oXElpRJsn9jPvBR8h/037D3bzreNmS8809cISq/2D9//JbA/TaZmkkN8cmecXwmQHmM+NHhg==", - "license": "MIT" - }, - "node_modules/fs-chunk-store": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/fs-chunk-store/-/fs-chunk-store-5.0.0.tgz", - "integrity": "sha512-tKlT0joU9KmsLn0dTbVYVUa7VNqYQhl0X2qPPsN9lPEc3guXOmQJWY5/7kpo34Sk273qyWT5mqEhROCQPF+JKw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "filename-reserved-regex": "^3.0.0", - "queue-microtask": "^1.2.2", - "random-access-file": "^4.0.0", - "run-parallel": "^1.1.2", - "thunky": "^1.0.1", - "uint8-util": "^2.2.5" - }, - "engines": { - "node": ">=12.20.0" - } - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "license": "MIT" - }, "node_modules/fs-extra": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", @@ -23730,32 +23909,12 @@ "node": ">=10" } }, - "node_modules/fs-native-extensions": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/fs-native-extensions/-/fs-native-extensions-1.4.5.tgz", - "integrity": "sha512-ekV0T//iDm4AvhOcuPaHpxub4DI7HvY5ucLJVDvi7T2J+NZkQ9S6MuvgP0yeQvoqNUaAGyLjVYb1905BF9bpmg==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "require-addon": "^1.1.0", - "which-runtime": "^1.2.0" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "license": "ISC" }, - "node_modules/fsa-chunk-store": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fsa-chunk-store/-/fsa-chunk-store-1.3.0.tgz", - "integrity": "sha512-0WCfuxqqSB6Tz/g7Ar/nwAxMoigXaIXuvfrnLIEFYIA9uc6w9eNaHuBGzU1X3lyM4cpLKCOTUmKAA/gCiTvzMQ==", - "license": "MIT", - "dependencies": { - "filename-reserved-regex": "^3.0.0" - } - }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -23830,7 +23989,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" @@ -23904,18 +24062,6 @@ "node": "14 || 16 || >=18" } }, - "node_modules/get-stdin": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", - "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/get-stream": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", @@ -23967,12 +24113,6 @@ "url": "https://github.com/fisker/git-hooks-list?sponsor=1" } }, - "node_modules/github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", - "license": "MIT" - }, "node_modules/glob": { "version": "10.3.10", "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", @@ -24229,7 +24369,6 @@ "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.12.0.tgz", "integrity": "sha512-DKKrynuQRne0PNpEbzuEdHlYOMksHSUI8Zc9Unei5gTsMNA2/vMpoMz/yKba50pejK56qj98qM0SjYxAKi13gQ==", "license": "MIT", - "peer": true, "engines": { "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" } @@ -24459,7 +24598,6 @@ "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, "license": "MIT", "dependencies": { "inherits": "^2.0.3", @@ -24607,7 +24745,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "dev": true, "license": "MIT", "dependencies": { "hash.js": "^1.0.3", @@ -24673,12 +24810,6 @@ "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", "license": "BSD-2-Clause" }, - "node_modules/http-parser-js": { - "version": "0.4.13", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.13.tgz", - "integrity": "sha512-u8u5ZaG0Tr/VvHlucK2ufMuOp4/5bvwgneXle+y228K5rMbJOlVjThONcaAw3ikAy8b2OO9RfEucdMHFz3UWMA==", - "license": "MIT" - }, "node_modules/http2-wrapper": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", @@ -24772,29 +24903,6 @@ "minimatch": "^3.0.4" } }, - "node_modules/immediate-chunk-store": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/immediate-chunk-store/-/immediate-chunk-store-2.2.0.tgz", - "integrity": "sha512-1bHBna0hCa6arRXicu91IiL9RvvkbNYLVq+mzWdaLGZC3hXvX4doh8e1dLhMKez5siu63CYgO5NrGJbRX5lbPA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.3" - } - }, "node_modules/import-fresh": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", @@ -24820,6 +24928,18 @@ "node": ">=4" } }, + "node_modules/import-in-the-middle": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.15.0.tgz", + "integrity": "sha512-bpQy+CrsRmYmoPMAE/0G33iwRqwW4ouqdRg8jgbH3aKuCtOc8lxgmYXg2dMM92CRiGP660EtBcymH/eVUpCSaA==", + "license": "Apache-2.0", + "dependencies": { + "acorn": "^8.14.0", + "acorn-import-attributes": "^1.9.5", + "cjs-module-lexer": "^1.2.2", + "module-details-from-path": "^1.0.3" + } + }, "node_modules/import-local": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", @@ -24876,12 +24996,6 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "license": "ISC" }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "license": "ISC" - }, "node_modules/inline-style-parser": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz", @@ -24969,34 +25083,6 @@ "fp-ts": "^2.5.0" } }, - "node_modules/ip": { - "name": "@webpod/ip", - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@webpod/ip/-/ip-0.6.1.tgz", - "integrity": "sha512-0oPIqLPfoIPzstsbmWUFlLx9I8KiisiC9/+YQPaotVU67DnTV+vx/zXXnkMgZTKu9rHWznmUQX3jgvfqr1t4+g==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/ip-address": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", - "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, - "node_modules/ip-set": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ip-set/-/ip-set-2.2.0.tgz", - "integrity": "sha512-NmmY3BfY4pejh6GOqNcNWRsBNdR+I7pUVtXRgZlkZdcnLtlG4X6HNtu2FZoCGyvGRzyroP1fJ+SJZBZ65JJl/Q==", - "license": "MIT", - "dependencies": { - "ip": "^2.0.1" - } - }, "node_modules/ipaddr.js": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.3.0.tgz", @@ -25270,12 +25356,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-file/-/is-file-1.0.0.tgz", - "integrity": "sha512-ZGMuc+xA8mRnrXtmtf2l/EkIW2zaD2LSBWlaOVEF6yH4RTndHob65V4SwWWdtGKVthQfXPVKsXqw4TDUjbVxVQ==", - "license": "MIT" - }, "node_modules/is-finalizationregistry": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", @@ -25506,6 +25586,26 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-standalone-pwa": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-standalone-pwa/-/is-standalone-pwa-0.1.1.tgz", + "integrity": "sha512-9Cbovsa52vNQCjdXOzeQq5CnCbAcRk05aU62K20WO372NrTv0NxibLFCK6lQ4/iZEFdEA3p3t2VNOn8AJ53F5g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], + "license": "MIT" + }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -26503,12 +26603,6 @@ "dev": true, "license": "MIT" }, - "node_modules/join-async-iterator": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/join-async-iterator/-/join-async-iterator-1.1.1.tgz", - "integrity": "sha512-ATse+nuNeKZ9K1y27LKdvPe/GCe9R/u9dw9vI248e+vILeRK3IcJP4JUPAlSmKRCDK0cKhEwfmiw4Skqx7UnGQ==", - "license": "MIT" - }, "node_modules/joycon": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", @@ -26519,6 +26613,12 @@ "node": ">=10" } }, + "node_modules/js-base64": { + "version": "3.7.8", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.8.tgz", + "integrity": "sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow==", + "license": "BSD-3-Clause" + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -26628,56 +26728,6 @@ "node": ">=4.0" } }, - "node_modules/junk": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/junk/-/junk-4.0.1.tgz", - "integrity": "sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ==", - "license": "MIT", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/k-bucket": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/k-bucket/-/k-bucket-5.1.0.tgz", - "integrity": "sha512-Fac7iINEovXIWU20GPnOMLUbjctiS+cnmyjC4zAUgvs3XPf1vo9akfCHkigftSic/jiKqKl+KA3a/vFcJbHyCg==", - "license": "MIT", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/k-rpc": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/k-rpc/-/k-rpc-5.1.0.tgz", - "integrity": "sha512-FGc+n70Hcjoa/X2JTwP+jMIOpBz+pkRffHnSl9yrYiwUxg3FIgD50+u1ePfJUOnRCnx6pbjmVk5aAeB1wIijuQ==", - "license": "MIT", - "dependencies": { - "k-bucket": "^5.0.0", - "k-rpc-socket": "^1.7.2", - "randombytes": "^2.0.5" - } - }, - "node_modules/k-rpc-socket": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/k-rpc-socket/-/k-rpc-socket-1.11.1.tgz", - "integrity": "sha512-8xtA8oqbZ6v1Niryp2/g4GxW16EQh5MvrUylQoOG+zcrDff5CKttON2XUXvMwlIHq4/2zfPVFiinAccJ+WhxoA==", - "license": "MIT", - "dependencies": { - "bencode": "^2.0.0", - "chrome-dgram": "^3.0.2", - "chrome-dns": "^1.0.0", - "chrome-net": "^3.3.2" - } - }, - "node_modules/k-rpc-socket/node_modules/bencode": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/bencode/-/bencode-2.0.3.tgz", - "integrity": "sha512-D/vrAD4dLVX23NalHwb8dSvsUsxeRPO8Y7ToKA015JQYq69MLDOMkC0uGZYA/MPpltLO8rt8eqFC2j8DxjTZ/w==", - "license": "MIT" - }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -26724,12 +26774,6 @@ "node": ">=0.10" } }, - "node_modules/last-one-wins": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/last-one-wins/-/last-one-wins-1.0.4.tgz", - "integrity": "sha512-t+KLJFkHPQk8lfN6WBOiGkiUXoub+gnb2XTYI2P3aiISL+94xgZ1vgz1SXN/N4hthuOoLXarXfBZPUruyjQtfA==", - "license": "MIT" - }, "node_modules/level": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/level/-/level-10.0.0.tgz", @@ -26857,6 +26901,27 @@ "libsodium-sumo": "^0.7.15" } }, + "node_modules/light-bolt11-decoder": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/light-bolt11-decoder/-/light-bolt11-decoder-3.2.0.tgz", + "integrity": "sha512-3QEofgiBOP4Ehs9BI+RkZdXZNtSys0nsJ6fyGeSiAGCBsMwHGUDS/JQlY/sTnWs91A2Nh0S9XXfA8Sy9g6QpuQ==", + "license": "MIT", + "dependencies": { + "@scure/base": "1.1.1" + } + }, + "node_modules/light-bolt11-decoder/node_modules/@scure/base": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", + "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT" + }, "node_modules/lilconfig": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", @@ -26869,11 +26934,6 @@ "url": "https://github.com/sponsors/antonk52" } }, - "node_modules/limiter": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", - "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" - }, "node_modules/linebreak": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/linebreak/-/linebreak-1.1.0.tgz", @@ -26900,37 +26960,6 @@ "uc.micro": "^2.0.0" } }, - "node_modules/load-ip-set": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/load-ip-set/-/load-ip-set-3.0.1.tgz", - "integrity": "sha512-ZFZt1g4Exq01SFtKjffqau+L4Qibt+51utymHHiWo8Iu/W7LYSqE7fiZ/iAZ6dIqbmeU6ICSIK02IizSScBkLQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "cross-fetch-ponyfill": "^1.0.1", - "ip-set": "^2.1.0", - "netmask": "^2.0.1", - "once": "^1.4.0", - "queue-microtask": "^1.2.3", - "split": "^1.0.1" - }, - "engines": { - "node": ">=12.20.0" - } - }, "node_modules/load-tsconfig": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz", @@ -26982,6 +27011,12 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "license": "MIT" }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "license": "MIT" + }, "node_modules/lodash.castarray": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz", @@ -27032,8 +27067,7 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", - "license": "Apache-2.0", - "peer": true + "license": "Apache-2.0" }, "node_modules/longest-streak": { "version": "3.1.0", @@ -27069,18 +27103,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lru": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lru/-/lru-3.1.0.tgz", - "integrity": "sha512-5OUtoiVIGU4VXBOshidmtOsvBIvcQR6FD/RzWSvaeHyxCGB+PCUCu+52lqMfdc0h/2CLvHhZS4TwUmMQrrMbBQ==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -27090,33 +27112,6 @@ "yallist": "^3.0.2" } }, - "node_modules/lt_donthave": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lt_donthave/-/lt_donthave-2.0.6.tgz", - "integrity": "sha512-ZVcaRbZpNB6ugwa5T9gUN0Jg9XGT9cyVjZJvdbN3V27rOQ170rEs//zaQXEQkTCBhh3i/JnCRF472KWHJu74Yg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "debug": "^4.2.0", - "unordered-array-remove": "^1.0.2" - }, - "engines": { - "node": ">=12.20.0" - } - }, "node_modules/lunr": { "version": "2.3.9", "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", @@ -27133,34 +27128,6 @@ "@jridgewell/sourcemap-codec": "^1.5.5" } }, - "node_modules/magnet-uri": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/magnet-uri/-/magnet-uri-7.0.7.tgz", - "integrity": "sha512-z/+dB2NQsXaDuxVBjoPLpZT8ePaacUmoontoFheRBl++nALHYs4qV9MmhTur9e4SaMbkCR/uPX43UMzEOoeyaw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "@thaunknown/thirty-two": "^1.0.5", - "bep53-range": "^2.0.0", - "uint8-util": "^2.2.5" - }, - "engines": { - "node": ">=12.20.0" - } - }, "node_modules/make-dir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", @@ -27450,15 +27417,6 @@ "integrity": "sha512-QmpUu4KqDmX0plH4u+tf0riMc1KHE1+lw95cMrLlXQAFOx/xnBtwhZ52XJxd9X2O6kwKBqX32kmhbhlobD0cuw==", "license": "MIT" }, - "node_modules/memory-chunk-store": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/memory-chunk-store/-/memory-chunk-store-1.3.5.tgz", - "integrity": "sha512-E1Xc1U4ifk/FkC2ZsWhCaW1xg9HbE/OBmQTLe2Tr9c27YPSLbW7kw1cnb3kQWD1rDtErFJHa7mB9EVrs7aTx9g==", - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.3" - } - }, "node_modules/meow": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/meow/-/meow-7.1.1.tgz", @@ -27502,6 +27460,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, "license": "MIT" }, "node_modules/merge2": { @@ -27517,6 +27476,18 @@ "resolved": "scripts/mesh-cli", "link": true }, + "node_modules/micro-packed": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/micro-packed/-/micro-packed-0.7.3.tgz", + "integrity": "sha512-2Milxs+WNC00TRlem41oRswvw31146GiSaoCT7s3Xi2gMUglW5QBeqlQaZeHr5tJx9nm3i57LNXPqxOOaWtTYg==", + "license": "MIT", + "dependencies": { + "@scure/base": "~1.2.5" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/micromark": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", @@ -28147,18 +28118,6 @@ "dev": true, "license": "MIT" }, - "node_modules/mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -28233,14 +28192,12 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true, "license": "ISC" }, "node_modules/minimalistic-crypto-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", - "dev": true, "license": "MIT" }, "node_modules/minimatch": { @@ -28325,12 +28282,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "license": "MIT" - }, "node_modules/mlly": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.0.tgz", @@ -28344,6 +28295,12 @@ "ufo": "^1.6.1" } }, + "node_modules/module-details-from-path": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.4.tgz", + "integrity": "sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==", + "license": "MIT" + }, "node_modules/module-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz", @@ -28437,17 +28394,12 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/napi-build-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", - "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", - "license": "MIT" - }, "node_modules/napi-macros": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.2.2.tgz", "integrity": "sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/napi-postinstall": { "version": "0.3.4", @@ -28477,15 +28429,6 @@ "dev": true, "license": "MIT" }, - "node_modules/netmask": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", - "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/next": { "version": "14.2.35", "resolved": "https://registry.npmjs.org/next/-/next-14.2.35.tgz", @@ -28584,90 +28527,76 @@ "node": "^10 || ^12 || >=14" } }, - "node_modules/node-abi": { - "version": "3.85.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.85.0.tgz", - "integrity": "sha512-zsFhmbkAzwhTft6nd3VxcG0cvJsT70rL+BIGHWVq5fi6MwGrHwzqKaxXE+Hl2GmnGItnDKPPkO5/LQqjVkIdFg==", + "node_modules/nice-grpc": { + "version": "2.1.14", + "resolved": "https://registry.npmjs.org/nice-grpc/-/nice-grpc-2.1.14.tgz", + "integrity": "sha512-GK9pKNxlvnU5FAdaw7i2FFuR9CqBspcE+if2tqnKXBcE0R8525wj4BZvfcwj7FjvqbssqKxRHt2nwedalbJlww==", "license": "MIT", "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=10" + "@grpc/grpc-js": "^1.14.0", + "abort-controller-x": "^0.4.0", + "nice-grpc-common": "^2.0.2" } }, - "node_modules/node-datachannel": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/node-datachannel/-/node-datachannel-0.12.0.tgz", - "integrity": "sha512-pZ9FsVZpHdUKqyWynuCc9IBLkZPJMpDzpNk4YNPCizbIXHYifpYeWqSF35REHGIWi9JMCf11QzapsyQGo/Y4Ig==", - "hasInstallScript": true, - "license": "MPL 2.0", + "node_modules/nice-grpc-client-middleware-retry": { + "version": "3.1.13", + "resolved": "https://registry.npmjs.org/nice-grpc-client-middleware-retry/-/nice-grpc-client-middleware-retry-3.1.13.tgz", + "integrity": "sha512-Q9I/wm5lYkDTveKFirrTHBkBY137yavXZ4xQDXTPIycUp7aLXD8xPTHFhqtAFWUw05aS91uffZZRgdv3HS0y/g==", + "license": "MIT", "dependencies": { - "node-domexception": "^2.0.1", - "prebuild-install": "^7.0.1" - }, - "engines": { - "node": ">=16.0.0" + "abort-controller-x": "^0.4.0", + "nice-grpc-common": "^2.0.2" } }, - "node_modules/node-datachannel/node_modules/node-domexception": { + "node_modules/nice-grpc-common": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-2.0.2.tgz", - "integrity": "sha512-Qf9vHK9c5MGgUXj8SnucCIS4oEPuUstjRaMplLGeZpbWMfNV1rvEcXuwoXfN51dUfD1b4muPHPQtCx/5Dj/QAA==", - "deprecated": "Use your platform's native DOMException instead", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], + "resolved": "https://registry.npmjs.org/nice-grpc-common/-/nice-grpc-common-2.0.2.tgz", + "integrity": "sha512-7RNWbls5kAL1QVUOXvBsv1uO0wPQK3lHv+cY1gwkTzirnG1Nop4cBJZubpgziNbaVc/bl9QJcyvsf/NQxa3rjQ==", "license": "MIT", - "engines": { - "node": ">=16" + "dependencies": { + "ts-error": "^1.0.6" } }, - "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "deprecated": "Use your platform's native DOMException instead", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], + "node_modules/nice-grpc-opentelemetry": { + "version": "0.1.20", + "resolved": "https://registry.npmjs.org/nice-grpc-opentelemetry/-/nice-grpc-opentelemetry-0.1.20.tgz", + "integrity": "sha512-dRH6lmm8OgqY21WRo9BP6cHHqIhbG5UT/INFne0qIDSlSseYc6s1+qNTE3Up0z/4zY50V8tVTOH30yyhkwNXTw==", "license": "MIT", - "engines": { - "node": ">=10.5.0" + "dependencies": { + "@opentelemetry/api": "^1.8.0", + "@opentelemetry/semantic-conventions": "^1.22.0", + "abort-controller-x": "^0.4.0", + "ipaddr.js": "^2.0.1", + "nice-grpc-common": "^2.0.2" } }, - "node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "node_modules/nice-grpc-web": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/nice-grpc-web/-/nice-grpc-web-3.3.9.tgz", + "integrity": "sha512-CiCQLdLTux9D4try8XlHW9tHIP/uLB+aciNKErDNLUM6kzhPFaVh8q+oTkoVGOjxOacEzlOwQRRjwQETAx5lVw==", "license": "MIT", "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" + "abort-controller-x": "^0.4.0", + "isomorphic-ws": "^5.0.0", + "js-base64": "^3.7.2", + "nice-grpc-common": "^2.0.2" + } + }, + "node_modules/nice-grpc-web/node_modules/isomorphic-ws": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", + "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", + "license": "MIT", + "peerDependencies": { + "ws": "*" } }, + "node_modules/node-addon-api": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", + "license": "MIT" + }, "node_modules/node-gyp-build": { "version": "4.8.4", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", @@ -31838,40 +31767,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parse-torrent": { - "version": "11.0.19", - "resolved": "https://registry.npmjs.org/parse-torrent/-/parse-torrent-11.0.19.tgz", - "integrity": "sha512-T0lEkDdFVQsy0YxHIKjzDHSgt/yl57f3INs5jl7OZqAm77XDF0FgRgrv3LCKgSqsTOrMwYaF0t2761WKdvhgig==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "bencode": "^4.0.0", - "cross-fetch-ponyfill": "^1.0.3", - "get-stdin": "^9.0.0", - "magnet-uri": "^7.0.7", - "queue-microtask": "^1.2.3", - "uint8-util": "^2.2.5" - }, - "bin": { - "parse-torrent": "bin/cmd.js" - }, - "engines": { - "node": ">=12.20.0" - } - }, "node_modules/path-browserify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", @@ -31998,12 +31893,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/piece-length": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/piece-length/-/piece-length-2.0.1.tgz", - "integrity": "sha512-dBILiDmm43y0JPISWEmVGKBETQjwJe6mSU9GND+P9KW0SJGUwoU/odyH1nbalOP9i8WSYuqf1lQnaj92Bhw+Ug==", - "license": "MIT" - }, "node_modules/pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -32394,32 +32283,6 @@ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "license": "MIT" }, - "node_modules/prebuild-install": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", - "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", - "license": "MIT", - "dependencies": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^2.0.0", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -32640,7 +32503,6 @@ "integrity": "sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==", "hasInstallScript": true, "license": "BSD-3-Clause", - "peer": true, "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -32807,16 +32669,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/pump": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", - "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -32871,15 +32723,6 @@ "node": ">=16.0.0" } }, - "node_modules/qrcode-svg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/qrcode-svg/-/qrcode-svg-1.1.0.tgz", - "integrity": "sha512-XyQCIXux1zEIA3NPb0AeR8UMYvXZzWEhgdBgBjH9gO7M48H9uoHzviNz8pXw3UzrAcxRRRn9gxHewAVK7bn9qw==", - "license": "MIT", - "bin": { - "qrcode-svg": "bin/qrcode-svg.js" - } - }, "node_modules/qs": { "version": "6.14.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", @@ -32925,12 +32768,6 @@ ], "license": "MIT" }, - "node_modules/queue-tick": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", - "license": "MIT" - }, "node_modules/quick-format-unescaped": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", @@ -32949,36 +32786,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/random-access-file": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/random-access-file/-/random-access-file-4.1.2.tgz", - "integrity": "sha512-GQM6R78DceZDcQod8KxlDFwXIiUvlvuy1EOzxTDsjuDjW5NlnlZi0MOk6iI4itAj/2vcvdqcEExYbVpC/dJcEw==", - "license": "MIT", - "dependencies": { - "bare-fs": "^4.0.1", - "bare-path": "^3.0.0", - "random-access-storage": "^3.0.0" - }, - "optionalDependencies": { - "fs-native-extensions": "^1.3.1" - } - }, - "node_modules/random-access-storage": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/random-access-storage/-/random-access-storage-3.0.2.tgz", - "integrity": "sha512-Es9maUyWdJXWKckKy9s1+vT+DEgAt+PBb9lxPaake/0EDUsHehloKGv9v1zimS2V3gpFAcQXubvc1Rgci2sDPQ==", - "license": "MIT", - "dependencies": { - "bare-events": "^2.2.0", - "queue-tick": "^1.0.0" - } - }, - "node_modules/random-iterate": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/random-iterate/-/random-iterate-1.0.1.tgz", - "integrity": "sha512-Jdsdnezu913Ot8qgKgSgs63XkAjEsnMcS1z+cC6D6TNXsUXsMxy0RpclF2pzGZTEiTXL9BiArdGTEexcv4nqcA==", - "license": "MIT" - }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -32999,48 +32806,6 @@ "safe-buffer": "^5.1.0" } }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/rc4": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/rc4/-/rc4-0.1.5.tgz", - "integrity": "sha512-xdDTNV90z5x5u25Oc871Xnvu7yAr4tV7Eluh0VSvrhUkry39q1k+zkz7xroqHbRq+8PiazySHJPArqifUvz9VA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/react": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", @@ -33452,29 +33217,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/record-cache": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/record-cache/-/record-cache-1.2.0.tgz", - "integrity": "sha512-kyy3HWCez2WrotaL3O4fTn0rsIdfRKOdQQcEJ9KpvmKmbffKVvwsloX063EgRUlpJIXHiDQFhJcTbZequ2uTZw==", - "license": "MIT", - "dependencies": { - "b4a": "^1.3.1" - } - }, - "node_modules/record-cache/node_modules/b4a": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.3.tgz", - "integrity": "sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==", - "license": "Apache-2.0", - "peerDependencies": { - "react-native-b4a": "*" - }, - "peerDependenciesMeta": { - "react-native-b4a": { - "optional": true - } - } - }, "node_modules/redent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", @@ -33703,29 +33445,29 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/require-addon": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/require-addon/-/require-addon-1.2.0.tgz", - "integrity": "sha512-VNPDZlYgIYQwWp9jMTzljx+k0ZtatKlcvOhktZ/anNPI3dQ9NXk7cq2U4iJ1wd9IrytRnYhyEocFWbkdPb+MYA==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "bare-addon-resolve": "^1.3.0" - }, - "engines": { - "bare": ">=1.10.0" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, + "node_modules/require-in-the-middle": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.5.2.tgz", + "integrity": "sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.5", + "module-details-from-path": "^1.0.3", + "resolve": "^1.22.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, "node_modules/resolve": { "version": "1.22.11", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", @@ -33936,49 +33678,6 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/run-parallel-limit": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz", - "integrity": "sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/run-series": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/run-series/-/run-series-1.1.9.tgz", - "integrity": "sha512-Arc4hUN896vjkqCYrUXquBFtRZdv1PfLbTYP71efP6butxyQ0kWpiNJyAgsxscmQg1cqvHY32/UCBzXedTpU2g==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, "node_modules/runed": { "version": "0.15.4", "resolved": "https://registry.npmjs.org/runed/-/runed-0.15.4.tgz", @@ -34125,12 +33824,6 @@ "node": ">=16" } }, - "node_modules/sax": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.3.tgz", - "integrity": "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==", - "license": "BlueOak-1.0.0" - }, "node_modules/scalus": { "version": "0.14.2", "resolved": "https://registry.npmjs.org/scalus/-/scalus-0.14.2.tgz", @@ -34160,11 +33853,20 @@ "license": "MIT", "peer": true }, - "node_modules/seed-random": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/seed-random/-/seed-random-2.2.0.tgz", - "integrity": "sha512-34EQV6AAHQGhoc0tn/96a9Fsi6v2xdqe/dMUwljGRaFOzR3EgRmECvD0O8vi8X+/uQ50LGHfkNu/Eue5TPKZkQ==", - "license": "MIT" + "node_modules/secp256k1": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-5.0.1.tgz", + "integrity": "sha512-lDFs9AAIaWP9UCdtWrotXWWF9t8PWgQDcxqgAnpM9rMqxb3Oaq2J0thzPVSxBwdJgyQtkU/sYtFtbM1RSt/iYA==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "elliptic": "^6.5.7", + "node-addon-api": "^5.0.0", + "node-gyp-build": "^4.2.0" + }, + "engines": { + "node": ">=18.0.0" + } }, "node_modules/semver": { "version": "7.7.3", @@ -34409,26 +34111,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, "node_modules/simple-functional-loader": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/simple-functional-loader/-/simple-functional-loader-1.2.1.tgz", @@ -34438,31 +34120,6 @@ "loader-utils": "^2.0.0" } }, - "node_modules/simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, "node_modules/sirv": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz", @@ -34494,30 +34151,6 @@ "node": ">=8" } }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "license": "MIT", - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks": { - "version": "2.8.7", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", - "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", - "license": "MIT", - "dependencies": { - "ip-address": "^10.0.1", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.0.0", - "npm": ">= 3.0.0" - } - }, "node_modules/sonic-boom": { "version": "3.8.1", "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.8.1.tgz", @@ -34694,28 +34327,6 @@ "dev": true, "license": "CC0-1.0" }, - "node_modules/speed-limiter": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/speed-limiter/-/speed-limiter-1.0.2.tgz", - "integrity": "sha512-Ax+TbUOho84bWUc3AKqWtkIvAIVws7d6QI4oJkgH4yQ5Yil+lR3vjd/7qd51dHKGzS5bFxg0++QwyNRN7s6rZA==", - "license": "MIT", - "dependencies": { - "limiter": "^1.1.5", - "streamx": "^2.10.3" - } - }, - "node_modules/split": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", - "license": "MIT", - "dependencies": { - "through": "2" - }, - "engines": { - "node": "*" - } - }, "node_modules/split2": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", @@ -35032,19 +34643,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/string2compact": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/string2compact/-/string2compact-2.0.1.tgz", - "integrity": "sha512-Bm/T8lHMTRXw+u83LE+OW7fXmC/wM+Mbccfdo533ajSBNxddDHlRrvxE49NdciGHgXkUQM5WYskJ7uTkbBUI0A==", - "license": "MIT", - "dependencies": { - "addr-to-ip-port": "^2.0.0", - "ipaddr.js": "^2.0.0" - }, - "engines": { - "node": ">=12.20.0" - } - }, "node_modules/stringify-entities": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", @@ -35501,40 +35099,6 @@ "node": ">=18" } }, - "node_modules/tar-fs": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz", - "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", - "license": "MIT", - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/tar-fs/node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "license": "ISC" - }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "license": "MIT", - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/tar/node_modules/minipass": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", @@ -35681,31 +35245,6 @@ "real-require": "^0.2.0" } }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "license": "MIT" - }, - "node_modules/throughput": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/throughput/-/throughput-1.0.2.tgz", - "integrity": "sha512-jvK1ZXuhsggjb3qYQjMiU/AVYYiTeqT5thWvYR2yuy2LGM84P5MSSyAinwHahGsdBYKR9m9HncVR/3f3nFKkxg==", - "license": "MIT" - }, - "node_modules/thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "license": "MIT" - }, - "node_modules/timeout-refresh": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/timeout-refresh/-/timeout-refresh-1.0.3.tgz", - "integrity": "sha512-Mz0CX4vBGM5lj8ttbIFt7o4ZMxk/9rgudJRh76EvB7xXZMur7T/cjRiH2w4Fmkq0zxf2QpM8IFvOSRn8FEu3gA==", - "license": "MIT", - "optional": true - }, "node_modules/timers-browserify": { "version": "2.0.12", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", @@ -35816,62 +35355,6 @@ "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==", "license": "MIT" }, - "node_modules/torrent-discovery": { - "version": "11.0.19", - "resolved": "https://registry.npmjs.org/torrent-discovery/-/torrent-discovery-11.0.19.tgz", - "integrity": "sha512-BLhdj7o0px+u72UuhJmq6CB0LBkZOa1nwgbd5ktyTELJlvcRL8EoxSSmSpzMOIScLGgslh1uLaAy/POhLpagtg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "bittorrent-dht": "^11.0.11", - "bittorrent-lsd": "^2.0.0", - "bittorrent-tracker": "^11.2.2", - "debug": "^4.4.3", - "run-parallel": "^1.2.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/torrent-piece": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/torrent-piece/-/torrent-piece-3.0.2.tgz", - "integrity": "sha512-K1A5tZ3BolFrUtnBpk9iDg8av1na0OgQ7E0IlA9tj0bcsPhLhzvln+oMtMmtkqAwmUsbNCilRm2ymUdZg0rVbQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "uint8-util": "^2.1.9" - }, - "engines": { - "node": ">=12.20.0" - } - }, "node_modules/totalist": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", @@ -35950,6 +35433,12 @@ "node": ">=14.0.0" } }, + "node_modules/ts-error": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/ts-error/-/ts-error-1.0.6.tgz", + "integrity": "sha512-tLJxacIQUM82IR7JO1UUkKlYuUTmoY9HBJAmNWFzheSlDS5SPMcNIepejHJa4BpPQLAcbRhRf3GDJzyj6rbKvA==", + "license": "MIT" + }, "node_modules/ts-interface-checker": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", @@ -36102,6 +35591,15 @@ "devOptional": true, "license": "MIT" }, + "node_modules/ts-poet": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ts-poet/-/ts-poet-6.12.0.tgz", + "integrity": "sha512-xo+iRNMWqyvXpFTaOAvLPA5QAWO6TZrSUs5s4Odaya3epqofBu/fMLHEWl8jPmjhA0s9sgj9sNvF1BmaQlmQkA==", + "license": "Apache-2.0", + "dependencies": { + "dprint-node": "^1.0.8" + } + }, "node_modules/tsconfig-paths": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", @@ -36299,18 +35797,6 @@ "dev": true, "license": "MIT" }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "license": "Apache-2.0", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, "node_modules/turbo": { "version": "2.7.3", "resolved": "https://registry.npmjs.org/turbo/-/turbo-2.7.3.tgz", @@ -36413,12 +35899,6 @@ "win32" ] }, - "node_modules/tweetnacl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", - "license": "Unlicense" - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -36596,6 +36076,57 @@ "node": ">=14.17" } }, + "node_modules/ua-is-frozen": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ua-is-frozen/-/ua-is-frozen-0.1.2.tgz", + "integrity": "sha512-RwKDW2p3iyWn4UbaxpP2+VxwqXh0jpvdxsYpZ5j/MLLiQOfbsV5shpgQiw93+KMYQPcteeMQ289MaAFzs3G9pw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], + "license": "MIT" + }, + "node_modules/ua-parser-js": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-2.0.8.tgz", + "integrity": "sha512-BdnBM5waFormdrOFBU+cA90R689V0tWUWlIG2i30UXxElHjuCu5+dOV2Etw3547jcQ/yaLtPm9wrqIuOY2bSJg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "license": "AGPL-3.0-or-later", + "dependencies": { + "detect-europe-js": "^0.1.2", + "is-standalone-pwa": "^0.1.1", + "ua-is-frozen": "^0.1.2" + }, + "bin": { + "ua-parser-js": "script/cli.js" + }, + "engines": { + "node": "*" + } + }, "node_modules/uc.micro": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", @@ -36624,15 +36155,6 @@ "node": ">=0.8.0" } }, - "node_modules/uint8-util": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/uint8-util/-/uint8-util-2.2.5.tgz", - "integrity": "sha512-/QxVQD7CttWpVUKVPz9znO+3Dd4BdTSnFQ7pv/4drVhC9m4BaL2LFHTkJn6EsYoxT79VDq/2Gg8L0H22PrzyMw==", - "license": "MIT", - "dependencies": { - "base64-arraybuffer": "^1.0.2" - } - }, "node_modules/uint8-varint": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/uint8-varint/-/uint8-varint-2.0.4.tgz", @@ -36849,19 +36371,6 @@ "node": ">= 10.0.0" } }, - "node_modules/unordered-array-remove": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unordered-array-remove/-/unordered-array-remove-1.0.2.tgz", - "integrity": "sha512-45YsfD6svkgaCBNyvD+dFHm4qFX9g3wRSIVgWVPtm2OCnphvPxzJoe20ATsiNpNJrmzHifnxm+BN5F7gFT/4gw==", - "license": "MIT" - }, - "node_modules/unordered-set": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unordered-set/-/unordered-set-2.0.1.tgz", - "integrity": "sha512-eUmNTPzdx+q/WvOHW0bgGYLWvWHNT3PTKEQLg0MAQhc0AHASHVHoP/9YytYd4RBVariqno/mEUhVZN98CmD7bg==", - "license": "MIT", - "optional": true - }, "node_modules/unrs-resolver": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", @@ -37008,77 +36517,6 @@ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, - "node_modules/ut_metadata": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/ut_metadata/-/ut_metadata-4.0.3.tgz", - "integrity": "sha512-2tovup0VDYpT8t8+EhhhKBmbgIyiYyJQZ+Hf+/61+SvjuRS2MEeA5CiSARP4q+9/83Wu09OsGrUre/Zv6OI5NA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "bencode": "^4.0.0", - "bitfield": "^4.0.0", - "debug": "^4.2.0", - "uint8-util": "^2.1.3" - }, - "engines": { - "node": ">=12.20.0" - } - }, - "node_modules/ut_pex": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/ut_pex/-/ut_pex-4.0.4.tgz", - "integrity": "sha512-isVTbp2TKGoMOu+4Zh/i6ijpYr0VG83xjRPgCXaUjKzgXXndjCMWg32/9kZjubD+kxEXcmXMkoS8IttS9FZE8g==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "bencode": "^4.0.0", - "compact2string": "^1.4.1", - "string2compact": "^2.0.1" - }, - "engines": { - "node": ">=12.20.0" - } - }, - "node_modules/utf-8-validate": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-6.0.6.tgz", - "integrity": "sha512-q3l3P9UtEEiAHcsgsqTgf9PPjctrDWoIXW3NpOHFdRDbLvu4DLIcxHangJ4RLrWkBcKjmcs/6NkerI8T/rE4LA==", - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, "node_modules/util": { "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", @@ -37098,27 +36536,6 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "license": "MIT" }, - "node_modules/utp-native": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/utp-native/-/utp-native-2.5.3.tgz", - "integrity": "sha512-sWTrWYXPhhWJh+cS2baPzhaZc89zwlWCfwSthUjGhLkZztyPhcQllo+XVVCbNGi7dhyRlxkWxN4NKU6FbA9Y8w==", - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "dependencies": { - "napi-macros": "^2.0.0", - "node-gyp-build": "^4.2.0", - "readable-stream": "^3.0.2", - "timeout-refresh": "^1.0.0", - "unordered-set": "^2.0.1" - }, - "bin": { - "ucat": "ucat.js" - }, - "engines": { - "node": ">=8.12" - } - }, "node_modules/uuid": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", @@ -37132,6 +36549,15 @@ "uuid": "dist/esm/bin/uuid" } }, + "node_modules/uuidv7": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/uuidv7/-/uuidv7-1.1.0.tgz", + "integrity": "sha512-2VNnOC0+XQlwogChUDzy6pe8GQEys9QFZBGOh54l6qVfwoCUwwRvk7rDTgaIsRgsF5GFa5oiNg8LqXE3jofBBg==", + "license": "Apache-2.0", + "bin": { + "uuidv7": "cli.js" + } + }, "node_modules/v8-compile-cache": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", @@ -37441,6 +36867,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true, "license": "MIT" }, "node_modules/walker": { @@ -37474,15 +36901,6 @@ "@zxing/text-encoding": "0.9.0" } }, - "node_modules/web-streams-polyfill": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", - "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, "node_modules/webcrypto-core": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-1.8.1.tgz", @@ -37508,86 +36926,6 @@ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", "license": "BSD-2-Clause" }, - "node_modules/webrtc-polyfill": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/webrtc-polyfill/-/webrtc-polyfill-1.1.10.tgz", - "integrity": "sha512-sOn0bj3/noUdzQX7rvk0jFbBurqWDGGo2ipl+WfgoOe/x3cxbGLk/ZUY+WHCISSlLaIeBumi1X3wxQZnUESExQ==", - "license": "MIT", - "dependencies": { - "node-datachannel": "^v0.12.0", - "node-domexception": "^1.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/webtorrent": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/webtorrent/-/webtorrent-2.8.5.tgz", - "integrity": "sha512-oIjpuBrypApJ+RCZ8RRaHEncVSkt2cd25/I4Trb2sk9nlaEF92Dg1u8BCwqA4eJR7wIZQM95GyO7Wo4QTbrUUA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "@silentbot1/nat-api": "^0.4.9", - "@thaunknown/simple-peer": "^10.0.11", - "@webtorrent/http-node": "^1.3.0", - "addr-to-ip-port": "^2.0.0", - "bitfield": "^4.2.0", - "bittorrent-dht": "^11.0.10", - "bittorrent-protocol": "^4.1.20", - "cache-chunk-store": "^3.2.2", - "chunk-store-iterator": "^1.0.4", - "cpus": "^1.0.3", - "create-torrent": "^6.1.0", - "cross-fetch-ponyfill": "^1.0.3", - "debug": "^4.4.1", - "escape-html": "^1.0.3", - "fs-chunk-store": "^5.0.0", - "fsa-chunk-store": "^1.3.0", - "immediate-chunk-store": "^2.2.0", - "join-async-iterator": "^1.1.1", - "load-ip-set": "^3.0.1", - "lt_donthave": "^2.0.5", - "memory-chunk-store": "^1.3.5", - "mime": "^3.0.0", - "once": "^1.4.0", - "parse-torrent": "^11.0.18", - "pump": "^3.0.2", - "queue-microtask": "^1.2.3", - "random-iterate": "^1.0.1", - "range-parser": "^1.2.1", - "run-parallel": "^1.2.0", - "run-parallel-limit": "^1.1.0", - "speed-limiter": "^1.0.2", - "streamx": "2.22.1", - "throughput": "^1.0.2", - "torrent-discovery": "^11.0.17", - "torrent-piece": "^3.0.2", - "uint8-util": "^2.2.5", - "unordered-array-remove": "^1.0.2", - "ut_metadata": "^4.0.3", - "ut_pex": "^4.0.4" - }, - "engines": { - "node": ">=16" - }, - "optionalDependencies": { - "utp-native": "^2.5.3" - } - }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", @@ -37677,13 +37015,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/which-runtime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/which-runtime/-/which-runtime-1.3.2.tgz", - "integrity": "sha512-5kwCfWml7+b2NO7KrLMhYihjRx0teKkd3yGp1Xk5Vaf2JGdSh+rgVhEALAD9c/59dP+YwJHXoEO7e8QPy7gOkw==", - "license": "Apache-2.0", - "optional": true - }, "node_modules/which-typed-array": { "version": "1.1.19", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", @@ -37908,28 +37239,6 @@ } } }, - "node_modules/xml2js": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", - "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", - "license": "MIT", - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "license": "MIT", - "engines": { - "node": ">=4.0" - } - }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -37944,7 +37253,6 @@ "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, "license": "ISC", "engines": { "node": ">=10" @@ -37975,7 +37283,6 @@ "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, "license": "MIT", "dependencies": { "cliui": "^8.0.1", @@ -38008,14 +37315,12 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, "license": "MIT" }, "node_modules/yargs/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -38030,7 +37335,6 @@ "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -38080,15 +37384,13 @@ "version": "0.8.15", "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/zen-observable-ts": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz", "integrity": "sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==", "license": "MIT", - "peer": true, "dependencies": { "zen-observable": "0.8.15" } @@ -38148,11 +37450,11 @@ }, "packages/bitcoin": { "name": "@meshsdk/bitcoin", - "version": "1.9.0-beta.96", + "version": "1.9.0-beta.97", "dependencies": { "@bitcoin-js/tiny-secp256k1-asmjs": "^2.2.3", - "@meshsdk/common": "1.9.0-beta.96", - "@meshsdk/provider": "1.9.0-beta.96", + "@meshsdk/common": "1.9.0-beta.97", + "@meshsdk/provider": "1.9.0-beta.97", "axios": "^1.7.9", "bip174": "^3.0.0", "bip32": "^4.0.0", @@ -39296,7 +38598,7 @@ }, "packages/mesh-common": { "name": "@meshsdk/common", - "version": "1.9.0-beta.96", + "version": "1.9.0-beta.97", "license": "Apache-2.0", "dependencies": { "bech32": "^2.0.0", @@ -39314,11 +38616,11 @@ }, "packages/mesh-contract": { "name": "@meshsdk/contract", - "version": "1.9.0-beta.96", + "version": "1.9.0-beta.97", "license": "Apache-2.0", "dependencies": { - "@meshsdk/common": "1.9.0-beta.96", - "@meshsdk/core": "1.9.0-beta.96", + "@meshsdk/common": "1.9.0-beta.97", + "@meshsdk/core": "1.9.0-beta.97", "libsodium-wrappers-sumo": "0.7.15" }, "devDependencies": { @@ -39330,14 +38632,14 @@ }, "packages/mesh-core": { "name": "@meshsdk/core", - "version": "1.9.0-beta.96", + "version": "1.9.0-beta.97", "license": "Apache-2.0", "dependencies": { - "@meshsdk/common": "1.9.0-beta.96", - "@meshsdk/core-cst": "1.9.0-beta.96", - "@meshsdk/provider": "1.9.0-beta.96", - "@meshsdk/transaction": "1.9.0-beta.96", - "@meshsdk/wallet": "1.9.0-beta.96", + "@meshsdk/common": "1.9.0-beta.97", + "@meshsdk/core-cst": "1.9.0-beta.97", + "@meshsdk/provider": "1.9.0-beta.97", + "@meshsdk/transaction": "1.9.0-beta.97", + "@meshsdk/wallet": "1.9.0-beta.97", "libsodium-wrappers-sumo": "0.7.15" }, "devDependencies": { @@ -39349,10 +38651,10 @@ }, "packages/mesh-core-csl": { "name": "@meshsdk/core-csl", - "version": "1.9.0-beta.96", + "version": "1.9.0-beta.97", "license": "Apache-2.0", "dependencies": { - "@meshsdk/common": "1.9.0-beta.96", + "@meshsdk/common": "1.9.0-beta.97", "@sidan-lab/whisky-js-browser": "^1.0.11", "@sidan-lab/whisky-js-nodejs": "^1.0.11", "@types/base32-encoding": "^1.0.2", @@ -39362,7 +38664,7 @@ }, "devDependencies": { "@meshsdk/configs": "*", - "@meshsdk/provider": "1.9.0-beta.96", + "@meshsdk/provider": "1.9.0-beta.97", "@types/json-bigint": "^1.0.4", "eslint": "^8.57.0", "ts-jest": "^29.1.4", @@ -39372,7 +38674,7 @@ }, "packages/mesh-core-cst": { "name": "@meshsdk/core-cst", - "version": "1.9.0-beta.96", + "version": "1.9.0-beta.97", "license": "Apache-2.0", "dependencies": { "@cardano-sdk/core": "^0.46.11", @@ -39383,7 +38685,7 @@ "@harmoniclabs/pair": "^1.0.0", "@harmoniclabs/plutus-data": "1.2.6", "@harmoniclabs/uplc": "1.4.1", - "@meshsdk/common": "1.9.0-beta.96", + "@meshsdk/common": "1.9.0-beta.97", "@types/base32-encoding": "^1.0.2", "base32-encoding": "^1.0.0", "bech32": "^2.0.0", @@ -39626,11 +38928,11 @@ }, "packages/mesh-hydra": { "name": "@meshsdk/hydra", - "version": "1.9.0-beta.96", + "version": "1.9.0-beta.97", "dependencies": { - "@meshsdk/common": "1.9.0-beta.96", - "@meshsdk/core": "1.9.0-beta.96", - "@meshsdk/core-cst": "1.9.0-beta.96", + "@meshsdk/common": "1.9.0-beta.97", + "@meshsdk/core": "1.9.0-beta.97", + "@meshsdk/core-cst": "1.9.0-beta.97", "axios": "^1.7.2" }, "devDependencies": { @@ -39643,11 +38945,11 @@ }, "packages/mesh-provider": { "name": "@meshsdk/provider", - "version": "1.9.0-beta.96", + "version": "1.9.0-beta.97", "license": "Apache-2.0", "dependencies": { - "@meshsdk/common": "1.9.0-beta.96", - "@meshsdk/core-cst": "1.9.0-beta.96", + "@meshsdk/common": "1.9.0-beta.97", + "@meshsdk/core-cst": "1.9.0-beta.97", "@utxorpc/sdk": "^0.6.7", "@utxorpc/spec": "^0.16.0", "axios": "^1.7.2", @@ -39664,19 +38966,18 @@ }, "packages/mesh-react": { "name": "@meshsdk/react", - "version": "1.9.0-beta.96", + "version": "1.9.0-beta.97", "license": "Apache-2.0", "dependencies": { - "@cardananium/cardano-peer-connect": "^1.2.19", - "@meshsdk/common": "1.9.0-beta.96", - "@meshsdk/transaction": "1.9.0-beta.96", - "@meshsdk/wallet": "1.9.0-beta.96", - "@meshsdk/web3-sdk": "0.0.50", + "@meshsdk/common": "1.9.0-beta.97", + "@meshsdk/transaction": "1.9.0-beta.97", + "@meshsdk/wallet": "1.9.0-beta.97", "@radix-ui/react-dialog": "^1.1.2", "@radix-ui/react-dropdown-menu": "^2.1.2", "@radix-ui/react-icons": "^1.3.2", "@radix-ui/react-label": "^2.1.1", "@radix-ui/react-tooltip": "^1.1.4", + "@utxos/sdk": "0.1.0", "class-variance-authority": "^0.7.1", "tailwind-merge": "^2.6.0", "tailwindcss-animate": "^1.0.7" @@ -39709,10 +39010,10 @@ }, "packages/mesh-svelte": { "name": "@meshsdk/svelte", - "version": "1.9.0-beta.96", + "version": "1.9.0-beta.97", "license": "Apache-2.0", "dependencies": { - "@meshsdk/core": "1.9.0-beta.96", + "@meshsdk/core": "1.9.0-beta.97", "bits-ui": "1.0.0-next.65" }, "devDependencies": { @@ -39738,14 +39039,14 @@ }, "packages/mesh-transaction": { "name": "@meshsdk/transaction", - "version": "1.9.0-beta.96", + "version": "1.9.0-beta.97", "license": "Apache-2.0", "dependencies": { "@cardano-sdk/core": "^0.46.11", "@cardano-sdk/input-selection": "^0.14.27", "@cardano-sdk/util": "^0.17.1", - "@meshsdk/common": "1.9.0-beta.96", - "@meshsdk/core-cst": "1.9.0-beta.96", + "@meshsdk/common": "1.9.0-beta.97", + "@meshsdk/core-cst": "1.9.0-beta.97", "json-bigint": "^1.0.0", "libsodium-wrappers-sumo": "0.7.15" }, @@ -39911,12 +39212,12 @@ }, "packages/mesh-wallet": { "name": "@meshsdk/wallet", - "version": "1.9.0-beta.96", + "version": "1.9.0-beta.97", "license": "Apache-2.0", "dependencies": { - "@meshsdk/common": "1.9.0-beta.96", - "@meshsdk/core-cst": "1.9.0-beta.96", - "@meshsdk/transaction": "1.9.0-beta.96", + "@meshsdk/common": "1.9.0-beta.97", + "@meshsdk/core-cst": "1.9.0-beta.97", + "@meshsdk/transaction": "1.9.0-beta.97", "@simplewebauthn/browser": "^13.0.0", "libsodium-wrappers-sumo": "0.7.15" }, @@ -39930,7 +39231,7 @@ }, "packages/midnight-contracts-wizard": { "name": "@meshsdk/midnight-contracts-wizard", - "version": "1.9.0-beta.96", + "version": "1.9.0-beta.97", "license": "Apache-2.0", "dependencies": { "chalk": "^4.1.2", @@ -39978,7 +39279,7 @@ }, "packages/midnight-setup": { "name": "@meshsdk/midnight-setup", - "version": "1.9.0-beta.96", + "version": "1.9.0-beta.97", "license": "Apache-2.0", "dependencies": { "@midnight-ntwrk/compact-runtime": "^0.8.1", @@ -40005,7 +39306,7 @@ }, "scripts/mesh-cli": { "name": "meshjs", - "version": "1.9.0-beta.96", + "version": "1.9.0-beta.97", "license": "Apache-2.0", "dependencies": { "@sidan-lab/cardano-bar": "^0.0.7", diff --git a/packages/mesh-react/package.json b/packages/mesh-react/package.json index 2bc79b9d1..c4e441a4b 100644 --- a/packages/mesh-react/package.json +++ b/packages/mesh-react/package.json @@ -29,11 +29,10 @@ "type-check": "tsc --noEmit" }, "dependencies": { - "@cardananium/cardano-peer-connect": "^1.2.19", "@meshsdk/common": "1.9.0-beta.97", "@meshsdk/transaction": "1.9.0-beta.97", "@meshsdk/wallet": "1.9.0-beta.97", - "@meshsdk/web3-sdk": "0.0.50", + "@utxos/sdk": "0.1.0", "@radix-ui/react-dialog": "^1.1.2", "@radix-ui/react-dropdown-menu": "^2.1.2", "@radix-ui/react-icons": "^1.3.2", diff --git a/packages/mesh-react/src/cardano-wallet-dropdown/index.tsx b/packages/mesh-react/src/cardano-wallet-dropdown/index.tsx index bd3186447..247441892 100644 --- a/packages/mesh-react/src/cardano-wallet-dropdown/index.tsx +++ b/packages/mesh-react/src/cardano-wallet-dropdown/index.tsx @@ -9,22 +9,14 @@ interface ButtonProps { label?: string; onConnected?: Function; isDark?: boolean; - extensions?: number[]; - cardanoPeerConnect?: { - dAppInfo: { - name: string; - url: string; - }; - announce: string[]; - }; + persist?: boolean; } export const CardanoWallet = ({ label = "Connect Wallet", onConnected = undefined, isDark = false, - extensions = [], - cardanoPeerConnect = undefined, + persist = false, }: ButtonProps) => { const [isDarkMode, setIsDarkMode] = useState(false); const [hideMenuList, setHideMenuList] = useState(true); @@ -42,43 +34,6 @@ export const CardanoWallet = ({ setIsDarkMode(isDark); }, [isDark]); - // useEffect(() => { - // if ( - // typeof window !== "undefined" && - // typeof navigator !== "undefined" && - // cardanoPeerConnect - // ) { - // import("@fabianbormann/cardano-peer-connect").then((module) => { - // const dAppPeerConnect = new module.DAppPeerConnect({ - // dAppInfo: { - // name: cardanoPeerConnect.dAppInfo.name, - // url: cardanoPeerConnect.dAppInfo.url, - // }, - // announce: cardanoPeerConnect.announce, - // onApiInject: (name: string, address: string) => {}, - // onApiEject: (name: string, address: string) => {}, - // onConnect: (address: string, walletInfo?: IWalletInfo) => { - // console.log("Connected to wallet", address, walletInfo); - // }, - // onDisconnect: () => { - // console.log("Disconnected from wallet"); - // }, - // verifyConnection: ( - // walletInfo: IWalletInfo, - // callback: (granted: boolean, autoconnect: boolean) => void, - // ) => { - // console.log("verifyConnection", walletInfo); - // callback(true, true); - // }, - // useWalletDiscovery: true, - // }); - - // console.log(dAppPeerConnect); - // console.log(dAppPeerConnect.getAddress()); - // }); - // } - // }, []); - return (
setHideMenuList(false)} @@ -109,7 +64,7 @@ export const CardanoWallet = ({ icon={wallet.icon} label={wallet.name} action={() => { - connect(wallet.id, extensions); + connect(wallet.id, persist); setHideMenuList(!hideMenuList); }} active={name === wallet.id} diff --git a/packages/mesh-react/src/cardano-wallet/data.ts b/packages/mesh-react/src/cardano-wallet/data.ts index 9e5ee1547..2d9ff8bb8 100644 --- a/packages/mesh-react/src/cardano-wallet/data.ts +++ b/packages/mesh-react/src/cardano-wallet/data.ts @@ -2,10 +2,6 @@ export const screens = { main: { title: "Connect Wallet", }, - p2p: { - title: "Peer Connect (CIP45)", - subtitle: "Use wallet that supports CIP-45, scan this QR code to connect.", - }, burner: { title: "Burner Wallet", subtitle: diff --git a/packages/mesh-react/src/cardano-wallet/index.tsx b/packages/mesh-react/src/cardano-wallet/index.tsx index 2a71b873b..8d3a48bca 100644 --- a/packages/mesh-react/src/cardano-wallet/index.tsx +++ b/packages/mesh-react/src/cardano-wallet/index.tsx @@ -1,7 +1,7 @@ import { useEffect, useState } from "react"; import { IFetcher, ISubmitter } from "@meshsdk/common"; -import { EnableWeb3WalletOptions } from "@meshsdk/web3-sdk"; +import { EnableWeb3WalletOptions } from "@utxos/sdk"; import { Button } from "../common/button"; import { @@ -19,7 +19,6 @@ import ConnectedButton from "./connected-button"; import { screens } from "./data"; import ScreenBurner from "./screen-burner"; import ScreenMain from "./screen-main"; -import ScreenP2P from "./screen-p2p"; import ScreenWebauthn from "./screen-webauthn"; interface ButtonProps { @@ -28,13 +27,6 @@ interface ButtonProps { isDark?: boolean; persist?: boolean; injectFn?: () => Promise; - cardanoPeerConnect?: { - dAppInfo: { - name: string; - url: string; - }; - announce: string[]; - }; burnerWallet?: { networkId: 0 | 1; provider: IFetcher & ISubmitter; @@ -54,7 +46,6 @@ export const CardanoWallet = ({ isDark = false, persist = false, injectFn = undefined, - cardanoPeerConnect = undefined, burnerWallet = undefined, webauthn = undefined, showDownload = true, @@ -101,19 +92,12 @@ export const CardanoWallet = ({ setOpen={setOpen} setScreen={setScreen} persist={persist} - cardanoPeerConnect={cardanoPeerConnect != undefined} burnerWallet={burnerWallet != undefined} webauthn={webauthn != undefined} showDownload={showDownload} web3Services={web3Services} /> )} - {screen == "p2p" && ( - - )} {screen == "burner" && burnerWallet && ( )} - {cardanoPeerConnect && ( - { - setScreen("p2p"); - }} - /> - )} {burnerWallet && ( (null); - const qrCodeField = useRef(null); - const [address, setAddress] = useState(""); - const [copied, setCopied] = useState(false); - const { connect } = useWallet(); - - useEffect(() => { - if (cardanoPeerConnect) { - if (dAppConnect.current === null) { - dAppConnect.current = new DAppPeerConnect({ - dAppInfo: { - name: cardanoPeerConnect.dAppInfo.name, - url: cardanoPeerConnect.dAppInfo.url, - }, - announce: cardanoPeerConnect.announce, - onApiInject: async (name: string, address: string) => { - // console.log(5, "onApiInject", name, address); - await connect(name); - setOpen(false); - }, - onApiEject: (name: string, address: string) => { - // console.log(5, "onApiEject", name, address); - }, - onConnect: (address: string, walletInfo?: IWalletInfo) => { - // console.log(5, "Connected to wallet", address, walletInfo); - }, - onDisconnect: () => { - // console.log(5, "Disconnected from wallet"); - }, - verifyConnection: ( - walletInfo: IWalletInfo, - callback: (granted: boolean, autoconnect: boolean) => void, - ) => { - // console.log(5, "verifyConnection", walletInfo); - callback(true, true); - }, - useWalletDiscovery: true, - }); - - if (dAppConnect.current) { - const address = dAppConnect.current.getAddress(); - setAddress(address); - if (qrCodeField.current !== null) { - dAppConnect.current.generateQRCode(qrCodeField.current); - } - } - } - } - }, []); - - return ( -
-
- -
- ); -} diff --git a/packages/mesh-react/src/cardano-wallet/web3-services.tsx b/packages/mesh-react/src/cardano-wallet/web3-services.tsx index 02d2115fa..31d686856 100644 --- a/packages/mesh-react/src/cardano-wallet/web3-services.tsx +++ b/packages/mesh-react/src/cardano-wallet/web3-services.tsx @@ -4,7 +4,7 @@ import { EnableWeb3WalletOptions, UserControlledWalletDirectTo, Web3Wallet, -} from "@meshsdk/web3-sdk"; +} from "@utxos/sdk"; import IconDiscord from "../common/icons/icon-discord"; import IconGoogle from "../common/icons/icon-google"; @@ -43,7 +43,7 @@ export default function Web3Services({ "utxos", persist ? { - walletAddress: await wallet.getChangeAddress(), + walletAddress: await wallet.cardano.getChangeAddress(), user: user, } : undefined, diff --git a/packages/mesh-react/src/common/icons/icon-monitor-smartphone.tsx b/packages/mesh-react/src/common/icons/icon-monitor-smartphone.tsx deleted file mode 100644 index 5efbaf011..000000000 --- a/packages/mesh-react/src/common/icons/icon-monitor-smartphone.tsx +++ /dev/null @@ -1,26 +0,0 @@ -export default function IconMonitorSmartphone() { - return ( - - - - - - - ); -} diff --git a/packages/mesh-react/src/contexts/WalletContext.ts b/packages/mesh-react/src/contexts/WalletContext.ts index d91fd5dbb..4f752017a 100644 --- a/packages/mesh-react/src/contexts/WalletContext.ts +++ b/packages/mesh-react/src/contexts/WalletContext.ts @@ -2,11 +2,7 @@ import { createContext, useCallback, useEffect, useState } from "react"; import { IWallet } from "@meshsdk/common"; import { BrowserWallet } from "@meshsdk/wallet"; -import { - EnableWeb3WalletOptions, - UserSocialData, - Web3Wallet, -} from "@meshsdk/web3-sdk"; +import { EnableWeb3WalletOptions, UserSocialData } from "@utxos/sdk"; interface WalletContext { hasConnectedWallet: boolean; @@ -145,27 +141,16 @@ export const useWalletStore = () => { // if persist useEffect(() => { - const persist = localStorage.getItem(localstoragePersist); - if (persistSession && persist) { - const persist = JSON.parse( - localStorage.getItem(localstoragePersist) || "", - ); - - if (persist.walletName == "utxos" && web3Services) { - Web3Wallet.initWallet({ - networkId: web3Services.networkId, - address: persist.walletAddress, - fetcher: web3Services.fetcher, - submitter: web3Services.submitter, - projectId: web3Services.projectId, - appUrl: web3Services.appUrl, - }).then((wallet) => { - setConnectedWalletInstance(wallet.cardano!); - setConnectedWalletName(persist.walletName); - setState(WalletState.CONNECTED); - }); - - setWeb3UserData(persist.user); + const persistData = localStorage.getItem(localstoragePersist); + if (persistSession && persistData) { + const persist = JSON.parse(persistData); + + // Web3Wallet session restoration requires re-authentication + // as the API now requires keyHashes instead of just an address + if (persist.walletName == "utxos") { + // Clear the persist data since we can't restore web3 wallet sessions + // Users will need to re-authenticate with web3 services + localStorage.removeItem(localstoragePersist); } else { connectWallet(persist.walletName); } diff --git a/packages/mesh-react/tsup.config.ts b/packages/mesh-react/tsup.config.ts index 7c98373b3..c2afaca56 100644 --- a/packages/mesh-react/tsup.config.ts +++ b/packages/mesh-react/tsup.config.ts @@ -4,6 +4,5 @@ export default defineConfig({ entry: ["src/index.ts"], format: ["esm", "cjs"], dts: true, - noExternal: ["@cardananium/cardano-peer-connect"], skipNodeModulesBundle: true, }); From ca5b8f61128b213b225878c455180cabaa4be9aa Mon Sep 17 00:00:00 2001 From: Jingles Date: Sun, 25 Jan 2026 00:13:04 +0800 Subject: [PATCH 2/7] Fixed two critical bugs: submit logic flow and JSON.parse safety. Type check and build pass. --- .../mesh-react/src/contexts/WalletContext.ts | 29 +++++++++++++------ .../mesh-react/src/hooks/useWalletSubmit.ts | 19 ++++++------ 2 files changed, 30 insertions(+), 18 deletions(-) diff --git a/packages/mesh-react/src/contexts/WalletContext.ts b/packages/mesh-react/src/contexts/WalletContext.ts index 4f752017a..24d2e95f5 100644 --- a/packages/mesh-react/src/contexts/WalletContext.ts +++ b/packages/mesh-react/src/contexts/WalletContext.ts @@ -143,19 +143,30 @@ export const useWalletStore = () => { useEffect(() => { const persistData = localStorage.getItem(localstoragePersist); if (persistSession && persistData) { - const persist = JSON.parse(persistData); + try { + const persist = JSON.parse(persistData); + + // Validate required field exists + if (!persist || typeof persist.walletName !== "string") { + throw new Error("Invalid persist data structure"); + } - // Web3Wallet session restoration requires re-authentication - // as the API now requires keyHashes instead of just an address - if (persist.walletName == "utxos") { - // Clear the persist data since we can't restore web3 wallet sessions - // Users will need to re-authenticate with web3 services + // Web3Wallet session restoration requires re-authentication + // as the API now requires keyHashes instead of just an address + if (persist.walletName === "utxos") { + // Clear the persist data since we can't restore web3 wallet sessions + // Users will need to re-authenticate with web3 services + localStorage.removeItem(localstoragePersist); + } else { + connectWallet(persist.walletName); + } + } catch (error) { + // Clear corrupted persist data to prevent repeated failures + console.error("Failed to restore wallet session:", error); localStorage.removeItem(localstoragePersist); - } else { - connectWallet(persist.walletName); } } - }, [persistSession]); + }, [persistSession, connectWallet]); return { hasConnectedWallet: INITIAL_STATE.walletName !== connectedWalletName, diff --git a/packages/mesh-react/src/hooks/useWalletSubmit.ts b/packages/mesh-react/src/hooks/useWalletSubmit.ts index d4b347643..7c9bf1681 100644 --- a/packages/mesh-react/src/hooks/useWalletSubmit.ts +++ b/packages/mesh-react/src/hooks/useWalletSubmit.ts @@ -13,22 +13,23 @@ export const useWalletSubmit = () => { const submitTx = useCallback(async (signedTx: string) => { setSubmitting(true); setError(undefined); + setResult(undefined); try { - if (hasConnectedWallet) { - const txHash = await connectedWalletInstance.submitTx(signedTx); - setResult(txHash); + if (!hasConnectedWallet) { + throw new Error( + "Please make sure to connect a wallet before calling useWalletSubmit", + ); } - throw new Error( - "Please make sure to connect a wallet before calling useWalletSubmit", - ); + const txHash = await connectedWalletInstance.submitTx(signedTx); + setResult(txHash); } catch (error) { setError(error); + } finally { + setSubmitting(false); } - - setSubmitting(false); - }, []); + }, [hasConnectedWallet, connectedWalletInstance]); return { error, From b4234ac1963350db3e0a175833fdf7379a45bbb8 Mon Sep 17 00:00:00 2001 From: Jingles Date: Sun, 25 Jan 2026 00:48:30 +0800 Subject: [PATCH 3/7] typescript fixes --- .../cardano/connect-browser-wallet/index.tsx | 14 ---------- .../react/ui-components/connect-wallet.tsx | 17 ----------- .../src/cardano-wallet-dropdown/index.tsx | 4 +-- .../src/cardano-wallet-dropdown/menu-item.tsx | 8 +++++- .../wallet-balance.tsx | 14 ++++++++-- .../mesh-react/src/cardano-wallet/data.ts | 5 +++- .../mesh-react/src/cardano-wallet/index.tsx | 28 +++++++++---------- .../src/cardano-wallet/screen-burner.tsx | 2 +- .../src/cardano-wallet/screen-main.tsx | 6 ++-- .../src/cardano-wallet/screen-webauthn.tsx | 2 +- .../src/cardano-wallet/web3-services.tsx | 2 +- packages/mesh-react/src/contexts/index.tsx | 4 +-- 12 files changed, 46 insertions(+), 60 deletions(-) diff --git a/apps/playground/src/components/cardano/connect-browser-wallet/index.tsx b/apps/playground/src/components/cardano/connect-browser-wallet/index.tsx index 2ea713a79..6496b07b0 100644 --- a/apps/playground/src/components/cardano/connect-browser-wallet/index.tsx +++ b/apps/playground/src/components/cardano/connect-browser-wallet/index.tsx @@ -18,20 +18,6 @@ export function CommonCardanoWallet() { return ( -

Decentralized WebRTC Wallet Communication (CIP 45)

-

- CIP-45 is a - communication method between pps and wallets based on WebTorrent - trackers and WebRTC. Using WebTorrent trackers for the peer discovery to - remove the need of this central component. -

-

Burner wallet

Burner wallets are wallets that are created on the fly on the user's @@ -179,15 +171,6 @@ function Right() { example += ` label={"Connect a Wallet"}\n`; example += ` persist={true}\n`; example += ` onConnected={()=>{console.log('on connected')}}\n`; - example += ` cardanoPeerConnect={{\n`; - example += ` dAppInfo: {\n`; - example += ` name: "Mesh SDK",\n`; - example += ` url: "https://meshjs.dev/",\n`; - example += ` },\n`; - example += ` announce: [\n`; - example += ` "wss://dev.btt.cf-identity-wallet.metadata.dev.cf-deployments.org",\n`; - example += ` ],\n`; - example += ` }}\n`; example += ` burnerWallet={{\n`; example += ` networkId: 0,\n`; example += ` provider: provider,\n`; diff --git a/packages/mesh-react/src/cardano-wallet-dropdown/index.tsx b/packages/mesh-react/src/cardano-wallet-dropdown/index.tsx index 247441892..127bc46ea 100644 --- a/packages/mesh-react/src/cardano-wallet-dropdown/index.tsx +++ b/packages/mesh-react/src/cardano-wallet-dropdown/index.tsx @@ -7,7 +7,7 @@ import { WalletBalance } from "./wallet-balance"; interface ButtonProps { label?: string; - onConnected?: Function; + onConnected?: () => void; isDark?: boolean; persist?: boolean; } @@ -28,7 +28,7 @@ export const CardanoWallet = ({ if (connected && onConnected) { onConnected(); } - }, [connected]); + }, [connected, onConnected]); useEffect(() => { setIsDarkMode(isDark); diff --git a/packages/mesh-react/src/cardano-wallet-dropdown/menu-item.tsx b/packages/mesh-react/src/cardano-wallet-dropdown/menu-item.tsx index d45b11037..ed47d84ad 100644 --- a/packages/mesh-react/src/cardano-wallet-dropdown/menu-item.tsx +++ b/packages/mesh-react/src/cardano-wallet-dropdown/menu-item.tsx @@ -14,7 +14,13 @@ export function MenuItem({ className="mesh-flex mesh-cursor-pointer mesh-items-center mesh-px-4 mesh-py-2 mesh-opacity-80 hover:mesh-opacity-100 mesh-h-16" onClick={action} > - {icon && } + {icon && ( + {`${label} + )} {label .split(" ") diff --git a/packages/mesh-react/src/cardano-wallet-dropdown/wallet-balance.tsx b/packages/mesh-react/src/cardano-wallet-dropdown/wallet-balance.tsx index 0fa6287df..fb2197085 100644 --- a/packages/mesh-react/src/cardano-wallet-dropdown/wallet-balance.tsx +++ b/packages/mesh-react/src/cardano-wallet-dropdown/wallet-balance.tsx @@ -18,15 +18,23 @@ export const WalletBalance = ({ return connected && lovelace && wallet?.icon ? ( <> - ₳{" "} - {parseInt((parseInt(lovelace, 10) / 1_000_000).toString(), 10)}. + {`${wallet.name} + ₳ {parseInt((parseInt(lovelace, 10) / 1_000_000).toString(), 10)}. {lovelace.substring(lovelace.length - 6)} ) : connected && wallet?.icon ? ( <> - + {`${wallet.name} ) : connecting ? ( <>Connecting... diff --git a/packages/mesh-react/src/cardano-wallet/data.ts b/packages/mesh-react/src/cardano-wallet/data.ts index 2d9ff8bb8..9e725d091 100644 --- a/packages/mesh-react/src/cardano-wallet/data.ts +++ b/packages/mesh-react/src/cardano-wallet/data.ts @@ -1,6 +1,7 @@ export const screens = { main: { title: "Connect Wallet", + subtitle: undefined as string | undefined, }, burner: { title: "Burner Wallet", @@ -12,4 +13,6 @@ export const screens = { subtitle: "Derive self-custody wallet on Chrome, Safari, or Firefox browsers on Android, iOS, macOS, and Windows devices, or using password managers.", }, -}; +} as const; + +export type ScreenKey = keyof typeof screens; diff --git a/packages/mesh-react/src/cardano-wallet/index.tsx b/packages/mesh-react/src/cardano-wallet/index.tsx index 8d3a48bca..10da7910e 100644 --- a/packages/mesh-react/src/cardano-wallet/index.tsx +++ b/packages/mesh-react/src/cardano-wallet/index.tsx @@ -16,14 +16,14 @@ import { import IconChevronRight from "../common/icons/icon-chevron-right"; import { useWallet } from "../hooks"; import ConnectedButton from "./connected-button"; -import { screens } from "./data"; +import { screens, ScreenKey } from "./data"; import ScreenBurner from "./screen-burner"; import ScreenMain from "./screen-main"; import ScreenWebauthn from "./screen-webauthn"; interface ButtonProps { label?: string; - onConnected?: Function; + onConnected?: () => void; isDark?: boolean; persist?: boolean; injectFn?: () => Promise; @@ -52,13 +52,13 @@ export const CardanoWallet = ({ web3Services = undefined, }: ButtonProps) => { const [open, setOpen] = useState(false); - const [screen, setScreen] = useState("main"); + const [screen, setScreen] = useState("main"); const { wallet, connected, setPersist, setWeb3Services } = useWallet(); useEffect(() => { setPersist(persist); if (web3Services) setWeb3Services(web3Services); - }, []); + }, [persist, web3Services, setPersist, setWeb3Services]); useEffect(() => { if (connected) { @@ -123,28 +123,28 @@ function Header({ screen, setScreen, }: { - screen: string; - setScreen: Function; + screen: ScreenKey; + setScreen: (screen: ScreenKey) => void; }) { + const screenData = screens[screen]; return ( - {screen != "main" ? ( - ) : ( )} - - {/* @ts-ignore */} - {screens[screen].title} - + {screenData.title} - {/* @ts-ignore */} - {screens[screen].subtitle && screens[screen].subtitle} + {screenData.subtitle && screenData.subtitle} ); diff --git a/packages/mesh-react/src/cardano-wallet/screen-burner.tsx b/packages/mesh-react/src/cardano-wallet/screen-burner.tsx index 910ebcf83..cfb910e9e 100644 --- a/packages/mesh-react/src/cardano-wallet/screen-burner.tsx +++ b/packages/mesh-react/src/cardano-wallet/screen-burner.tsx @@ -16,7 +16,7 @@ export default function ScreenBurner({ }: { networkId: 0 | 1; provider: IFetcher & ISubmitter; - setOpen: Function; + setOpen: (open: boolean) => void; }) { const [loading, setLoading] = useState(false); const [hasKeyInStorage, setHasKeyInStorage] = useState(false); diff --git a/packages/mesh-react/src/cardano-wallet/screen-main.tsx b/packages/mesh-react/src/cardano-wallet/screen-main.tsx index f2893898d..80bcebe4c 100644 --- a/packages/mesh-react/src/cardano-wallet/screen-main.tsx +++ b/packages/mesh-react/src/cardano-wallet/screen-main.tsx @@ -5,7 +5,7 @@ import IconDownload from "../common/icons/icon-download"; import IconFingerprint from "../common/icons/icon-fingerprint"; import { TooltipProvider } from "../common/tooltip"; import { useWallet, useWalletList } from "../hooks"; -import { screens } from "./data"; +import { screens, ScreenKey } from "./data"; import WalletIcon from "./wallet-icon"; import Web3Services from "./web3-services"; @@ -20,8 +20,8 @@ export default function ScreenMain({ web3Services, }: { injectFn?: () => Promise; - setOpen: Function; - setScreen: Function; + setOpen: (open: boolean) => void; + setScreen: (screen: ScreenKey) => void; persist: boolean; burnerWallet: boolean; webauthn: boolean; diff --git a/packages/mesh-react/src/cardano-wallet/screen-webauthn.tsx b/packages/mesh-react/src/cardano-wallet/screen-webauthn.tsx index 26a049936..15320c6ad 100644 --- a/packages/mesh-react/src/cardano-wallet/screen-webauthn.tsx +++ b/packages/mesh-react/src/cardano-wallet/screen-webauthn.tsx @@ -18,7 +18,7 @@ export default function ScreenWebauthn({ url: string; networkId: 0 | 1; provider: IFetcher & ISubmitter; - setOpen: Function; + setOpen: (open: boolean) => void; }) { const [loading, setLoading] = useState(false); const [userName, setUserName] = useState(""); diff --git a/packages/mesh-react/src/cardano-wallet/web3-services.tsx b/packages/mesh-react/src/cardano-wallet/web3-services.tsx index 31d686856..1f2bd4b7e 100644 --- a/packages/mesh-react/src/cardano-wallet/web3-services.tsx +++ b/packages/mesh-react/src/cardano-wallet/web3-services.tsx @@ -18,7 +18,7 @@ export default function Web3Services({ persist, }: { options: EnableWeb3WalletOptions; - setOpen: Function; + setOpen: (open: boolean) => void; persist: boolean; }) { const { setWallet, setWeb3UserData } = useWallet(); diff --git a/packages/mesh-react/src/contexts/index.tsx b/packages/mesh-react/src/contexts/index.tsx index c8229d753..6061e273a 100644 --- a/packages/mesh-react/src/contexts/index.tsx +++ b/packages/mesh-react/src/contexts/index.tsx @@ -6,11 +6,11 @@ interface Props { children: React.ReactNode; } -export const MeshProvider: React.FC = (props: any) => { +export const MeshProvider: React.FC = ({ children }) => { const store = useWalletStore(); return ( - <>{props.children} + <>{children} ); }; From de7904e2f11c7120632a4d249ef56ed5f98c0db5 Mon Sep 17 00:00:00 2001 From: Jingles Date: Sun, 25 Jan 2026 00:48:57 +0800 Subject: [PATCH 4/7] 1.9.0-beta.98 --- packages/bitcoin/package.json | 6 +++--- packages/mesh-common/package.json | 2 +- packages/mesh-contract/package.json | 6 +++--- packages/mesh-core-csl/package.json | 6 +++--- packages/mesh-core-cst/package.json | 4 ++-- packages/mesh-core/package.json | 12 ++++++------ packages/mesh-hydra/package.json | 8 ++++---- packages/mesh-provider/package.json | 6 +++--- packages/mesh-react/package.json | 8 ++++---- packages/mesh-svelte/package.json | 4 ++-- packages/mesh-transaction/package.json | 6 +++--- packages/mesh-wallet/package.json | 8 ++++---- packages/midnight-contracts-wizard/package.json | 2 +- packages/midnight-setup/package.json | 2 +- scripts/mesh-cli/package.json | 2 +- 15 files changed, 41 insertions(+), 41 deletions(-) diff --git a/packages/bitcoin/package.json b/packages/bitcoin/package.json index ce7d40f9b..39ada731c 100644 --- a/packages/bitcoin/package.json +++ b/packages/bitcoin/package.json @@ -1,6 +1,6 @@ { "name": "@meshsdk/bitcoin", - "version": "1.9.0-beta.97", + "version": "1.9.0-beta.98", "description": "Mesh Bitcoin package", "main": "./dist/index.cjs", "browser": "./dist/index.js", @@ -25,8 +25,8 @@ }, "dependencies": { "@bitcoin-js/tiny-secp256k1-asmjs": "^2.2.3", - "@meshsdk/common": "1.9.0-beta.97", - "@meshsdk/provider": "1.9.0-beta.97", + "@meshsdk/common": "1.9.0-beta.98", + "@meshsdk/provider": "1.9.0-beta.98", "axios": "^1.7.9", "bip174": "^3.0.0", "bip32": "^4.0.0", diff --git a/packages/mesh-common/package.json b/packages/mesh-common/package.json index 45fdf5ccb..93838648a 100644 --- a/packages/mesh-common/package.json +++ b/packages/mesh-common/package.json @@ -1,6 +1,6 @@ { "name": "@meshsdk/common", - "version": "1.9.0-beta.97", + "version": "1.9.0-beta.98", "description": "Contains constants, types and interfaces used across the SDK and different serialization libraries", "main": "./dist/index.cjs", "browser": "./dist/index.js", diff --git a/packages/mesh-contract/package.json b/packages/mesh-contract/package.json index e4b2a41ef..ac307b5d4 100644 --- a/packages/mesh-contract/package.json +++ b/packages/mesh-contract/package.json @@ -1,6 +1,6 @@ { "name": "@meshsdk/contract", - "version": "1.9.0-beta.97", + "version": "1.9.0-beta.98", "description": "List of open-source smart contracts, complete with documentation, live demos, and end-to-end source code. https://meshjs.dev/smart-contracts", "main": "./dist/index.cjs", "browser": "./dist/index.js", @@ -34,8 +34,8 @@ "typescript": "^5.3.3" }, "dependencies": { - "@meshsdk/common": "1.9.0-beta.97", - "@meshsdk/core": "1.9.0-beta.97", + "@meshsdk/common": "1.9.0-beta.98", + "@meshsdk/core": "1.9.0-beta.98", "libsodium-wrappers-sumo": "0.7.15" }, "prettier": "@meshsdk/configs/prettier", diff --git a/packages/mesh-core-csl/package.json b/packages/mesh-core-csl/package.json index c8c6afa58..1c2aabefe 100644 --- a/packages/mesh-core-csl/package.json +++ b/packages/mesh-core-csl/package.json @@ -1,6 +1,6 @@ { "name": "@meshsdk/core-csl", - "version": "1.9.0-beta.97", + "version": "1.9.0-beta.98", "description": "Types and utilities functions between Mesh and cardano-serialization-lib", "main": "./dist/index.cjs", "module": "./dist/index.js", @@ -31,7 +31,7 @@ }, "devDependencies": { "@meshsdk/configs": "*", - "@meshsdk/provider": "1.9.0-beta.97", + "@meshsdk/provider": "1.9.0-beta.98", "@types/json-bigint": "^1.0.4", "eslint": "^8.57.0", "ts-jest": "^29.1.4", @@ -39,7 +39,7 @@ "typescript": "^5.3.3" }, "dependencies": { - "@meshsdk/common": "1.9.0-beta.97", + "@meshsdk/common": "1.9.0-beta.98", "@sidan-lab/whisky-js-browser": "^1.0.11", "@sidan-lab/whisky-js-nodejs": "^1.0.11", "@types/base32-encoding": "^1.0.2", diff --git a/packages/mesh-core-cst/package.json b/packages/mesh-core-cst/package.json index 0783f4fc5..5c93395c3 100644 --- a/packages/mesh-core-cst/package.json +++ b/packages/mesh-core-cst/package.json @@ -1,6 +1,6 @@ { "name": "@meshsdk/core-cst", - "version": "1.9.0-beta.97", + "version": "1.9.0-beta.98", "description": "Types and utilities functions between Mesh and cardano-js-sdk", "main": "./dist/index.cjs", "browser": "./dist/index.js", @@ -44,7 +44,7 @@ "@harmoniclabs/pair": "^1.0.0", "@harmoniclabs/plutus-data": "1.2.6", "@harmoniclabs/uplc": "1.4.1", - "@meshsdk/common": "1.9.0-beta.97", + "@meshsdk/common": "1.9.0-beta.98", "@types/base32-encoding": "^1.0.2", "base32-encoding": "^1.0.0", "bech32": "^2.0.0", diff --git a/packages/mesh-core/package.json b/packages/mesh-core/package.json index 94dfee90c..0d2c949f4 100644 --- a/packages/mesh-core/package.json +++ b/packages/mesh-core/package.json @@ -1,6 +1,6 @@ { "name": "@meshsdk/core", - "version": "1.9.0-beta.97", + "version": "1.9.0-beta.98", "description": "Mesh SDK Core - https://meshjs.dev/", "main": "./dist/index.cjs", "browser": "./dist/index.js", @@ -33,11 +33,11 @@ "typescript": "^5.3.3" }, "dependencies": { - "@meshsdk/common": "1.9.0-beta.97", - "@meshsdk/core-cst": "1.9.0-beta.97", - "@meshsdk/provider": "1.9.0-beta.97", - "@meshsdk/transaction": "1.9.0-beta.97", - "@meshsdk/wallet": "1.9.0-beta.97", + "@meshsdk/common": "1.9.0-beta.98", + "@meshsdk/core-cst": "1.9.0-beta.98", + "@meshsdk/provider": "1.9.0-beta.98", + "@meshsdk/transaction": "1.9.0-beta.98", + "@meshsdk/wallet": "1.9.0-beta.98", "libsodium-wrappers-sumo": "0.7.15" }, "prettier": "@meshsdk/configs/prettier", diff --git a/packages/mesh-hydra/package.json b/packages/mesh-hydra/package.json index acda8dd7d..a7386c38d 100644 --- a/packages/mesh-hydra/package.json +++ b/packages/mesh-hydra/package.json @@ -1,6 +1,6 @@ { "name": "@meshsdk/hydra", - "version": "1.9.0-beta.97", + "version": "1.9.0-beta.98", "description": "Mesh Hydra package", "main": "./dist/index.cjs", "browser": "./dist/index.js", @@ -27,9 +27,9 @@ "test": "jest" }, "dependencies": { - "@meshsdk/common": "1.9.0-beta.97", - "@meshsdk/core": "1.9.0-beta.97", - "@meshsdk/core-cst": "1.9.0-beta.97", + "@meshsdk/common": "1.9.0-beta.98", + "@meshsdk/core": "1.9.0-beta.98", + "@meshsdk/core-cst": "1.9.0-beta.98", "axios": "^1.7.2" }, "devDependencies": { diff --git a/packages/mesh-provider/package.json b/packages/mesh-provider/package.json index d3d1cd01b..7555623da 100644 --- a/packages/mesh-provider/package.json +++ b/packages/mesh-provider/package.json @@ -1,6 +1,6 @@ { "name": "@meshsdk/provider", - "version": "1.9.0-beta.97", + "version": "1.9.0-beta.98", "description": "Blockchain data providers - https://meshjs.dev/providers", "main": "./dist/index.cjs", "browser": "./dist/index.js", @@ -35,8 +35,8 @@ "typescript": "^5.3.3" }, "dependencies": { - "@meshsdk/common": "1.9.0-beta.97", - "@meshsdk/core-cst": "1.9.0-beta.97", + "@meshsdk/common": "1.9.0-beta.98", + "@meshsdk/core-cst": "1.9.0-beta.98", "@utxorpc/sdk": "^0.6.7", "@utxorpc/spec": "^0.16.0", "axios": "^1.7.2", diff --git a/packages/mesh-react/package.json b/packages/mesh-react/package.json index c4e441a4b..b709750dd 100644 --- a/packages/mesh-react/package.json +++ b/packages/mesh-react/package.json @@ -1,6 +1,6 @@ { "name": "@meshsdk/react", - "version": "1.9.0-beta.97", + "version": "1.9.0-beta.98", "description": "React component library - https://meshjs.dev/react", "main": "./dist/index.cjs", "browser": "./dist/index.js", @@ -29,9 +29,9 @@ "type-check": "tsc --noEmit" }, "dependencies": { - "@meshsdk/common": "1.9.0-beta.97", - "@meshsdk/transaction": "1.9.0-beta.97", - "@meshsdk/wallet": "1.9.0-beta.97", + "@meshsdk/common": "1.9.0-beta.98", + "@meshsdk/transaction": "1.9.0-beta.98", + "@meshsdk/wallet": "1.9.0-beta.98", "@utxos/sdk": "0.1.0", "@radix-ui/react-dialog": "^1.1.2", "@radix-ui/react-dropdown-menu": "^2.1.2", diff --git a/packages/mesh-svelte/package.json b/packages/mesh-svelte/package.json index dcb38e961..755c3344f 100644 --- a/packages/mesh-svelte/package.json +++ b/packages/mesh-svelte/package.json @@ -1,6 +1,6 @@ { "name": "@meshsdk/svelte", - "version": "1.9.0-beta.97", + "version": "1.9.0-beta.98", "description": "Svelte component library - https://meshjs.dev/svelte", "type": "module", "exports": { @@ -26,7 +26,7 @@ "dev": "vite dev" }, "dependencies": { - "@meshsdk/core": "1.9.0-beta.97", + "@meshsdk/core": "1.9.0-beta.98", "bits-ui": "1.0.0-next.65" }, "devDependencies": { diff --git a/packages/mesh-transaction/package.json b/packages/mesh-transaction/package.json index 4e30f122d..e29b74991 100644 --- a/packages/mesh-transaction/package.json +++ b/packages/mesh-transaction/package.json @@ -1,6 +1,6 @@ { "name": "@meshsdk/transaction", - "version": "1.9.0-beta.97", + "version": "1.9.0-beta.98", "description": "Transactions - https://meshjs.dev/apis/transaction", "main": "./dist/index.cjs", "browser": "./dist/index.js", @@ -35,8 +35,8 @@ "typescript": "^5.3.3" }, "dependencies": { - "@meshsdk/common": "1.9.0-beta.97", - "@meshsdk/core-cst": "1.9.0-beta.97", + "@meshsdk/common": "1.9.0-beta.98", + "@meshsdk/core-cst": "1.9.0-beta.98", "@cardano-sdk/core": "^0.46.11", "@cardano-sdk/util": "^0.17.1", "@cardano-sdk/input-selection": "^0.14.27", diff --git a/packages/mesh-wallet/package.json b/packages/mesh-wallet/package.json index baa0929b9..704b688ca 100644 --- a/packages/mesh-wallet/package.json +++ b/packages/mesh-wallet/package.json @@ -1,6 +1,6 @@ { "name": "@meshsdk/wallet", - "version": "1.9.0-beta.97", + "version": "1.9.0-beta.98", "description": "Wallets - https://meshjs.dev/apis/wallets", "main": "./dist/index.cjs", "browser": "./dist/index.js", @@ -35,9 +35,9 @@ "typescript": "^5.3.3" }, "dependencies": { - "@meshsdk/common": "1.9.0-beta.97", - "@meshsdk/core-cst": "1.9.0-beta.97", - "@meshsdk/transaction": "1.9.0-beta.97", + "@meshsdk/common": "1.9.0-beta.98", + "@meshsdk/core-cst": "1.9.0-beta.98", + "@meshsdk/transaction": "1.9.0-beta.98", "@simplewebauthn/browser": "^13.0.0", "libsodium-wrappers-sumo": "0.7.15" }, diff --git a/packages/midnight-contracts-wizard/package.json b/packages/midnight-contracts-wizard/package.json index ea3992c93..ee14e1718 100644 --- a/packages/midnight-contracts-wizard/package.json +++ b/packages/midnight-contracts-wizard/package.json @@ -1,6 +1,6 @@ { "name": "@meshsdk/midnight-contracts-wizard", - "version": "1.9.0-beta.97", + "version": "1.9.0-beta.98", "description": "Create a new Midnight contracts project with selected smart contracts", "main": "dist/index.js", "bin": { diff --git a/packages/midnight-setup/package.json b/packages/midnight-setup/package.json index 4b9521326..45f68a53f 100644 --- a/packages/midnight-setup/package.json +++ b/packages/midnight-setup/package.json @@ -1,6 +1,6 @@ { "name": "@meshsdk/midnight-setup", - "version": "1.9.0-beta.97", + "version": "1.9.0-beta.98", "description": "Midnight Network integration SDK for MeshSDK - https://meshjs.dev/midnight", "main": "./dist/index.cjs", "browser": "./dist/index.js", diff --git a/scripts/mesh-cli/package.json b/scripts/mesh-cli/package.json index 20297ff34..5369df54b 100644 --- a/scripts/mesh-cli/package.json +++ b/scripts/mesh-cli/package.json @@ -3,7 +3,7 @@ "description": "A quick and easy way to bootstrap your Web3 app using Mesh.", "homepage": "https://meshjs.dev", "author": "MeshJS", - "version": "1.9.0-beta.97", + "version": "1.9.0-beta.98", "license": "Apache-2.0", "type": "module", "main": "./dist/index.cjs", From 10e51805437ef7450a481bba972bed5ca5dc8b1f Mon Sep 17 00:00:00 2001 From: Jingles Date: Sun, 25 Jan 2026 23:53:08 +0800 Subject: [PATCH 5/7] delete files from these packages, move to other repos --- packages/bitcoin/.env.example | 2 - packages/bitcoin/README.md | 11 - packages/bitcoin/jest.config.ts | 20 - packages/bitcoin/package.json | 47 - packages/bitcoin/src/core.ts | 12 - packages/bitcoin/src/index.ts | 7 - packages/bitcoin/src/interfaces/index.ts | 2 - packages/bitcoin/src/interfaces/provider.ts | 23 - packages/bitcoin/src/interfaces/wallet.ts | 6 - packages/bitcoin/src/multi-chain/index.ts | 4 - .../src/multi-chain/maestro-unified.ts | 282 ----- packages/bitcoin/src/providers/blockstream.ts | 208 ---- packages/bitcoin/src/providers/common.ts | 21 - packages/bitcoin/src/providers/index.ts | 2 - packages/bitcoin/src/providers/maestro.ts | 346 ------ packages/bitcoin/src/types/address-info.ts | 8 - packages/bitcoin/src/types/address.ts | 6 - packages/bitcoin/src/types/chain-stats.ts | 7 - packages/bitcoin/src/types/index.ts | 10 - packages/bitcoin/src/types/maestro.ts | 29 - packages/bitcoin/src/types/mempool-stats.ts | 7 - packages/bitcoin/src/types/script-info.ts | 8 - .../bitcoin/src/types/transactions-info.ts | 34 - .../bitcoin/src/types/transactions-status.ts | 6 - packages/bitcoin/src/types/utxo.ts | 11 - packages/bitcoin/src/types/wallet.ts | 93 -- packages/bitcoin/src/utils/address.ts | 33 - packages/bitcoin/src/utils/index.ts | 1 - packages/bitcoin/src/wallets/browser/index.ts | 148 --- .../bitcoin/src/wallets/embedded/index.ts | 628 ---------- packages/bitcoin/src/wallets/index.ts | 2 - .../blockstream-integration.test.ts | 174 --- .../providers/blockstream/blockstream.test.ts | 70 -- .../maestro/maestro-integration.test.ts | 228 ---- .../test/providers/maestro/maestro.test.ts | 77 -- .../test/wallets/embedded-core.test.ts | 216 ---- .../test/wallets/embedded-derivation.test.ts | 181 --- .../test/wallets/embedded-signing.test.ts | 225 ---- .../bitcoin/test/wallets/embedded.test.ts | 104 -- packages/bitcoin/tsconfig.json | 11 - packages/bitcoin/tsup.config.ts | 29 - packages/mesh-hydra/README.md | 11 - packages/mesh-hydra/jest.config.ts | 20 - packages/mesh-hydra/package.json | 43 - packages/mesh-hydra/src/hydra-alice.test.ts | 101 -- packages/mesh-hydra/src/hydra-bob.test.ts | 122 -- packages/mesh-hydra/src/hydra-connection.ts | 110 -- packages/mesh-hydra/src/hydra-instance.ts | 210 ---- packages/mesh-hydra/src/hydra-provider.ts | 850 ------------- packages/mesh-hydra/src/index.ts | 2 - packages/mesh-hydra/src/types/client-input.ts | 36 - .../mesh-hydra/src/types/client-message.ts | 4 - .../src/types/events/command-failed.ts | 28 - .../mesh-hydra/src/types/events/commit.ts | 51 - .../mesh-hydra/src/types/events/decommit.ts | 54 - .../mesh-hydra/src/types/events/deposit.ts | 37 - .../mesh-hydra/src/types/events/greetings.ts | 19 - .../mesh-hydra/src/types/events/handler.ts | 30 - .../mesh-hydra/src/types/events/head-cycle.ts | 46 - .../mesh-hydra/src/types/events/network.ts | 48 - .../src/types/events/post-tx-failed.ts | 134 --- .../mesh-hydra/src/types/events/post-tx.ts | 81 -- .../mesh-hydra/src/types/events/snapshot.ts | 98 -- .../src/types/events/transaction.ts | 23 - packages/mesh-hydra/src/types/hydra/hydra.ts | 8 - .../mesh-hydra/src/types/hydra/hydraAssets.ts | 51 - .../src/types/hydra/hydraReferenceScript.ts | 53 - .../mesh-hydra/src/types/hydra/hydraStatus.ts | 29 - .../src/types/hydra/hydraTransaction.ts | 6 - .../mesh-hydra/src/types/hydra/hydraUTxOs.ts | 81 -- packages/mesh-hydra/src/types/index.ts | 8 - .../mesh-hydra/src/types/server-output.ts | 70 -- .../mesh-hydra/src/utils/hydraScriptRef.ts | 44 - packages/mesh-hydra/src/utils/index.ts | 2 - .../mesh-hydra/src/utils/parse-http-error.ts | 21 - packages/mesh-hydra/src/utils/resolveDatum.ts | 25 - packages/mesh-hydra/tsconfig.json | 9 - packages/mesh-hydra/tsup.config.ts | 21 - packages/mesh-provider/.env.example | 5 - packages/mesh-provider/README.md | 5 - packages/mesh-provider/jest.config.ts | 20 - packages/mesh-provider/package.json | 58 - packages/mesh-provider/src/begin.ts | 129 -- packages/mesh-provider/src/blockfrost.ts | 919 -------------- .../src/common/utxos-to-assets.ts | 28 - packages/mesh-provider/src/index.ts | 9 - packages/mesh-provider/src/koios.ts | 680 ----------- packages/mesh-provider/src/kupo.ts | 148 --- packages/mesh-provider/src/maestro.ts | 667 ----------- packages/mesh-provider/src/offline/index.ts | 1 - .../src/offline/offline-fetcher.ts | 1056 ----------------- packages/mesh-provider/src/ogmios.ts | 204 ---- .../mesh-provider/src/types/blockfrost.ts | 36 - packages/mesh-provider/src/types/index.ts | 4 - packages/mesh-provider/src/types/koios.ts | 46 - packages/mesh-provider/src/types/maestro.ts | 56 - packages/mesh-provider/src/types/ogmios.ts | 16 - .../src/utils/get-additional-utxos.ts | 176 --- packages/mesh-provider/src/utils/index.ts | 3 - .../src/utils/parse-asset-unit.ts | 10 - .../src/utils/parse-http-error.ts | 19 - packages/mesh-provider/src/utxo-rpc.ts | 592 --------- packages/mesh-provider/src/yaci.ts | 684 ----------- .../test/blockfrost/evaluator.test.ts | 134 --- .../test/koios/evaluator.test.ts | 134 --- .../test/maestro/evaluator.test.ts | 134 --- .../test/offline/fetcher.test.ts | 1006 ---------------- .../test/ogmios/evaluator.test.ts | 134 --- .../mesh-provider/test/yaci/evaluator.test.ts | 21 - packages/mesh-provider/tsconfig.json | 5 - packages/mesh-react/.eslintrc.js | 3 - packages/mesh-react/README.md | 5 - packages/mesh-react/jest.config.ts | 20 - packages/mesh-react/package.json | 75 -- packages/mesh-react/postcss.config.js | 9 - .../src/cardano-wallet-dropdown/checkmark.tsx | 10 - .../cardano-wallet-dropdown/chevron-down.tsx | 17 - .../src/cardano-wallet-dropdown/index.tsx | 103 -- .../src/cardano-wallet-dropdown/menu-item.tsx | 34 - .../wallet-balance.tsx | 46 - .../src/cardano-wallet/connected-button.tsx | 51 - .../mesh-react/src/cardano-wallet/data.ts | 18 - .../mesh-react/src/cardano-wallet/index.tsx | 175 --- .../src/cardano-wallet/screen-burner.tsx | 100 -- .../src/cardano-wallet/screen-main.tsx | 91 -- .../src/cardano-wallet/screen-webauthn.tsx | 100 -- .../src/cardano-wallet/wallet-icon.tsx | 41 - .../src/cardano-wallet/web3-services.tsx | 77 -- .../mesh-react/src/common/button-dropdown.tsx | 28 - packages/mesh-react/src/common/button.tsx | 59 - packages/mesh-react/src/common/cn.ts | 7 - packages/mesh-react/src/common/dialog.tsx | 120 -- .../mesh-react/src/common/dropdown-menu.tsx | 209 ---- .../src/common/icons/icon-book-dashed.tsx | 34 - .../src/common/icons/icon-chevron-right.tsx | 24 - .../src/common/icons/icon-discord.tsx | 17 - .../src/common/icons/icon-download.tsx | 25 - .../src/common/icons/icon-fingerprint.tsx | 32 - .../src/common/icons/icon-google.tsx | 30 - .../mesh-react/src/common/icons/icon-plus.tsx | 24 - .../src/common/icons/icon-twitter.tsx | 15 - packages/mesh-react/src/common/input.tsx | 25 - packages/mesh-react/src/common/label.tsx | 25 - packages/mesh-react/src/common/tooltip.tsx | 28 - .../mesh-react/src/contexts/WalletContext.ts | 203 ---- packages/mesh-react/src/contexts/index.tsx | 16 - packages/mesh-react/src/hooks/index.ts | 8 - packages/mesh-react/src/hooks/useAddress.ts | 21 - packages/mesh-react/src/hooks/useAssets.ts | 19 - packages/mesh-react/src/hooks/useLovelace.ts | 26 - packages/mesh-react/src/hooks/useNetwork.ts | 19 - .../mesh-react/src/hooks/useRewardAddress.ts | 21 - packages/mesh-react/src/hooks/useWallet.ts | 45 - .../mesh-react/src/hooks/useWalletList.ts | 20 - .../mesh-react/src/hooks/useWalletSubmit.ts | 40 - packages/mesh-react/src/index.ts | 5 - packages/mesh-react/src/mesh-badge/index.tsx | 17 - .../mesh-react/src/mesh-badge/mesh-logo.tsx | 10 - .../mesh-react/src/stake-button/index.tsx | 151 --- packages/mesh-react/src/styles.css | 3 - packages/mesh-react/tailwind.config.ts | 42 - packages/mesh-react/tsconfig.json | 8 - packages/mesh-react/tsup.config.ts | 8 - packages/mesh-svelte/README.md | 5 - packages/mesh-svelte/jest.config.ts | 20 - packages/mesh-svelte/package.json | 67 -- packages/mesh-svelte/postcss.config.js | 9 - packages/mesh-svelte/src/app.d.ts | 13 - packages/mesh-svelte/src/app.html | 12 - packages/mesh-svelte/src/index.ts | 1 - .../cardano-wallet-dropdown-button.svelte | 132 --- .../component/index.ts | 3 - .../src/lib/cardano-wallet-dropdown/index.ts | 1 - .../component/cardano-wallet.svelte | 116 -- .../src/lib/cardano-wallet/component/index.ts | 3 - .../src/lib/cardano-wallet/index.ts | 1 - packages/mesh-svelte/src/lib/common/index.ts | 1 - packages/mesh-svelte/src/lib/common/types.ts | 6 - packages/mesh-svelte/src/lib/index.ts | 3 - .../lib/state/browser-wallet-state.svelte.ts | 55 - packages/mesh-svelte/src/lib/state/index.ts | 1 - packages/mesh-svelte/src/styles.css | 3 - packages/mesh-svelte/svelte.config.js | 18 - packages/mesh-svelte/tailwind.config.ts | 11 - packages/mesh-svelte/tsconfig.json | 14 - packages/mesh-svelte/vite.config.ts | 28 - packages/midnight-contracts-wizard/.npmignore | 27 - packages/midnight-contracts-wizard/LICENSE | 201 ---- packages/midnight-contracts-wizard/README.md | 67 -- .../contracts/identity/CryptoLibrary.compact | 244 ---- .../identity/IdentityLibrary.compact | 25 - .../contracts/identity/registry.compact | 31 - .../lending-borrowing.compact | 491 -------- .../contracts/oracle/oracle.compact | 278 ----- .../contracts/staking/staking.compact | 332 ------ .../tokenization/TokenizationLibrary.compact | 23 - .../tokenization/tokenization.compact | 362 ------ .../midnight-contracts-wizard/jest.config.ts | 13 - .../midnight-contracts-wizard/package.json | 68 -- .../midnight-contracts-wizard/src/index.ts | 562 --------- .../midnight-contracts-wizard/src/install.ts | 13 - .../midnight-contracts-wizard/tsconfig.json | 21 - packages/midnight-setup/.npmignore | 28 - packages/midnight-setup/LICENSE | 201 ---- packages/midnight-setup/README.md | 255 ---- packages/midnight-setup/package.json | 68 -- packages/midnight-setup/src/common-types.ts | 72 -- packages/midnight-setup/src/index.ts | 251 ---- packages/midnight-setup/src/utils.ts | 23 - packages/midnight-setup/tsconfig.json | 21 - packages/midnight-setup/tsup.config.ts | 25 - 211 files changed, 19648 deletions(-) delete mode 100644 packages/bitcoin/.env.example delete mode 100644 packages/bitcoin/README.md delete mode 100644 packages/bitcoin/jest.config.ts delete mode 100644 packages/bitcoin/package.json delete mode 100644 packages/bitcoin/src/core.ts delete mode 100644 packages/bitcoin/src/index.ts delete mode 100644 packages/bitcoin/src/interfaces/index.ts delete mode 100644 packages/bitcoin/src/interfaces/provider.ts delete mode 100644 packages/bitcoin/src/interfaces/wallet.ts delete mode 100644 packages/bitcoin/src/multi-chain/index.ts delete mode 100644 packages/bitcoin/src/multi-chain/maestro-unified.ts delete mode 100644 packages/bitcoin/src/providers/blockstream.ts delete mode 100644 packages/bitcoin/src/providers/common.ts delete mode 100644 packages/bitcoin/src/providers/index.ts delete mode 100644 packages/bitcoin/src/providers/maestro.ts delete mode 100644 packages/bitcoin/src/types/address-info.ts delete mode 100644 packages/bitcoin/src/types/address.ts delete mode 100644 packages/bitcoin/src/types/chain-stats.ts delete mode 100644 packages/bitcoin/src/types/index.ts delete mode 100644 packages/bitcoin/src/types/maestro.ts delete mode 100644 packages/bitcoin/src/types/mempool-stats.ts delete mode 100644 packages/bitcoin/src/types/script-info.ts delete mode 100644 packages/bitcoin/src/types/transactions-info.ts delete mode 100644 packages/bitcoin/src/types/transactions-status.ts delete mode 100644 packages/bitcoin/src/types/utxo.ts delete mode 100644 packages/bitcoin/src/types/wallet.ts delete mode 100644 packages/bitcoin/src/utils/address.ts delete mode 100644 packages/bitcoin/src/utils/index.ts delete mode 100644 packages/bitcoin/src/wallets/browser/index.ts delete mode 100644 packages/bitcoin/src/wallets/embedded/index.ts delete mode 100644 packages/bitcoin/src/wallets/index.ts delete mode 100644 packages/bitcoin/test/providers/blockstream/blockstream-integration.test.ts delete mode 100644 packages/bitcoin/test/providers/blockstream/blockstream.test.ts delete mode 100644 packages/bitcoin/test/providers/maestro/maestro-integration.test.ts delete mode 100644 packages/bitcoin/test/providers/maestro/maestro.test.ts delete mode 100644 packages/bitcoin/test/wallets/embedded-core.test.ts delete mode 100644 packages/bitcoin/test/wallets/embedded-derivation.test.ts delete mode 100644 packages/bitcoin/test/wallets/embedded-signing.test.ts delete mode 100644 packages/bitcoin/test/wallets/embedded.test.ts delete mode 100644 packages/bitcoin/tsconfig.json delete mode 100644 packages/bitcoin/tsup.config.ts delete mode 100644 packages/mesh-hydra/README.md delete mode 100644 packages/mesh-hydra/jest.config.ts delete mode 100644 packages/mesh-hydra/package.json delete mode 100644 packages/mesh-hydra/src/hydra-alice.test.ts delete mode 100644 packages/mesh-hydra/src/hydra-bob.test.ts delete mode 100644 packages/mesh-hydra/src/hydra-connection.ts delete mode 100644 packages/mesh-hydra/src/hydra-instance.ts delete mode 100644 packages/mesh-hydra/src/hydra-provider.ts delete mode 100644 packages/mesh-hydra/src/index.ts delete mode 100644 packages/mesh-hydra/src/types/client-input.ts delete mode 100644 packages/mesh-hydra/src/types/client-message.ts delete mode 100644 packages/mesh-hydra/src/types/events/command-failed.ts delete mode 100644 packages/mesh-hydra/src/types/events/commit.ts delete mode 100644 packages/mesh-hydra/src/types/events/decommit.ts delete mode 100644 packages/mesh-hydra/src/types/events/deposit.ts delete mode 100644 packages/mesh-hydra/src/types/events/greetings.ts delete mode 100644 packages/mesh-hydra/src/types/events/handler.ts delete mode 100644 packages/mesh-hydra/src/types/events/head-cycle.ts delete mode 100644 packages/mesh-hydra/src/types/events/network.ts delete mode 100644 packages/mesh-hydra/src/types/events/post-tx-failed.ts delete mode 100644 packages/mesh-hydra/src/types/events/post-tx.ts delete mode 100644 packages/mesh-hydra/src/types/events/snapshot.ts delete mode 100644 packages/mesh-hydra/src/types/events/transaction.ts delete mode 100644 packages/mesh-hydra/src/types/hydra/hydra.ts delete mode 100644 packages/mesh-hydra/src/types/hydra/hydraAssets.ts delete mode 100644 packages/mesh-hydra/src/types/hydra/hydraReferenceScript.ts delete mode 100644 packages/mesh-hydra/src/types/hydra/hydraStatus.ts delete mode 100644 packages/mesh-hydra/src/types/hydra/hydraTransaction.ts delete mode 100644 packages/mesh-hydra/src/types/hydra/hydraUTxOs.ts delete mode 100644 packages/mesh-hydra/src/types/index.ts delete mode 100644 packages/mesh-hydra/src/types/server-output.ts delete mode 100644 packages/mesh-hydra/src/utils/hydraScriptRef.ts delete mode 100644 packages/mesh-hydra/src/utils/index.ts delete mode 100644 packages/mesh-hydra/src/utils/parse-http-error.ts delete mode 100644 packages/mesh-hydra/src/utils/resolveDatum.ts delete mode 100644 packages/mesh-hydra/tsconfig.json delete mode 100644 packages/mesh-hydra/tsup.config.ts delete mode 100644 packages/mesh-provider/.env.example delete mode 100644 packages/mesh-provider/README.md delete mode 100644 packages/mesh-provider/jest.config.ts delete mode 100644 packages/mesh-provider/package.json delete mode 100644 packages/mesh-provider/src/begin.ts delete mode 100644 packages/mesh-provider/src/blockfrost.ts delete mode 100644 packages/mesh-provider/src/common/utxos-to-assets.ts delete mode 100644 packages/mesh-provider/src/index.ts delete mode 100644 packages/mesh-provider/src/koios.ts delete mode 100644 packages/mesh-provider/src/kupo.ts delete mode 100644 packages/mesh-provider/src/maestro.ts delete mode 100644 packages/mesh-provider/src/offline/index.ts delete mode 100644 packages/mesh-provider/src/offline/offline-fetcher.ts delete mode 100644 packages/mesh-provider/src/ogmios.ts delete mode 100644 packages/mesh-provider/src/types/blockfrost.ts delete mode 100644 packages/mesh-provider/src/types/index.ts delete mode 100644 packages/mesh-provider/src/types/koios.ts delete mode 100644 packages/mesh-provider/src/types/maestro.ts delete mode 100644 packages/mesh-provider/src/types/ogmios.ts delete mode 100644 packages/mesh-provider/src/utils/get-additional-utxos.ts delete mode 100644 packages/mesh-provider/src/utils/index.ts delete mode 100644 packages/mesh-provider/src/utils/parse-asset-unit.ts delete mode 100644 packages/mesh-provider/src/utils/parse-http-error.ts delete mode 100644 packages/mesh-provider/src/utxo-rpc.ts delete mode 100644 packages/mesh-provider/src/yaci.ts delete mode 100644 packages/mesh-provider/test/blockfrost/evaluator.test.ts delete mode 100644 packages/mesh-provider/test/koios/evaluator.test.ts delete mode 100644 packages/mesh-provider/test/maestro/evaluator.test.ts delete mode 100644 packages/mesh-provider/test/offline/fetcher.test.ts delete mode 100644 packages/mesh-provider/test/ogmios/evaluator.test.ts delete mode 100644 packages/mesh-provider/test/yaci/evaluator.test.ts delete mode 100644 packages/mesh-provider/tsconfig.json delete mode 100644 packages/mesh-react/.eslintrc.js delete mode 100644 packages/mesh-react/README.md delete mode 100644 packages/mesh-react/jest.config.ts delete mode 100644 packages/mesh-react/package.json delete mode 100644 packages/mesh-react/postcss.config.js delete mode 100644 packages/mesh-react/src/cardano-wallet-dropdown/checkmark.tsx delete mode 100644 packages/mesh-react/src/cardano-wallet-dropdown/chevron-down.tsx delete mode 100644 packages/mesh-react/src/cardano-wallet-dropdown/index.tsx delete mode 100644 packages/mesh-react/src/cardano-wallet-dropdown/menu-item.tsx delete mode 100644 packages/mesh-react/src/cardano-wallet-dropdown/wallet-balance.tsx delete mode 100644 packages/mesh-react/src/cardano-wallet/connected-button.tsx delete mode 100644 packages/mesh-react/src/cardano-wallet/data.ts delete mode 100644 packages/mesh-react/src/cardano-wallet/index.tsx delete mode 100644 packages/mesh-react/src/cardano-wallet/screen-burner.tsx delete mode 100644 packages/mesh-react/src/cardano-wallet/screen-main.tsx delete mode 100644 packages/mesh-react/src/cardano-wallet/screen-webauthn.tsx delete mode 100644 packages/mesh-react/src/cardano-wallet/wallet-icon.tsx delete mode 100644 packages/mesh-react/src/cardano-wallet/web3-services.tsx delete mode 100644 packages/mesh-react/src/common/button-dropdown.tsx delete mode 100644 packages/mesh-react/src/common/button.tsx delete mode 100644 packages/mesh-react/src/common/cn.ts delete mode 100644 packages/mesh-react/src/common/dialog.tsx delete mode 100644 packages/mesh-react/src/common/dropdown-menu.tsx delete mode 100644 packages/mesh-react/src/common/icons/icon-book-dashed.tsx delete mode 100644 packages/mesh-react/src/common/icons/icon-chevron-right.tsx delete mode 100644 packages/mesh-react/src/common/icons/icon-discord.tsx delete mode 100644 packages/mesh-react/src/common/icons/icon-download.tsx delete mode 100644 packages/mesh-react/src/common/icons/icon-fingerprint.tsx delete mode 100644 packages/mesh-react/src/common/icons/icon-google.tsx delete mode 100644 packages/mesh-react/src/common/icons/icon-plus.tsx delete mode 100644 packages/mesh-react/src/common/icons/icon-twitter.tsx delete mode 100644 packages/mesh-react/src/common/input.tsx delete mode 100644 packages/mesh-react/src/common/label.tsx delete mode 100644 packages/mesh-react/src/common/tooltip.tsx delete mode 100644 packages/mesh-react/src/contexts/WalletContext.ts delete mode 100644 packages/mesh-react/src/contexts/index.tsx delete mode 100644 packages/mesh-react/src/hooks/index.ts delete mode 100644 packages/mesh-react/src/hooks/useAddress.ts delete mode 100644 packages/mesh-react/src/hooks/useAssets.ts delete mode 100644 packages/mesh-react/src/hooks/useLovelace.ts delete mode 100644 packages/mesh-react/src/hooks/useNetwork.ts delete mode 100644 packages/mesh-react/src/hooks/useRewardAddress.ts delete mode 100644 packages/mesh-react/src/hooks/useWallet.ts delete mode 100644 packages/mesh-react/src/hooks/useWalletList.ts delete mode 100644 packages/mesh-react/src/hooks/useWalletSubmit.ts delete mode 100644 packages/mesh-react/src/index.ts delete mode 100644 packages/mesh-react/src/mesh-badge/index.tsx delete mode 100644 packages/mesh-react/src/mesh-badge/mesh-logo.tsx delete mode 100644 packages/mesh-react/src/stake-button/index.tsx delete mode 100644 packages/mesh-react/src/styles.css delete mode 100644 packages/mesh-react/tailwind.config.ts delete mode 100644 packages/mesh-react/tsconfig.json delete mode 100644 packages/mesh-react/tsup.config.ts delete mode 100644 packages/mesh-svelte/README.md delete mode 100644 packages/mesh-svelte/jest.config.ts delete mode 100644 packages/mesh-svelte/package.json delete mode 100644 packages/mesh-svelte/postcss.config.js delete mode 100644 packages/mesh-svelte/src/app.d.ts delete mode 100644 packages/mesh-svelte/src/app.html delete mode 100644 packages/mesh-svelte/src/index.ts delete mode 100644 packages/mesh-svelte/src/lib/cardano-wallet-dropdown/component/cardano-wallet-dropdown-button.svelte delete mode 100644 packages/mesh-svelte/src/lib/cardano-wallet-dropdown/component/index.ts delete mode 100644 packages/mesh-svelte/src/lib/cardano-wallet-dropdown/index.ts delete mode 100644 packages/mesh-svelte/src/lib/cardano-wallet/component/cardano-wallet.svelte delete mode 100644 packages/mesh-svelte/src/lib/cardano-wallet/component/index.ts delete mode 100644 packages/mesh-svelte/src/lib/cardano-wallet/index.ts delete mode 100644 packages/mesh-svelte/src/lib/common/index.ts delete mode 100644 packages/mesh-svelte/src/lib/common/types.ts delete mode 100644 packages/mesh-svelte/src/lib/index.ts delete mode 100644 packages/mesh-svelte/src/lib/state/browser-wallet-state.svelte.ts delete mode 100644 packages/mesh-svelte/src/lib/state/index.ts delete mode 100644 packages/mesh-svelte/src/styles.css delete mode 100644 packages/mesh-svelte/svelte.config.js delete mode 100644 packages/mesh-svelte/tailwind.config.ts delete mode 100644 packages/mesh-svelte/tsconfig.json delete mode 100644 packages/mesh-svelte/vite.config.ts delete mode 100644 packages/midnight-contracts-wizard/.npmignore delete mode 100644 packages/midnight-contracts-wizard/LICENSE delete mode 100644 packages/midnight-contracts-wizard/README.md delete mode 100644 packages/midnight-contracts-wizard/contracts/identity/CryptoLibrary.compact delete mode 100644 packages/midnight-contracts-wizard/contracts/identity/IdentityLibrary.compact delete mode 100644 packages/midnight-contracts-wizard/contracts/identity/registry.compact delete mode 100644 packages/midnight-contracts-wizard/contracts/lending-borrowing/lending-borrowing.compact delete mode 100644 packages/midnight-contracts-wizard/contracts/oracle/oracle.compact delete mode 100644 packages/midnight-contracts-wizard/contracts/staking/staking.compact delete mode 100644 packages/midnight-contracts-wizard/contracts/tokenization/TokenizationLibrary.compact delete mode 100644 packages/midnight-contracts-wizard/contracts/tokenization/tokenization.compact delete mode 100644 packages/midnight-contracts-wizard/jest.config.ts delete mode 100644 packages/midnight-contracts-wizard/package.json delete mode 100644 packages/midnight-contracts-wizard/src/index.ts delete mode 100644 packages/midnight-contracts-wizard/src/install.ts delete mode 100644 packages/midnight-contracts-wizard/tsconfig.json delete mode 100644 packages/midnight-setup/.npmignore delete mode 100644 packages/midnight-setup/LICENSE delete mode 100644 packages/midnight-setup/README.md delete mode 100644 packages/midnight-setup/package.json delete mode 100644 packages/midnight-setup/src/common-types.ts delete mode 100644 packages/midnight-setup/src/index.ts delete mode 100644 packages/midnight-setup/src/utils.ts delete mode 100644 packages/midnight-setup/tsconfig.json delete mode 100644 packages/midnight-setup/tsup.config.ts diff --git a/packages/bitcoin/.env.example b/packages/bitcoin/.env.example deleted file mode 100644 index 1d0f58d07..000000000 --- a/packages/bitcoin/.env.example +++ /dev/null @@ -1,2 +0,0 @@ -# API keys for running unit test cases -MAESTRO_BITCOIN_API_KEY_TESTNET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx diff --git a/packages/bitcoin/README.md b/packages/bitcoin/README.md deleted file mode 100644 index ada007565..000000000 --- a/packages/bitcoin/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# mesh-bitcoin - -Bitcoin integration for MeshJS, enabling developers to build applications that interact with the Bitcoin blockchain. - -[meshjs.dev](https://meshjs.dev/) - -## Get started - -```bash -npm install @meshsdk/bitcoin -``` diff --git a/packages/bitcoin/jest.config.ts b/packages/bitcoin/jest.config.ts deleted file mode 100644 index b2d4dafa8..000000000 --- a/packages/bitcoin/jest.config.ts +++ /dev/null @@ -1,20 +0,0 @@ -import type { Config } from "jest"; - -const jestConfig: Config = { - clearMocks: true, - maxWorkers: 1, - testEnvironment: "node", - testMatch: ["**/test/**/*.test.ts"], - setupFiles: ["dotenv/config"], - preset: "ts-jest", - moduleNameMapper: { - "^(\\.{1,2}/.*)\\.js$": "$1", - }, - transform: { - "^.+\\.[jt]s?$": "ts-jest", - }, - transformIgnorePatterns: ["/node_modules/(?!@meshsdk/.*)"], - passWithNoTests: true, -}; - -export default jestConfig; \ No newline at end of file diff --git a/packages/bitcoin/package.json b/packages/bitcoin/package.json deleted file mode 100644 index 39ada731c..000000000 --- a/packages/bitcoin/package.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "name": "@meshsdk/bitcoin", - "version": "1.9.0-beta.98", - "description": "Mesh Bitcoin package", - "main": "./dist/index.cjs", - "browser": "./dist/index.js", - "module": "./dist/index.js", - "types": "./dist/index.d.ts", - "type": "module", - "exports": { - ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.js", - "require": "./dist/index.cjs" - } - }, - "files": [ - "dist/**" - ], - "scripts": { - "build:mesh": "tsup src/index.ts --format esm,cjs --dts", - "clean": "rm -rf .turbo && rm -rf dist && rm -rf node_modules", - "dev": "tsup src/index.ts --format esm,cjs --watch --dts", - "test": "jest" - }, - "dependencies": { - "@bitcoin-js/tiny-secp256k1-asmjs": "^2.2.3", - "@meshsdk/common": "1.9.0-beta.98", - "@meshsdk/provider": "1.9.0-beta.98", - "axios": "^1.7.9", - "bip174": "^3.0.0", - "bip32": "^4.0.0", - "bip39": "^3.1.0", - "bitcoinjs-lib": "^6.1.7", - "ecpair": "^2.0.0" - }, - "devDependencies": { - "@meshsdk/configs": "*", - "@swc/core": "^1.10.7", - "dotenv": "^17.2.3", - "eslint": "^8.57.0", - "jest": "^30.2.0", - "ts-jest": "^29.4.5", - "tsup": "^8.0.2", - "typescript": "^5.3.3" - } -} diff --git a/packages/bitcoin/src/core.ts b/packages/bitcoin/src/core.ts deleted file mode 100644 index bf74b9912..000000000 --- a/packages/bitcoin/src/core.ts +++ /dev/null @@ -1,12 +0,0 @@ -import * as bitcoin from "bitcoinjs-lib"; -import * as ecc from "@bitcoin-js/tiny-secp256k1-asmjs"; -import * as bip39 from "bip39"; -import { BIP32Factory } from "bip32"; -import { ECPairFactory } from "ecpair"; - -const bip32 = BIP32Factory(ecc); -const ECPair = ECPairFactory(ecc); - -bitcoin.initEccLib(ecc); - -export { bitcoin, ECPair, bip32, bip39 }; diff --git a/packages/bitcoin/src/index.ts b/packages/bitcoin/src/index.ts deleted file mode 100644 index f635d74f8..000000000 --- a/packages/bitcoin/src/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -export * from "./core"; -export * from "./interfaces"; -export * from "./multi-chain"; -export * from "./providers"; -export * from "./utils"; -export * from "./types"; -export * from "./wallets"; diff --git a/packages/bitcoin/src/interfaces/index.ts b/packages/bitcoin/src/interfaces/index.ts deleted file mode 100644 index 1fbbad599..000000000 --- a/packages/bitcoin/src/interfaces/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./wallet"; -export * from "./provider"; diff --git a/packages/bitcoin/src/interfaces/provider.ts b/packages/bitcoin/src/interfaces/provider.ts deleted file mode 100644 index 2b5bc01a0..000000000 --- a/packages/bitcoin/src/interfaces/provider.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { UTxO } from "../types"; -import { AddressInfo } from "../types/address-info"; -import { ScriptInfo } from "../types/script-info"; -import { TransactionsInfo } from "../types/transactions-info"; -import { TransactionsStatus } from "../types/transactions-status"; - -export interface IBitcoinProvider { - fetchAddress(address: string): Promise; - fetchAddressTransactions( - address: string, - last_seen_txid?: string - ): Promise; - fetchAddressUTxOs(address: string): Promise; - fetchScript(hash: string): Promise; - fetchScriptTransactions( - hash: string, - last_seen_txid?: string - ): Promise; - fetchScriptUTxOs(hash: string): Promise; - fetchTransactionStatus(txid: string): Promise; - fetchFeeEstimates(blocks: number): Promise; - submitTx(tx: string): Promise; -} diff --git a/packages/bitcoin/src/interfaces/wallet.ts b/packages/bitcoin/src/interfaces/wallet.ts deleted file mode 100644 index f5297364a..000000000 --- a/packages/bitcoin/src/interfaces/wallet.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface IBitcoinWallet { - getChangeAddress(): Promise; - getNetworkId(): Promise<0 | 1>; - signTx(signedTx: string): Promise; - submitTx(tx: string): Promise; -} diff --git a/packages/bitcoin/src/multi-chain/index.ts b/packages/bitcoin/src/multi-chain/index.ts deleted file mode 100644 index 73e198d3d..000000000 --- a/packages/bitcoin/src/multi-chain/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export { - MaestroMultiChainProvider, - type MaestroMultiChainConfig -} from "./maestro-unified"; diff --git a/packages/bitcoin/src/multi-chain/maestro-unified.ts b/packages/bitcoin/src/multi-chain/maestro-unified.ts deleted file mode 100644 index 1770dbc54..000000000 --- a/packages/bitcoin/src/multi-chain/maestro-unified.ts +++ /dev/null @@ -1,282 +0,0 @@ -import { MaestroProvider as CardanoMaestroProvider, type MaestroSupportedNetworks as CardanoMaestroNetworks } from "@meshsdk/provider"; -import type { TransactionInfo as CardanoTransactionInfo, UTxO as CardanoUTxO, IFetcherOptions } from "@meshsdk/common"; -import { MaestroProvider as BitcoinMaestroProvider } from "../providers"; -import type { - MaestroSupportedNetworks as BitcoinMaestroNetworks, - TransactionsInfo as BitcoinTransactionInfo, - UTxO as BitcoinUTxO, - AddressInfo as BitcoinAddressInfo, - TransactionsStatus as BitcoinTransactionStatus -} from "../types"; - -export type MaestroMultiChainConfig = - | { chain: "cardano"; apiKey: string; network: CardanoMaestroNetworks; turboSubmit?: boolean } - | { chain: "bitcoin"; apiKey: string; network: BitcoinMaestroNetworks }; - -/** - * Unified Maestro provider that supports both Cardano and Bitcoin operations. - * Chain is specified in the constructor - * - * @example - * ```typescript - * // Cardano provider - * const cardanoMaestro = new MaestroProvider({ - * chain: "cardano", - * apiKey: "your-maestro-api-key", - * network: "Mainnet", - * turboSubmit: true - * }); - * - * // Bitcoin provider - * const bitcoinMaestro = new MaestroProvider({ - * chain: "bitcoin", - * apiKey: "your-maestro-api-key", - * network: "mainnet" - * }); - * - * // Clean unified API - * const cardanoTxs = await cardanoMaestro.getAddressTxs(address); - * const bitcoinUTxOs = await bitcoinMaestro.getAddressUTxOs(address); - * ``` - */ -export class MaestroMultiChainProvider { - private _cardanoProvider?: CardanoMaestroProvider; - private _bitcoinProvider?: BitcoinMaestroProvider; - private _chain: "cardano" | "bitcoin"; - - /** - * Create a Maestro provider for the specified chain. - * @param config - Chain-specific configuration object. - */ - constructor(config: MaestroMultiChainConfig) { - this._chain = config.chain; - - if (config.chain === "cardano") { - this._cardanoProvider = new CardanoMaestroProvider({ - network: config.network, - apiKey: config.apiKey, - turboSubmit: config.turboSubmit - }); - } else if (config.chain === "bitcoin") { - this._bitcoinProvider = new BitcoinMaestroProvider({ - network: config.network, - apiKey: config.apiKey - }); - } - } - - /** - * Get address transactions. - * @param address - The address to query. - * @param options - For Cardano: IFetcherOptions, for Bitcoin: lastSeenTxId string. - * @returns Promise of transaction array (type depends on chain). - */ - async getAddressTxs(address: string, options?: IFetcherOptions | string): Promise { - if (this._chain === "cardano") { - if (!this._cardanoProvider) { - throw new Error("Cardano provider not initialized."); - } - // For Cardano, options should be IFetcherOptions or undefined - const cardanoOptions = typeof options === 'string' ? undefined : options; - return this._cardanoProvider.fetchAddressTxs(address, cardanoOptions); - } - - if (this._chain === "bitcoin") { - if (!this._bitcoinProvider) { - throw new Error("Bitcoin provider not initialized."); - } - // For Bitcoin, options should be the lastSeenTxId string - const lastSeenTxId = typeof options === 'string' ? options : undefined; - return await this._bitcoinProvider.fetchAddressTransactions(address, lastSeenTxId); - } - - throw new Error(`Unsupported chain: ${this._chain}`); - } - - /** - * Get address UTXOs. - * @param address - The address to query. - * @returns Promise of UTXO array (type depends on chain). - */ - async getAddressUTxOs(address: string): Promise { - if (this._chain === "cardano") { - if (!this._cardanoProvider) { - throw new Error("Cardano provider not initialized."); - } - return this._cardanoProvider.fetchAddressUTxOs(address); - } - - if (this._chain === "bitcoin") { - if (!this._bitcoinProvider) { - throw new Error("Bitcoin provider not initialized."); - } - return await this._bitcoinProvider.fetchAddressUTxOs(address); - } - - throw new Error(`Unsupported chain: ${this._chain}`); - } - - /** - * Get address information including balance, transaction count, and UTXO statistics. - * Available for Bitcoin only - Cardano doesn't have this endpoint. - * @param address - The Bitcoin address to query. - * @returns Promise of address info with chain_stats and mempool_stats. - */ - async getAddressInfo(address: string): Promise { - if (this._chain !== "bitcoin") { - throw new Error("Address info is only supported for Bitcoin chain. Cardano doesn't have this endpoint."); - } - - if (!this._bitcoinProvider) { - throw new Error("Bitcoin provider not initialized."); - } - - return await this._bitcoinProvider.fetchAddress(address); - } - - /** - * Submit a transaction. - * @param txData - The transaction data (format depends on chain). - * @returns Promise of transaction ID. - */ - async submitTx(txData: string): Promise { - if (this._chain === "cardano") { - if (!this._cardanoProvider) { - throw new Error("Cardano provider not initialized."); - } - return this._cardanoProvider.submitTx(txData); - } - - if (this._chain === "bitcoin") { - if (!this._bitcoinProvider) { - throw new Error("Bitcoin provider not initialized."); - } - return this._bitcoinProvider.submitTx(txData); - } - - throw new Error(`Unsupported chain: ${this._chain}`); - } - - /** - * Get the configured chain. - * @returns The chain this provider is configured for. - */ - getChain(): "cardano" | "bitcoin" { - return this._chain; - } - - /** - * Get transaction details by hash. - * @param txHash - The transaction hash. - * @returns Promise of transaction details (type depends on chain). - */ - async getTxInfo(txHash: string): Promise { - if (this._chain === "cardano") { - if (!this._cardanoProvider) { - throw new Error("Cardano provider not initialized."); - } - return this._cardanoProvider.fetchTxInfo(txHash); - } - - if (this._chain === "bitcoin") { - if (!this._bitcoinProvider) { - throw new Error("Bitcoin provider not initialized."); - } - return await this._bitcoinProvider.fetchTxInfo(txHash); - } - - throw new Error(`Unsupported chain: ${this._chain}`); - } - - /** - * Get transaction status/confirmation details. - * @param txHash - The transaction hash. - * @returns Promise of transaction status (type depends on chain). - */ - async getTxStatus(txHash: string): Promise<{ confirmed: boolean; details: CardanoTransactionInfo } | BitcoinTransactionStatus> { - if (this._chain === "cardano") { - // Cardano uses fetchTxInfo which includes status in the response - if (!this._cardanoProvider) { - throw new Error("Cardano provider not initialized."); - } - const txInfo = await this._cardanoProvider.fetchTxInfo(txHash); - return { confirmed: true, details: txInfo }; - } - - if (this._chain === "bitcoin") { - if (!this._bitcoinProvider) { - throw new Error("Bitcoin provider not initialized."); - } - return await this._bitcoinProvider.fetchTransactionStatus(txHash); - } - - throw new Error(`Unsupported chain: ${this._chain}`); - } - - /** - * Get the configured network. - * @returns The network configuration. - */ - async getNetwork(): Promise { - if (this._chain === "cardano") { - // Cardano provider doesn't expose network publicly - return "cardano-network"; - } - - if (this._chain === "bitcoin") { - if (!this._bitcoinProvider) { - throw new Error("Bitcoin provider not initialized."); - } - return this._bitcoinProvider.getNetwork(); - } - - throw new Error(`Unsupported chain: ${this._chain}`); - } - - /** - * Generic GET request to chain-specific API endpoints. - * @param url - The API endpoint URL (relative to the chain's base URL). - * @returns The response data. - */ - async get(url: string): Promise { - if (this._chain === "cardano") { - if (!this._cardanoProvider) { - throw new Error("Cardano provider not initialized."); - } - return this._cardanoProvider.get(url); - } - - if (this._chain === "bitcoin") { - if (!this._bitcoinProvider) { - throw new Error("Bitcoin provider not initialized."); - } - return this._bitcoinProvider.get(url); - } - - throw new Error(`Unsupported chain: ${this._chain}`); - } - - /** - * Generic POST request to chain-specific API endpoints. - * @param url - The API endpoint URL (relative to the chain's base URL). - * @param body - The request body data. - * @returns The response data. - */ - async post(url: string, body: any): Promise { - if (this._chain === "cardano") { - if (!this._cardanoProvider) { - throw new Error("Cardano provider not initialized."); - } - return this._cardanoProvider.post(url, body); - } - - if (this._chain === "bitcoin") { - if (!this._bitcoinProvider) { - throw new Error("Bitcoin provider not initialized."); - } - return this._bitcoinProvider.post(url, body); - } - - throw new Error(`Unsupported chain: ${this._chain}`); - } -} diff --git a/packages/bitcoin/src/providers/blockstream.ts b/packages/bitcoin/src/providers/blockstream.ts deleted file mode 100644 index b93dd720a..000000000 --- a/packages/bitcoin/src/providers/blockstream.ts +++ /dev/null @@ -1,208 +0,0 @@ -import axios, { AxiosInstance } from "axios"; -import { IBitcoinProvider } from "../interfaces/provider"; -import { UTxO } from "../types"; -import { parseHttpError } from "./common"; -import { AddressInfo } from "../types/address-info"; -import { ScriptInfo } from "../types/script-info"; -import { TransactionsInfo } from "../types/transactions-info"; -import { TransactionsStatus } from "../types/transactions-status"; - -/** - * https://github.com/Blockstream/esplora/blob/master/API.md - */ -export class BlockstreamProvider implements IBitcoinProvider { - private readonly _axiosInstance: AxiosInstance; - - constructor(network: "mainnet" | "testnet" = "mainnet") { - const baseURL = - network === "testnet" - ? "https://blockstream.info/testnet/api" - : "https://blockstream.info/api"; - - this._axiosInstance = axios.create({ - baseURL, - }); - } - - /** - * Get information about an address. - * @param address - The address. - * @returns AddressInfo - */ - async fetchAddress(address: string): Promise { - try { - const { data, status } = await this._axiosInstance.get( - `/address/${address}` - ); - - if (status === 200) return data as AddressInfo; - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Get transaction history for the specified address, sorted with newest first. - * Returns up to 50 mempool transactions plus the first 25 confirmed transactions. You can request more confirmed transactions using `last_seen_txid`. - * @param address - The address. - * @param last_seen_txid - The last seen transaction ID (optional). - * @returns TransactionsInfo[] - */ - async fetchAddressTransactions( - address: string, - last_seen_txid?: string - ): Promise { - try { - const url = last_seen_txid - ? `/address/${address}/txs/chain/${last_seen_txid}` - : `/address/${address}/txs`; - const { data, status } = await this._axiosInstance.get(url); - - if (status === 200) return data as TransactionsInfo[]; - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Get the list of unspent transaction outputs associated with the address. - * @param address - The address. - * @returns UTxO[] - */ - async fetchAddressUTxOs(address: string): Promise { - try { - const { data, status } = await this._axiosInstance.get( - `/address/${address}/utxo` - ); - - if (status === 200) return data as UTxO[]; - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Get information about a scripthash. - * @param hash - The hash of the script. - * @returns ScriptInfo - */ - async fetchScript(hash: string): Promise { - try { - const { data, status } = await this._axiosInstance.get( - `/scripthash/${hash}` - ); - - if (status === 200) return data as ScriptInfo; - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Get transaction history for the specified scripthash, sorted with newest first. - * Returns up to 50 mempool transactions plus the first 25 confirmed transactions. You can request more confirmed transactions using `last_seen_txid`. - * @param hash - The hash of the script. - * @param last_seen_txid - The last seen transaction ID (optional). - * @returns TransactionsInfo[] - */ - async fetchScriptTransactions( - hash: string, - last_seen_txid?: string - ): Promise { - try { - const url = last_seen_txid - ? `/scripthash/${hash}/txs/chain/${last_seen_txid}` - : `/scripthash/${hash}/txs`; - const { data, status } = await this._axiosInstance.get(url); - - if (status === 200) return data as TransactionsInfo[]; - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Get the list of unspent transaction outputs associated with the scripthash. - * @param hash - The hash of the script. - * @returns UTxO[] - */ - async fetchScriptUTxOs(hash: string): Promise { - try { - const { data, status } = await this._axiosInstance.get( - `/scripthash/${hash}/utxo` - ); - - if (status === 200) return data as UTxO[]; - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Fetches the status of a transaction - * @param txid - The transaction ID. - * @returns TransactionsStatus - */ - async fetchTransactionStatus(txid: string): Promise { - try { - const { data, status } = await this._axiosInstance.get( - `/tx/${txid}/status` - ); - - if (status === 200) return data as TransactionsStatus; - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Get fee estimates for confirmation within a specified number of blocks. - * Returns fee rate in sat/vB based on Blockstream's fee estimates API. - * @param blocks - Confirmation target in blocks (1-25, 144, 504, 1008) - * @returns Fee rate in sat/vB - */ - async fetchFeeEstimates(blocks: number): Promise { - try { - const { data, status } = await this._axiosInstance.get("/fee-estimates"); - - if (status === 200) { - const feeEstimates = data as Record; - - // Find the closest available confirmation target - const availableTargets = Object.keys(feeEstimates).map(Number).sort((a, b) => a - b); - const closestTarget = availableTargets.find(target => target >= blocks) || availableTargets[availableTargets.length - 1]; - - return feeEstimates[closestTarget.toString()] || 10; - } - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Broadcast a raw transaction to the network. - * The transaction should be provided as hex in the request body. The txid will be returned on success. - * @param tx - The transaction in hex format. - * @returns The transaction ID. - */ - async submitTx(tx: string): Promise { - try { - const { data, status } = await this._axiosInstance.post("/tx", tx, { - headers: { "Content-Type": "text/plain" }, - }); - - if (status === 200) return data as string; - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } -} diff --git a/packages/bitcoin/src/providers/common.ts b/packages/bitcoin/src/providers/common.ts deleted file mode 100644 index e893891ee..000000000 --- a/packages/bitcoin/src/providers/common.ts +++ /dev/null @@ -1,21 +0,0 @@ -import axios from "axios"; - -export const parseHttpError = (error: unknown): string => { - if (!axios.isAxiosError(error)) { - return JSON.stringify(error); - } - - if (error.response) { - return JSON.stringify({ - data: error.response.data, - headers: error.response.headers, - status: error.response.status, - }); - } - - if (error.request) { - return JSON.stringify(error.request); - } - - return JSON.stringify({ code: error.code, message: error.message }); -}; diff --git a/packages/bitcoin/src/providers/index.ts b/packages/bitcoin/src/providers/index.ts deleted file mode 100644 index c63466aa5..000000000 --- a/packages/bitcoin/src/providers/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./blockstream"; -export * from "./maestro"; diff --git a/packages/bitcoin/src/providers/maestro.ts b/packages/bitcoin/src/providers/maestro.ts deleted file mode 100644 index 300b5c90e..000000000 --- a/packages/bitcoin/src/providers/maestro.ts +++ /dev/null @@ -1,346 +0,0 @@ -import axios, { AxiosInstance } from "axios"; -import { IBitcoinProvider } from "../interfaces/provider"; -import { UTxO, AddressInfo, ScriptInfo, TransactionsInfo, TransactionsStatus } from "../types"; -import { MaestroSupportedNetworks, MaestroConfig, SatoshiActivityResponse, BalanceResponse } from "../types/maestro"; -import { parseHttpError } from "./common"; - -/** - * Maestro provider for Bitcoin operations. - */ -export class MaestroProvider implements IBitcoinProvider { - private readonly _axiosInstance: AxiosInstance; - private readonly _network: MaestroSupportedNetworks; - - /** - * Create provider with custom base URL (for proxy endpoints). - * @param baseUrl - The base URL of the proxy endpoint. - * @param apiKey - The API key for the proxy. - */ - constructor(baseUrl: string, apiKey: string); - - /** - * Create provider with Maestro configuration. - * @param config - The Maestro configuration object. - */ - constructor(config: MaestroConfig); - - constructor(...args: unknown[]) { - if ( - typeof args[0] === "string" && - (args[0].startsWith("http") || args[0].startsWith("/")) - ) { - this._axiosInstance = axios.create({ - baseURL: args[0], - headers: { "api-key": args[1] as string }, - }); - this._network = args[0].includes("testnet") ? "testnet" : "mainnet"; - } else { - const { network, apiKey } = args[0] as MaestroConfig; - this._axiosInstance = axios.create({ - baseURL: `https://xbt-${network}.gomaestro-api.org/v0`, - headers: { "api-key": apiKey }, - }); - this._network = network; - } - } - - /** - * Get information about a script hash. - * @param hash - The script hash. - * @returns ScriptInfo - * @note Maestro does not have any endpoint available for this yet - */ - async fetchScript(hash: string): Promise { - throw new Error( - "fetchScript is not implemented - Maestro does not have any endpoint available for this yet", - ); - } - - /** - * Get transaction history for the specified script hash, sorted with newest first. - * @param hash - The script hash. - * @param last_seen_txid - The last seen transaction ID (optional). - * @returns TransactionsInfo[] - * @note Maestro does not have any endpoint available for this yet - */ - async fetchScriptTransactions( - hash: string, - last_seen_txid?: string, - ): Promise { - throw new Error( - "fetchScriptTransactions is not implemented - Maestro does not have any endpoint available for this yet", - ); - } - - /** - * Get the list of unspent transaction outputs associated with the script hash. - * @param hash - The script hash. - * @returns UTxO[] - * @note Maestro does not have any endpoint available for this yet - */ - async fetchScriptUTxOs(hash: string): Promise { - throw new Error( - "fetchScriptUTxOs is not implemented - Maestro does not have any endpoint available for this yet", - ); - } - - /** - * Get information about an address. - * @param address - The address. - * @returns AddressInfo - */ - async fetchAddress(address: string): Promise { - try { - const { data, status } = await this._axiosInstance.get( - `/esplora/address/${address}`, - ); - - if (status === 200) return data as AddressInfo; - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Get transaction history for the specified address, sorted with newest first. - * Returns up to 50 mempool transactions plus the first 25 confirmed transactions. You can request more confirmed transactions using `last_seen_txid`. - * @param address - The address. - * @param last_seen_txid - The last seen transaction ID (optional). - * @returns TransactionsInfo[] - */ - async fetchAddressTransactions( - address: string, - last_seen_txid?: string, - ): Promise { - try { - const url = last_seen_txid - ? `/esplora/address/${address}/txs/chain/${last_seen_txid}` - : `/esplora/address/${address}/txs`; - const { data, status } = await this._axiosInstance.get(url); - - if (status === 200) return data as TransactionsInfo[]; - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Get the list of unspent transaction outputs associated with the address. - * @param address - The address. - * @returns UTxO[] - */ - async fetchAddressUTxOs(address: string): Promise { - try { - const { data, status } = await this._axiosInstance.get( - `/esplora/address/${address}/utxo`, - ); - - if (status === 200) return data as UTxO[]; - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Get the spending status of a transaction output. - * @param txid - The transaction ID. - * @returns TransactionsStatus - */ - async fetchTransactionStatus(txid: string): Promise { - try { - const { data, status } = await this._axiosInstance.get( - `/esplora/tx/${txid}/status`, - ); - - if (status === 200) return data as TransactionsStatus; - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Broadcast a raw transaction to the network. - * @param txHex - The raw transaction in hexadecimal format. - * @returns The transaction ID. - */ - async submitTx(txHex: string): Promise { - try { - const { data, status } = await this._axiosInstance.post( - "/esplora/tx", - txHex, - ); - - if (status === 200) return data.txid || data; - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Get fee estimates for Bitcoin transactions. - * @param blocks - The number of blocks to estimate fees for (default: 6). - * @returns The estimated fee rate in satoshis per vByte. - */ - async fetchFeeEstimates(blocks: number = 6): Promise { - try { - const { data, status } = await this._axiosInstance.get( - `/rpc/transaction/estimatefee/${blocks}`, - ); - - if (status === 200) { - const feeRateInBtc = data.data.feerate; - if (feeRateInBtc === 0) { - if (this._network === "testnet") { - return 1; // 1 sat/vByte fallback for testnet (low activity expected) - } else { - throw new Error("Fee estimation unavailable for mainnet"); - } - } - - return feeRateInBtc * 100_000_000; - } - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - // Additional Bitcoin-specific methods (beyond IBitcoinProvider) - /** - * Fetch satoshi activity for a Bitcoin address (transaction history). - * @param address - The Bitcoin address. - * @param options - Optional parameters for filtering and pagination. - * @param options.order - Sort order ('asc' or 'desc'). - * @param options.count - Maximum number of results to return. - * @param options.from - Start block height. - * @param options.to - End block height. - * @param options.cursor - Pagination cursor. - * @returns SatoshiActivityResponse containing transaction activity data. - */ - async fetchSatoshiActivity( - address: string, - options: { - order?: "asc" | "desc"; - count?: number; - from?: number; - to?: number; - cursor?: string; - } = {}, - ): Promise { - const params = new URLSearchParams(); - - Object.entries(options).forEach(([key, value]) => { - if (value !== undefined && value !== null) { - params.append(key, value.toString()); - } - }); - - const queryString = params.toString(); - const url = `/addresses/${address}/activity${queryString ? `?${queryString}` : ""}`; - - try { - const { data, status } = await this._axiosInstance.get(url); - - if (status === 200) return data as SatoshiActivityResponse; - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Get transaction details by hash. - * @param hash - The transaction hash. - * @returns TransactionsInfo containing transaction details. - */ - async fetchTxInfo(hash: string): Promise { - try { - const { data, status } = await this._axiosInstance.get( - `/esplora/tx/${hash}`, - ); - - if (status === 200) return data as TransactionsInfo; - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Get address balance (raw response). - * @param address - The Bitcoin address. - * @returns BalanceResponse containing the raw balance data. - */ - async fetchAddressBalance(address: string): Promise { - try { - const { data, status } = await this._axiosInstance.get( - `/addresses/${address}/balance`, - ); - - if (status === 200) return data as BalanceResponse; - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Get balance for a Bitcoin address (convenience method). - * @param address - The Bitcoin address. - * @returns The balance as a bigint in satoshis. - */ - async getBalance(address: string): Promise { - const balanceResponse = await this.fetchAddressBalance(address); - return BigInt(balanceResponse.data); - } - - /** - * Generic GET request for Bitcoin API endpoints. - * @param url - The API endpoint URL. - * @returns The response data. - */ - async get(url: string): Promise { - try { - const { data, status } = await this._axiosInstance.get(url); - - if (status === 200) return data; - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Generic POST request for Bitcoin API endpoints. - * @param url - The API endpoint URL. - * @param body - The request body data. - * @returns The response data. - */ - async post(url: string, body: any): Promise { - try { - const { data, status } = await this._axiosInstance.post(url, body, { - headers: { - "Content-Type": "application/json", - }, - }); - - if (status === 200) return data; - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Get the network this provider is configured for. - * @returns The network configuration (mainnet or testnet). - */ - getNetwork(): MaestroSupportedNetworks { - return this._network; - } -} diff --git a/packages/bitcoin/src/types/address-info.ts b/packages/bitcoin/src/types/address-info.ts deleted file mode 100644 index 9b07d2162..000000000 --- a/packages/bitcoin/src/types/address-info.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { ChainStats } from "./chain-stats"; -import { MempoolStats } from "./mempool-stats"; - -export type AddressInfo = { - address: string; - chain_stats: ChainStats; - mempool_stats: MempoolStats; -}; diff --git a/packages/bitcoin/src/types/address.ts b/packages/bitcoin/src/types/address.ts deleted file mode 100644 index f7952856f..000000000 --- a/packages/bitcoin/src/types/address.ts +++ /dev/null @@ -1,6 +0,0 @@ -export type Address = { - address: string; - publicKey?: string; - purpose: "payment" | "ordinals"; - addressType: "p2tr" | "p2wpkh" | "p2sh"; -} \ No newline at end of file diff --git a/packages/bitcoin/src/types/chain-stats.ts b/packages/bitcoin/src/types/chain-stats.ts deleted file mode 100644 index b7e8075af..000000000 --- a/packages/bitcoin/src/types/chain-stats.ts +++ /dev/null @@ -1,7 +0,0 @@ -export type ChainStats = { - funded_txo_count: number; - funded_txo_sum: number; - spent_txo_count: number; - spent_txo_sum: number; - tx_count: number; -}; diff --git a/packages/bitcoin/src/types/index.ts b/packages/bitcoin/src/types/index.ts deleted file mode 100644 index b325f0fe7..000000000 --- a/packages/bitcoin/src/types/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -export * from './address'; -export * from './utxo'; -export * from './address-info'; -export * from './transactions-info'; -export * from './transactions-status'; -export * from './script-info'; -export * from './chain-stats'; -export * from './mempool-stats'; -export * from './wallet'; -export * from './maestro'; \ No newline at end of file diff --git a/packages/bitcoin/src/types/maestro.ts b/packages/bitcoin/src/types/maestro.ts deleted file mode 100644 index 3585ef447..000000000 --- a/packages/bitcoin/src/types/maestro.ts +++ /dev/null @@ -1,29 +0,0 @@ -export type MaestroSupportedNetworks = "mainnet" | "testnet"; - -export interface MaestroConfig { - network: MaestroSupportedNetworks; - apiKey: string; -} - -export interface SatoshiActivity { - confirmations: number; - height: number; - tx_hash: string; - sat_activity: { - kind: "self_transfer" | "increase" | "decrease"; - amount: string; - }; -} - -export interface SatoshiActivityResponse { - data: SatoshiActivity[]; - last_updated: { - block_hash: string; - block_height: number; - }; - next_cursor: string | null; -} - -export type BalanceResponse = { - data: number; -}; \ No newline at end of file diff --git a/packages/bitcoin/src/types/mempool-stats.ts b/packages/bitcoin/src/types/mempool-stats.ts deleted file mode 100644 index d3a8bf260..000000000 --- a/packages/bitcoin/src/types/mempool-stats.ts +++ /dev/null @@ -1,7 +0,0 @@ -export type MempoolStats = { - funded_txo_count: number; - funded_txo_sum: number; - spent_txo_count: number; - spent_txo_sum: number; - tx_count: number; -}; diff --git a/packages/bitcoin/src/types/script-info.ts b/packages/bitcoin/src/types/script-info.ts deleted file mode 100644 index 62585242c..000000000 --- a/packages/bitcoin/src/types/script-info.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { ChainStats } from "./chain-stats"; -import { MempoolStats } from "./mempool-stats"; - -export type ScriptInfo = { - scripthash: string; - chain_stats: ChainStats; - mempool_stats: MempoolStats; -}; diff --git a/packages/bitcoin/src/types/transactions-info.ts b/packages/bitcoin/src/types/transactions-info.ts deleted file mode 100644 index d84507daa..000000000 --- a/packages/bitcoin/src/types/transactions-info.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { TransactionsStatus } from "./transactions-status"; - -export type TransactionsInfo = { - txid: string; - version: number; - locktime: number; - vin: { - txid: string; - vout: number; - prevout: { - scriptpubkey: string; - scriptpubkey_asm: string; - scriptpubkey_type: string; - scriptpubkey_address: string; - value: number; - }; - scriptsig: string; - scriptsig_asm: string; - witness: string[]; - is_coinbase: boolean; - sequence: number; - }[]; - vout: { - scriptpubkey: string; - scriptpubkey_asm: string; - scriptpubkey_type: string; - scriptpubkey_address: string; - value: number; - }[]; - size: number; - weight: number; - fee: number; - status: TransactionsStatus; -}; diff --git a/packages/bitcoin/src/types/transactions-status.ts b/packages/bitcoin/src/types/transactions-status.ts deleted file mode 100644 index 804bd9f87..000000000 --- a/packages/bitcoin/src/types/transactions-status.ts +++ /dev/null @@ -1,6 +0,0 @@ -export type TransactionsStatus = { - confirmed: boolean; - block_height: number; - block_hash: string; - block_time: number; -}; diff --git a/packages/bitcoin/src/types/utxo.ts b/packages/bitcoin/src/types/utxo.ts deleted file mode 100644 index 16bab796e..000000000 --- a/packages/bitcoin/src/types/utxo.ts +++ /dev/null @@ -1,11 +0,0 @@ -export type UTxO = { - status: { - block_hash: string; - block_height: number; - block_time: number; - confirmed: boolean; - }; - txid: string; - value: number; - vout: number; -}; diff --git a/packages/bitcoin/src/types/wallet.ts b/packages/bitcoin/src/types/wallet.ts deleted file mode 100644 index 1319fc1f6..000000000 --- a/packages/bitcoin/src/types/wallet.ts +++ /dev/null @@ -1,93 +0,0 @@ -import { IBitcoinProvider } from "../interfaces/provider"; - -export type NetworkType = "Mainnet" | "Regtest" | "Testnet"; - -export type CreateWalletOptions = { - network: NetworkType; - key: - | { - type: "mnemonic"; - words: string[]; - } - | { - type: "address"; - address: string; - }; - path?: string; - provider?: IBitcoinProvider; -}; - -export type GetAddressResult = { - address: string; - publicKey: string; - purpose: "payment" | "ordinals"; - addressType: "p2tr" | "p2wpkh" | "p2sh"; - network: "mainnet" | "testnet" | "regtest"; - walletType: "software" | "ledger"; -}; - -export type SignMessageParams = { - address: string; - message: string; - protocol?: "ECDSA" | "BIP322"; -}; - -export type SignMessageResult = { - signature: string; - messageHash: string; - address: string; -}; - -export type SignPsbtParams = { - psbt: string; - signInputs: Record; - broadcast?: boolean; -}; - -export type SignPsbtResult = { - psbt: string; - txid?: string; -}; - -export type SendTransferParams = { - recipients: Array<{ - address: string; - amount: number; - }>; -}; - -export type SendTransferResult = { - txid: string; -}; - -export type GetBalanceResult = { - confirmed: string; - unconfirmed: string; - total: string; -}; - -export type SignMultipleTransactionsParams = { - network: { type: NetworkType }; - message: string; - psbts: Array<{ - psbtBase64: string; - inputsToSign: Array<{ - address: string; - signingIndexes: number[]; - sigHash?: number; - }>; - }>; -}; - -// Keep legacy type for backward compatibility -export type TransactionPayload = { - inputs: { - txid: string; - vout: number; - value: number; - }[]; - outputs: { - address: string; - value: number; - }[]; -}; \ No newline at end of file diff --git a/packages/bitcoin/src/utils/address.ts b/packages/bitcoin/src/utils/address.ts deleted file mode 100644 index a3cd71724..000000000 --- a/packages/bitcoin/src/utils/address.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { bitcoin } from "../core"; -import { Address } from "../types"; - -export function resolveAddress( - publicKey: string | Buffer, - network: "mainnet" | "testnet" | bitcoin.networks.Network -): Address { - const p2wpkh = bitcoin.payments.p2wpkh({ - pubkey: - typeof publicKey === "string" ? Buffer.from(publicKey, "hex") : publicKey, - network: - network === "mainnet" - ? bitcoin.networks.bitcoin - : network === "testnet" - ? bitcoin.networks.testnet - : network, - }); - - if (!p2wpkh?.address) { - throw new Error("Address is not initialized."); - } - - const pubKeyHex = Buffer.isBuffer(publicKey) - ? publicKey.toString("hex") - : publicKey; - - return { - address: p2wpkh.address, - publicKey: pubKeyHex, - purpose: "payment", - addressType: "p2wpkh", - }; -} diff --git a/packages/bitcoin/src/utils/index.ts b/packages/bitcoin/src/utils/index.ts deleted file mode 100644 index ce667bbed..000000000 --- a/packages/bitcoin/src/utils/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./address"; diff --git a/packages/bitcoin/src/wallets/browser/index.ts b/packages/bitcoin/src/wallets/browser/index.ts deleted file mode 100644 index 91fe07141..000000000 --- a/packages/bitcoin/src/wallets/browser/index.ts +++ /dev/null @@ -1,148 +0,0 @@ -// https://developer.bitcoin.org/reference/rpc/index.html#wallet-rpcs - -import { Address } from "../../types/address"; -import { IBitcoinWallet } from "../../interfaces/wallet"; - -declare const window: { - BitcoinProvider?: any; -}; - -export class BrowserWallet implements IBitcoinWallet { - private readonly _purposes: string[]; - - constructor(purposes: string[]) { - this._purposes = purposes; - } - - /** - * This is the entrypoint to start communication with the user's wallet. The wallet should request the user's permission to connect the web page to the user's wallet, and if permission has been granted, the wallet will be returned and exposing the full API for the dApp to use. - * @param message - A message to display to the user when requesting permission to connect the wallet. - * @param purposes - An array of purposes for which the wallet is being connected. Default is `["payment"]`. Options are `["payment", "ordinals", "stacks"]`. - * @returns - */ - static async enable( - message: string, - purposes = ["payment"] - ): Promise { - const response = await WalletStaticMethods.request("getAccounts", { - purposes: purposes, - message: message, - }); - if (response.status === "success") { - return new BrowserWallet(purposes); - } - throw new Error("Failed to enable wallet"); - } - - async getAddresses(): Promise { - try { - const response = await this.request("getAddresses", { - purposes: this._purposes, - }); - if (response.status === "success") { - return response.result.addresses as Address[]; - } - } catch (err) { - console.error("getAccounts ~ error:", err); - } - } - - async getChangeAddress() { - const addresses = await this.getAddresses(); - const address = addresses?.find((address) => address.purpose === "payment"); - if (address) return address.address; - throw new Error("No change address found"); - } - - async getCollateral() { - console.log("Method getCollateral not implemented."); - return []; - } - - async getNetworkId(): Promise<0 | 1> { - return 1; - } - - async request(method: string, params?: any) { - return WalletStaticMethods.request(method, params); - } - - async signData( - payload: string, - address?: string, - addressType: "p2wpkh" | "p2tr" | "stacks" = "p2wpkh" - ): Promise< - | { - address: string; - signature: string; - messageHash: string; - } - | undefined - > { - try { - let _address = address; - if (!_address) { - _address = await this.getAddresses().then((addresses) => { - const address = addresses?.find( - (address) => address.addressType === addressType - ); - return address?.address; - }); - } - - if (_address) { - const response = await this.request("signMessage", { - message: payload, - address: _address, - }); - if (response.status === "success") { - return response.result; - } - } - } catch (err) { - console.error("signMessage ~ error:", err); - } - } - - async signTx(signedTx: string): Promise { - console.log("Method signTx not implemented."); - return ""; - } - - async submitTx(signedTx: string): Promise { - console.log("Method submitTx not implemented."); - return ""; - } -} - -class WalletStaticMethods { - static async request( - method: string, // todo define - params: any, // todo define - providerId?: string - ): Promise { - let provider = window.BitcoinProvider; - // todo extend to all wallets based on providerId - - if (!provider) { - throw new Error("No wallet provider was found"); - } - if (!method) { - throw new Error("A wallet method is required"); - } - - const response = await provider.request(method, params); - - if (response.result) { - return { - status: "success", - result: response.result, - }; - } - - return { - status: "error", - error: response.error, - }; - } -} diff --git a/packages/bitcoin/src/wallets/embedded/index.ts b/packages/bitcoin/src/wallets/embedded/index.ts deleted file mode 100644 index b5e0119b3..000000000 --- a/packages/bitcoin/src/wallets/embedded/index.ts +++ /dev/null @@ -1,628 +0,0 @@ -import type { Network } from "bitcoinjs-lib"; -import { BIP32Interface } from "bip32"; -import { mnemonicToSeedSync, validateMnemonic } from "bip39"; - -import { bip32, bip39, bitcoin, ECPair } from "../../core"; -import { IBitcoinProvider } from "../../interfaces/provider"; -import { UTxO } from "../../types/utxo"; -import { - CreateWalletOptions, - GetAddressResult, - GetBalanceResult, - SendTransferParams, - SendTransferResult, - SignMessageParams, - SignMessageResult, - SignMultipleTransactionsParams, - SignPsbtParams, - SignPsbtResult, -} from "../../types/wallet"; -import { resolveAddress } from "../../utils"; - -/** - * EmbeddedWallet is a class that provides a simple interface to interact with Bitcoin wallets. - */ -export class EmbeddedWallet { - private readonly _network: Network; - private readonly _wallet?: BIP32Interface; - private readonly _provider?: IBitcoinProvider; - private readonly _isReadOnly: boolean; - private readonly _address?: string; - - constructor(options: CreateWalletOptions) { - switch (options.network) { - case "Testnet": - this._network = bitcoin.networks.testnet; - break; - case "Regtest": - this._network = bitcoin.networks.regtest; - break; - case "Mainnet": - default: - this._network = bitcoin.networks.bitcoin; - break; - } - - if (options.key.type === "mnemonic") { - // Use BIP84 standard: m/84'/coin_type'/0'/0/0 - // coin_type: 0 for mainnet, 1 for testnet (including testnet4 and regtest) - const coinType = this._network === bitcoin.networks.bitcoin ? 0 : 1; - const defaultPath = `m/84'/${coinType}'/0'/0/0`; - - this._wallet = _derive( - options.key.words, - options.path ?? defaultPath, - this._network, - ); - this._isReadOnly = false; - } else { - // Read-only wallet initialized with just an address - this._address = options.key.address; - this._isReadOnly = true; - } - - this._provider = options.provider; - } - - /** - * Apps can specify which wallet addresses they require: Bitcoin ordinals address or Bitcoin payment address, - * using the `purposes` request parameter. The `message` request param gives apps the option to display a - * message to the user when requesting their addresses. (note: ignored for embedded wallets) - * - * @param purposes Array of strings used to specify the purpose of the address(es) to request: - * - `'ordinals'` is preferably used to manage the user's ordinals - * - `'payment'` is preferably used to manage the user's bitcoin - * Example: `['ordinals', 'payment']` - * @param message Optional - a message to be displayed to the user in the request prompt (ignored for embedded wallets) - * @returns {Promise} Once resolved, returns an array of the user's wallet address objects: - * - `address`: string - the user's connected wallet address - * - `publicKey`: A hex string representing the bytes of the public key of the account. You can use this to construct partially signed Bitcoin transactions (PSBT) - * - `purpose`: string - The purpose of the address ('ordinals' for managing ordinals, 'payment' for managing bitcoin) - * - `addressType`: string - the address's format ('P2TR' for ordinals, 'P2SH' for payment, 'P2WPKH' for payment using Ledger) - * - `network`: string - the network where the address is being used ('mainnet', 'testnet', 'signet') - * - `walletType`: string - the type of wallet used for the account ('ledger' for Ledger devices, 'software' otherwise) - * @throws {Error} If wallet is not properly initialized. - */ - async getAddresses( - purposes?: Array<"payment" | "ordinals">, - message?: string, - ): Promise { - // TODO: Implement full Xverse API compliance - // - Default to both purposes if not specified: ["payment", "ordinals"] - // - Generate payment address (P2WPKH) when "payment" is requested - // - Generate ordinals address (P2TR - Taproot) when "ordinals" is requested - // - Filter addresses based on requested purposes - // - // Note: `message` parameter is used by Xverse to show custom prompts to users, - // but embedded wallets don't have UI prompts, so this parameter is ignored here - - if (this._isReadOnly && this._address) { - return [ - { - address: this._address, - publicKey: "", // Not available for read-only wallets - purpose: "payment", - addressType: "p2wpkh", - network: this._getNetworkString(), - walletType: "software", - }, - ]; - } - - if (!this._wallet) { - throw new Error("Wallet not initialized properly."); - } - - const addressInfo = resolveAddress(this._wallet.publicKey, this._network); - - return [ - { - address: addressInfo.address, - publicKey: - addressInfo.publicKey || this._wallet.publicKey.toString("hex"), - purpose: "payment", - addressType: addressInfo.addressType, - network: this._getNetworkString(), - walletType: "software", - }, - ]; - } - - /** - * Returns the hex-encoded public key of the wallet. - * - * @returns {string} The public key in hexadecimal format. - * @throws {Error} If the wallet is read-only and public key is not available. - */ - getPublicKey(): string { - if (this._isReadOnly) { - throw new Error("Public key is not available for read-only wallets."); - } - - if (!this._wallet) { - throw new Error("Wallet not initialized properly."); - } - - return this._wallet.publicKey.toString("hex"); - } - - /** - * Returns the network identifier of the wallet. - * 0: Indicates the Bitcoin testnet. - * 1: Indicates the Bitcoin mainnet. - * 2: Indicates the Bitcoin regtest. - * - * @returns {0 | 1 | 2} The Bitcoin network ID. - */ - getNetworkId(): 0 | 1 | 2 { - if (this._network === bitcoin.networks.testnet) return 0; - if (this._network === bitcoin.networks.regtest) return 2; - return 1; // mainnet - } - - /** - * Returns the network type as a string for API responses. - */ - private _getNetworkString(): "mainnet" | "testnet" | "regtest" { - if (this._network === bitcoin.networks.testnet) return "testnet"; - if (this._network === bitcoin.networks.regtest) return "regtest"; - return "mainnet"; - } - - /** - * Get UTXOs for the wallet address. - * @returns An array of UTXOs. - */ - async getUTxOs(): Promise { - const address = await this.getAddresses(); - if (this._provider === undefined) { - throw new Error("`provider` is not defined. Provide a BitcoinProvider."); - } - - return await this._provider.fetchAddressUTxOs(address[0].address); - } - - /** - * You can request to sign a message with wallet's Bitcoin addresses, by invoking the `signMessage` method. - * - * @param params - Object containing the following parameters: - * - `address`: a string representing the address to use to sign the message - * - `message`: a string representing the message to be signed by the wallet - * - `protocol` (optional): By default, signMessage will use two type of signatures depending on the Bitcoin address used for signing: - * - ECDSA signatures over the secp256k1 curve when signing with the Bitcoin payment (`p2sh`) address - * - BIP322 signatures when signing with the Bitcoin Ordinals (`p2tr`) address or a Ledger-based Bitcoin payment address (`p2wpkh`) - * - * You have the option to specify your preferred signature type with the `protocol` parameter: - * - `ECDSA` to request ECDSA signatures over the secp256k1 curve (available for payment addresses only: `p2sh` and `p2wpkh`) - * - `BIP322` to request BIP322 signatures (available for all payment (`p2sh` and `p2wpkh`) & ordinals addresses (`p2tr`)) - * @returns Promise that resolves to the `SignMessageResult` object containing: - * - `signature`: a string representing the signed message - * - `messageHash`: a string representing the hash of the message - * - `address`: a string representing the address used for signing - * @throws {Error} If the wallet is read-only or private key is not available. - */ - async signMessage(params: SignMessageParams): Promise { - const { address, message, protocol = "ECDSA" } = params; - - // TODO: Implement BIP322 support for message signing - if (protocol === "BIP322") { - throw new Error( - "BIP322 protocol is not yet supported. Only ECDSA is currently available.", - ); - } - - if (this._isReadOnly) { - throw new Error("Cannot sign data with a read-only wallet."); - } - - if (!this._wallet || !this._wallet.privateKey) { - throw new Error("Private key is not available for signing."); - } - - // TODO: This uses legacy message signing format which may not be appropriate for SegWit addresses - // Since we're using BIP84 derivation path (m/84'/0'/0'/0/0) for native SegWit (P2WPKH), - // we should implement BIP322 message signing for proper SegWit address ownership proof - - // Create ECPair from private key - const keyPair = ECPair.fromPrivateKey(this._wallet.privateKey, { - compressed: true, - }); - // Prepare message buffer - const messageBuffer = Buffer.from(message, "utf8"); - // Prepare the buffer to sign (see bitcoinjs-message implementation) - - const bufferToHash = Buffer.concat([ - varIntBuffer(messageBuffer.length), - messageBuffer, - ]); - const hash = bitcoin.crypto.hash256(bufferToHash); - // Sign the hash - const signature = keyPair.sign(hash); - - return { - signature: signature.toString("base64"), - messageHash: hash.toString("hex"), - address: address, - }; - } - - /** - * You can use the `signPsbt` method to request the signature of a Partially Signed Bitcoin Transaction (PSBT) - * from Bitcoin wallet addresses. - * - * The PSBT to be signed must be base64-encoded. You can use any Bitcoin library to construct this transaction. - * - * @param params - Object containing the following parameters: - * - `psbt`: a string representing the psbt to sign, encoded in base64 - * - `signInputs`: A Record where: - * - the keys are the addresses to use for signing - * - the values are the indexes of the inputs to sign with each address - * - `broadcast`: a boolean flag that specifies whether to broadcast the signed transaction after signature - * - * Depending on your use case, you can request that the PSBT be finalized and broadcasted after signing, - * by setting the broadcast flag to true. Otherwise, the signed PSBT will be returned in the response without broadcasting. - * - * @returns Promise that resolves to the `SignPsbtResult` object containing: - * - `psbt`: The base64 encoded signed PSBT - * - `txid`: The transaction id as a hex-encoded string (only returned if the transaction was broadcasted) - * @throws {Error} If the wallet is read-only or private key is not available. - */ - async signPsbt(params: SignPsbtParams): Promise { - const { psbt: psbtBase64, signInputs, broadcast = false } = params; - if (this._isReadOnly) { - throw new Error("Cannot sign transactions with a read-only wallet."); - } - - if (!this._wallet || !this._wallet.privateKey) { - throw new Error("Private key is not available for signing."); - } - - const psbt = bitcoin.Psbt.fromBase64(psbtBase64, { - network: this._network, - }); - - const ecPair = ECPair.fromPrivateKey(this._wallet.privateKey, { - network: this._network, - }); - - // Sign the specified inputs - const allInputIndexes = Object.values(signInputs).flat(); - allInputIndexes.forEach((inputIndex) => { - psbt.signInput(inputIndex, this._wallet!); - psbt.validateSignaturesOfInput( - inputIndex, - (pubkey, hash, signature) => - ecPair.publicKey.equals(pubkey) && ecPair.verify(hash, signature), - ); - }); - - const signedPsbt = psbt.toBase64(); - - if (broadcast) { - if (!this._provider) { - throw new Error( - "`provider` is not defined. Provide a BitcoinProvider for broadcasting.", - ); - } - - psbt.finalizeAllInputs(); - const txHex = psbt.extractTransaction().toHex(); - const txid = await this._provider.submitTx(txHex); - - return { - psbt: signedPsbt, - txid: txid, - }; - } - - return { - psbt: signedPsbt, - }; - } - - /** - * You can use the `sendTransfer` method to request a transfer of any amount of Bitcoin to one or more recipients from the wallet. - * - * @param params - Object containing the following parameters: - * - `recipients`: an array of objects with properties: - * - `address`: a string representing the recipient's address - * - `amount`: a number representing the amount of Bitcoin to send, denominated in satoshis (Bitcoin base unit) - * @returns Promise that resolves to the `sendTransferResult` object containing: - * - `txid`: The transaction id as a hex-encoded string - * @throws {Error} If the wallet is read-only or provider is not available. - */ - async sendTransfer(params: SendTransferParams): Promise { - if (this._isReadOnly) { - throw new Error("Cannot send transactions with a read-only wallet."); - } - - if (!this._provider) { - throw new Error( - "`provider` is not defined. Provide a BitcoinProvider for sending.", - ); - } - - if (!this._wallet) { - throw new Error("Wallet not initialized properly."); - } - - const { recipients } = params; - - const [addresses, utxos] = await Promise.all([ - this.getAddresses(), - this.getUTxOs(), - ]); - - const walletAddress = addresses[0].address; - const psbt = await this._buildTransferPsbt( - utxos, - recipients, - walletAddress, - ); - - // Sign and broadcast using signPsbt - const inputCount = psbt.inputCount; - const signInputs: Record = { - [walletAddress]: Array.from({ length: inputCount }, (_, i) => i), - }; - - const signResult = await this.signPsbt({ - psbt: psbt.toBase64(), - signInputs, - broadcast: true, - }); - - return { txid: signResult.txid! }; - } - - /** - * You can use the `getBalance` method to retrieve Bitcoin balance. - * - * The `getBalance` method will return an object representing the connected wallet's payment address BTC holdings: - * - * @returns Promise that resolves to an object containing the following balance information: - * - `confirmed`: a string representing the connected wallet's confirmed BTC balance, i.e. the amount of confirmed BTC which the payment address holds, in satoshis - * - `unconfirmed`: a string representing the connected wallet's unconfirmed BTC balance, i.e. the amount of unconfirmed BTC which the payment address will send/receive as a result of pending mempool transactions, in satoshis (Note: this amount can be negative if the net result of pending mempool transaction decreases the address balance) - * - `total`: a string representing the sum of confirmed and unconfirmed BTC balances - * @throws {Error} If provider is not available. - */ - async getBalance(): Promise { - if (!this._provider) { - throw new Error( - "`provider` is not defined. Provide a BitcoinProvider for balance.", - ); - } - - const addresses = await this.getAddresses(); - const address = addresses[0].address; - - const addressInfo = await this._provider.fetchAddress(address); - const confirmed = - addressInfo.chain_stats.funded_txo_sum - - addressInfo.chain_stats.spent_txo_sum; - const unconfirmed = - addressInfo.mempool_stats.funded_txo_sum - - addressInfo.mempool_stats.spent_txo_sum; - const total = confirmed + unconfirmed; - - return { - confirmed: confirmed.toString(), - unconfirmed: unconfirmed.toString(), - total: total.toString(), - }; - } - - /** - * To request signing of multiple PSBTs, you can use the `signMultipleTransactions` function. - * - * @param params - Object containing an array of PSBTs to sign, where each PSBT contains: - * - `psbtBase64`: a valid psbt encoded in base64 - * - `inputsToSign`: an array of objects describing the address and index of input to sign - * @returns Promise resolving to signed PSBTs - * @throws {Error} If the wallet is read-only or private key is not available. - */ - async signMultipleTransactions( - params: SignMultipleTransactionsParams, - ): Promise { - if (!this._wallet || !this._wallet.privateKey) { - throw new Error("Private key is not available for signing."); - } - - const { psbts } = params; - const results: SignPsbtResult[] = []; - - for (const psbtInfo of psbts) { - const psbt = bitcoin.Psbt.fromBase64(psbtInfo.psbtBase64, { - network: this._network, - }); - - // Sign all specified input indexes - const inputIndexes = psbtInfo.inputsToSign.flatMap( - (input) => input.signingIndexes, - ); - inputIndexes.forEach((index) => psbt.signInput(index, this._wallet!)); - - results.push({ - psbt: psbt.toBase64(), - }); - } - - return results; - } - - /** - * Simple largest-first coin selection algorithm. - * Selects UTXOs in descending order by value until target amount + fees is reached. - * - * @param utxos Available UTXOs - * @param targetAmount Amount needed in satoshis - * @param feeRate Fee rate in sat/vByte - * @returns Selected UTXOs and change amount - */ - private _selectUtxosLargestFirst( - utxos: UTxO[], - targetAmount: number, - feeRate: number, - ): { selectedUtxos: UTxO[]; change: number } { - // Sort UTXOs by value (descending) - largest first - const sortedUtxos = [...utxos].sort((a, b) => b.value - a.value); - - let selectedValue = 0; - const selectedUtxos: UTxO[] = []; - - // Accumulate UTXOs until we have enough - for (const utxo of sortedUtxos) { - selectedUtxos.push(utxo); - selectedValue += utxo.value; - - // Calculate fee with current selection (rough estimate) - const estimatedTxSize = selectedUtxos.length * 150 + 2 * 34 + 10; // inputs + outputs + overhead - const fee = Math.ceil(estimatedTxSize * feeRate); - - // Check if we have enough - if (selectedValue >= targetAmount + fee) { - const finalFee = Math.ceil( - (selectedUtxos.length * 150 + 2 * 34 + 10) * feeRate, - ); - const change = selectedValue - targetAmount - finalFee; - return { selectedUtxos, change }; - } - } - - throw new Error("Insufficient funds for transaction."); - } - - /** - * Build PSBT for transfer using optimal coin selection. - * @param utxos Available UTXOs - * @param recipients Transfer recipients - * @param walletAddress Wallet address for change - * @returns Built PSBT ready for signing - */ - private async _buildTransferPsbt( - utxos: UTxO[], - recipients: any[], - walletAddress: string, - ): Promise { - let feeRate = 2; // Default fallback - if (this._provider) { - try { - feeRate = await this._provider.fetchFeeEstimates(6); - } catch (error) { - console.warn("Fee estimation failed, using default rate:", error); - } - } - - // Use largest-first coin selection - const targetAmount = recipients.reduce((sum, r) => sum + r.amount, 0); - const { selectedUtxos, change } = this._selectUtxosLargestFirst( - utxos, - targetAmount, - feeRate, - ); - const psbt = new bitcoin.Psbt({ network: this._network }); - const p2wpkh = bitcoin.payments.p2wpkh({ - pubkey: this._wallet!.publicKey, - network: this._network, - }); - - selectedUtxos.forEach((utxo) => { - psbt.addInput({ - hash: utxo.txid, - index: utxo.vout, - witnessUtxo: { - script: p2wpkh.output!, - value: utxo.value, - }, - }); - }); - - recipients.forEach((recipient) => { - psbt.addOutput({ address: recipient.address, value: recipient.amount }); - }); - - if (change > 0) { - psbt.addOutput({ address: walletAddress, value: change }); - } - - return psbt; - } - - /** - * Generates a mnemonic phrase and returns it as an array of words. - * - * @param {number} [strength=128] - The strength of the mnemonic in bits (must be a multiple of 32 between 128 and 256). - * @returns {string[]} An array of words representing the generated mnemonic. - * @throws {Error} If the strength is not valid. - */ - static brew(strength: number = 128): string[] { - if (![128, 160, 192, 224, 256].includes(strength)) { - throw new Error( - "Invalid strength. Must be one of: 128, 160, 192, 224, 256.", - ); - } - - const mnemonic = bip39.generateMnemonic(strength); - return mnemonic.split(" "); - } -} - -function _derive( - words: string[], - path: string = "m/84'/0'/0'/0/0", - network?: Network, -): BIP32Interface { - const mnemonic = words.join(" "); - - if (!validateMnemonic(mnemonic)) { - throw new Error("Invalid mnemonic provided."); - } - - const seed = mnemonicToSeedSync(mnemonic); - const root = bip32.fromSeed(seed, network); - const child = root.derivePath(path); - - return child; -} - -function varIntBuffer(n: number): Buffer { - if (n < 0xfd) return Buffer.from([n]); - if (n <= 0xffff) return Buffer.from([0xfd, n & 0xff, n >> 8]); - if (n <= 0xffffffff) - return Buffer.from([ - 0xfe, - n & 0xff, - (n >> 8) & 0xff, - (n >> 16) & 0xff, - (n >> 24) & 0xff, - ]); - throw new Error("Message too long"); -} - -/** - * Verifies if a signature is valid for a given message and public key. - * @param message - The original message that was signed. - * @param signatureBase64 - The base64-encoded signature to verify. - * @param publicKeyHex - The hex-encoded public key to verify against. - * @returns {boolean} True if the signature is valid and matches the public key. - */ -export function verifySignature( - message: string, - signatureBase64: string, - publicKeyHex: string, -): boolean { - try { - const messageBuffer = Buffer.from(message, "utf8"); - const bufferToHash = Buffer.concat([ - varIntBuffer(messageBuffer.length), - messageBuffer, - ]); - const hash = bitcoin.crypto.hash256(bufferToHash); - const signature = Buffer.from(signatureBase64, "base64"); - const publicKey = Buffer.from(publicKeyHex, "hex"); - - return ECPair.fromPublicKey(publicKey).verify(hash, signature); - } catch (e) { - return false; - } -} diff --git a/packages/bitcoin/src/wallets/index.ts b/packages/bitcoin/src/wallets/index.ts deleted file mode 100644 index d386b3950..000000000 --- a/packages/bitcoin/src/wallets/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./browser"; -export * from "./embedded"; diff --git a/packages/bitcoin/test/providers/blockstream/blockstream-integration.test.ts b/packages/bitcoin/test/providers/blockstream/blockstream-integration.test.ts deleted file mode 100644 index 413acbeb1..000000000 --- a/packages/bitcoin/test/providers/blockstream/blockstream-integration.test.ts +++ /dev/null @@ -1,174 +0,0 @@ -import { BlockstreamProvider } from "../../../src/providers/blockstream"; - -describe("Blockstream Integration Tests", () => { - let provider: BlockstreamProvider; - - // Known testnet addresses for testing - const testAddressWithHistory = "tb1q6rz28mcfaxtmd6v789l9rrlrusdprr9pqcpvkl"; - const testAddressEmpty = "tb1qcr8te4kr609gcawutmrza0j4xv80jy8zmfp6l0"; - - beforeAll(() => { - provider = new BlockstreamProvider("testnet"); - }); - - describe("Address operations", () => { - it("should fetch address info successfully", async () => { - const addressInfo = await provider.fetchAddress(testAddressWithHistory); - - expect(addressInfo).toMatchObject({ - address: testAddressWithHistory, - chain_stats: expect.objectContaining({ - funded_txo_count: expect.any(Number), - funded_txo_sum: expect.any(Number), - spent_txo_count: expect.any(Number), - spent_txo_sum: expect.any(Number), - tx_count: expect.any(Number), - }), - mempool_stats: expect.objectContaining({ - funded_txo_count: expect.any(Number), - funded_txo_sum: expect.any(Number), - spent_txo_count: expect.any(Number), - spent_txo_sum: expect.any(Number), - tx_count: expect.any(Number), - }), - }); - }); - - it("should fetch address UTxOs", async () => { - const utxos = await provider.fetchAddressUTxOs(testAddressWithHistory); - - expect(Array.isArray(utxos)).toBe(true); - // UTxOs may be empty, but should return valid array - if (utxos.length > 0) { - expect(utxos[0]).toMatchObject({ - txid: expect.any(String), - vout: expect.any(Number), - value: expect.any(Number), - status: expect.objectContaining({ - confirmed: expect.any(Boolean), - }), - }); - } - }); - - it("should fetch address transactions", async () => { - const transactions = await provider.fetchAddressTransactions(testAddressWithHistory); - - expect(Array.isArray(transactions)).toBe(true); - // May have no transactions, but should return valid array - if (transactions.length > 0) { - expect(transactions[0]).toMatchObject({ - txid: expect.any(String), - version: expect.any(Number), - vin: expect.any(Array), - vout: expect.any(Array), - }); - } - }); - - it("should handle empty address gracefully", async () => { - const addressInfo = await provider.fetchAddress(testAddressEmpty); - - expect(addressInfo).toMatchObject({ - address: testAddressEmpty, - chain_stats: expect.objectContaining({ - tx_count: expect.any(Number), - }), - }); - }); - }); - - describe("Fee estimation", () => { - it("should fetch fee estimates", async () => { - const feeEstimates = await provider.fetchFeeEstimates(6); - - expect(typeof feeEstimates).toBe("number"); - expect(feeEstimates).toBeGreaterThan(0); - }); - - it("should handle different block targets", async () => { - const fee6 = await provider.fetchFeeEstimates(6); - const fee12 = await provider.fetchFeeEstimates(12); - const fee24 = await provider.fetchFeeEstimates(24); - - expect(typeof fee6).toBe("number"); - expect(typeof fee12).toBe("number"); - expect(typeof fee24).toBe("number"); - - // All fees should be positive numbers - expect(fee6).toBeGreaterThan(0); - expect(fee12).toBeGreaterThan(0); - expect(fee24).toBeGreaterThan(0); - }); - }); - - describe("Transaction operations", () => { - it("should handle non-existent transaction status requests", async () => { - const nonExistentTxId = "0000000000000000000000000000000000000000000000000000000000000000"; - - // Blockstream returns {confirmed: false} for non-existent transactions - const status = await provider.fetchTransactionStatus(nonExistentTxId); - expect(status).toMatchObject({ - confirmed: false, - }); - }); - - it("should return error for invalid transaction hex", async () => { - const invalidTxHex = "invalid-hex-data"; - - try { - await provider.submitTx(invalidTxHex); - fail("Expected API to throw error for invalid transaction hex"); - } catch (error) { - expect(typeof error).toBe("string"); - expect(error).toContain("error"); - } - }); - }); - - describe("Error handling", () => { - it("should return base58 error for invalid address format", async () => { - const invalidAddress = "invalid-address-format"; - try { - await provider.fetchAddress(invalidAddress); - fail("Expected API to throw error for invalid address"); - } catch (error) { - // parseHttpError returns JSON strings (mesh standard) - expect(typeof error).toBe("string"); - const errorObj = JSON.parse(error as string); - expect(errorObj).toMatchObject({ - data: "base58 error", - status: 400, - }); - } - }); - - it("should return error for malformed addresses", async () => { - // Test with malformed but valid-length address - const malformedAddress = "tb1qinvalidbutvalidlength000000000000000000"; - - try { - await provider.fetchAddress(malformedAddress); - fail("Expected API to throw error for malformed address"); - } catch (error) { - expect(typeof error).toBe("string"); - const errorObj = JSON.parse(error as string); - expect(errorObj).toMatchObject({ - data: "base58 error", - status: 400, - }); - } - }); - }); - - describe("Network configuration", () => { - it("should work with testnet configuration", () => { - expect(provider).toBeDefined(); - }); - - it("should handle mainnet configuration", () => { - const mainnetProvider = new BlockstreamProvider("mainnet"); - expect(mainnetProvider).toBeDefined(); - }); - }); -}); \ No newline at end of file diff --git a/packages/bitcoin/test/providers/blockstream/blockstream.test.ts b/packages/bitcoin/test/providers/blockstream/blockstream.test.ts deleted file mode 100644 index a644e26f2..000000000 --- a/packages/bitcoin/test/providers/blockstream/blockstream.test.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { BlockstreamProvider } from "../../../src/providers/blockstream"; - -describe("BlockstreamProvider", () => { - describe("Constructor", () => { - it("should create provider for mainnet", () => { - const provider = new BlockstreamProvider("mainnet"); - expect(provider).toBeDefined(); - }); - - it("should create provider for testnet", () => { - const provider = new BlockstreamProvider("testnet"); - expect(provider).toBeDefined(); - }); - - it("should default to mainnet when no network specified", () => { - const provider = new BlockstreamProvider(); - expect(provider).toBeDefined(); - }); - }); - - describe("IBitcoinProvider interface", () => { - let provider: BlockstreamProvider; - - beforeEach(() => { - provider = new BlockstreamProvider("testnet"); - }); - - it("should have all required IBitcoinProvider methods", () => { - expect(typeof provider.fetchAddress).toBe("function"); - expect(typeof provider.fetchAddressTransactions).toBe("function"); - expect(typeof provider.fetchAddressUTxOs).toBe("function"); - expect(typeof provider.fetchTransactionStatus).toBe("function"); - expect(typeof provider.submitTx).toBe("function"); - expect(typeof provider.fetchFeeEstimates).toBe("function"); - }); - - it("should have script methods available", () => { - // Test that script methods exist (implementation may vary) - expect(typeof provider.fetchScript).toBe("function"); - expect(typeof provider.fetchScriptTransactions).toBe("function"); - expect(typeof provider.fetchScriptUTxOs).toBe("function"); - }); - }); - - describe("Network configuration", () => { - it("should handle mainnet configuration", () => { - const provider = new BlockstreamProvider("mainnet"); - expect(provider).toBeDefined(); - }); - - it("should handle testnet configuration", () => { - const provider = new BlockstreamProvider("testnet"); - expect(provider).toBeDefined(); - }); - }); - - describe("API endpoint validation", () => { - let provider: BlockstreamProvider; - - beforeEach(() => { - provider = new BlockstreamProvider("testnet"); - }); - - it("should construct correct API URLs internally", () => { - // We can't directly test private axios instance, but we can verify - // the provider was created successfully with the correct network - expect(provider).toBeDefined(); - }); - }); -}); \ No newline at end of file diff --git a/packages/bitcoin/test/providers/maestro/maestro-integration.test.ts b/packages/bitcoin/test/providers/maestro/maestro-integration.test.ts deleted file mode 100644 index fdc4f7db0..000000000 --- a/packages/bitcoin/test/providers/maestro/maestro-integration.test.ts +++ /dev/null @@ -1,228 +0,0 @@ -import dotenv from "dotenv"; -import { MaestroProvider } from "../../../src/providers/maestro"; - -dotenv.config(); -const apiKey = process.env.MAESTRO_BITCOIN_API_KEY_TESTNET; - -// Skip tests if API key is not provided -const testCondition = apiKey ? describe : describe.skip; - -testCondition("Maestro Integration Tests", () => { - let provider: MaestroProvider; - - // Known testnet addresses with transaction history for testing - const testAddressWithHistory = "tb1q6rz28mcfaxtmd6v789l9rrlrusdprr9pqcpvkl"; - const testAddressEmpty = "tb1qcr8te4kr609gcawutmrza0j4xv80jy8zmfp6l0"; - - beforeAll(() => { - provider = new MaestroProvider({ - network: "testnet", - apiKey: apiKey!, - }); - }); - - describe("Address operations", () => { - it("should fetch address info successfully", async () => { - const addressInfo = await provider.fetchAddress(testAddressWithHistory); - - expect(addressInfo).toMatchObject({ - address: testAddressWithHistory, - chain_stats: expect.objectContaining({ - funded_txo_count: expect.any(Number), - funded_txo_sum: expect.any(Number), - spent_txo_count: expect.any(Number), - spent_txo_sum: expect.any(Number), - tx_count: expect.any(Number), - }), - mempool_stats: expect.objectContaining({ - funded_txo_count: expect.any(Number), - funded_txo_sum: expect.any(Number), - spent_txo_count: expect.any(Number), - spent_txo_sum: expect.any(Number), - tx_count: expect.any(Number), - }), - }); - }); - - it("should fetch address UTxOs", async () => { - const utxos = await provider.fetchAddressUTxOs(testAddressWithHistory); - - expect(Array.isArray(utxos)).toBe(true); - // UTxOs may be empty, but should return valid array - if (utxos.length > 0) { - expect(utxos[0]).toMatchObject({ - txid: expect.any(String), - vout: expect.any(Number), - value: expect.any(Number), - status: expect.objectContaining({ - confirmed: expect.any(Boolean), - }), - }); - } - }); - - it("should fetch address transactions", async () => { - const transactions = await provider.fetchAddressTransactions(testAddressWithHistory); - - expect(Array.isArray(transactions)).toBe(true); - // May have no transactions, but should return valid array - if (transactions.length > 0) { - expect(transactions[0]).toMatchObject({ - txid: expect.any(String), - version: expect.any(Number), - vin: expect.any(Array), - vout: expect.any(Array), - }); - } - }); - }); - - describe("Balance operations", () => { - it("should fetch address balance", async () => { - const balance = await provider.fetchAddressBalance(testAddressWithHistory); - - expect(balance).toMatchObject({ - data: expect.any(String), // Balance as string - }); - }); - - it("should get balance as BigInt", async () => { - const balance = await provider.getBalance(testAddressWithHistory); - - expect(typeof balance).toBe("bigint"); - expect(balance).toBeGreaterThanOrEqual(BigInt(0)); - }); - }); - - describe("Fee estimation", () => { - it("should fetch fee estimates with default blocks", async () => { - const feeRate = await provider.fetchFeeEstimates(); - expect(typeof feeRate).toBe("number"); - expect(feeRate).toBeGreaterThanOrEqual(0); // Can be 0 for testnet - }); - - it("should fetch fee estimates with custom blocks", async () => { - const feeRate = await provider.fetchFeeEstimates(12); - expect(typeof feeRate).toBe("number"); - expect(feeRate).toBeGreaterThanOrEqual(0); // Can be 0 for testnet - }); - }); - - describe("Satoshi Activity", () => { - it("should fetch satoshi activity without options", async () => { - const activity = await provider.fetchSatoshiActivity(testAddressWithHistory); - - expect(activity).toMatchObject({ - data: expect.any(Array), - }); - - if (activity.data.length > 0) { - expect(activity.data[0]).toMatchObject({ - tx_hash: expect.any(String), - }); - } - }); - - it("should fetch satoshi activity with pagination options", async () => { - const activity = await provider.fetchSatoshiActivity(testAddressWithHistory, { - order: "desc", - count: 5, - }); - - expect(activity).toMatchObject({ - data: expect.any(Array), - }); - - // Should respect count limit - expect(activity.data.length).toBeLessThanOrEqual(5); - }); - }); - - describe("Transaction operations", () => { - it("should return status for non-existent transactions", async () => { - const nonExistentTxId = "0000000000000000000000000000000000000000000000000000000000000000"; - - // Maestro returns valid status response for non-existent transactions - const status = await provider.fetchTransactionStatus(nonExistentTxId); - expect(status).toMatchObject({ - confirmed: false, - }); - }); - - it("should handle invalid transaction info requests", async () => { - const invalidTxId = "0000000000000000000000000000000000000000000000000000000000000000"; - - // May return error or empty response for non-existent transactions - try { - await provider.fetchTxInfo(invalidTxId); - } catch (error) { - expect(typeof error).toBe("string"); - } - }); - - it("should handle invalid transaction submission", async () => { - const invalidTxHex = "invalid-hex-data"; - - try { - await provider.submitTx(invalidTxHex); - fail("Expected error for invalid transaction hex"); - } catch (error) { - expect(typeof error).toBe("string"); - } - }); - }); - - describe("Generic HTTP methods", () => { - it("should handle GET requests", async () => { - // Test a valid endpoint - const result = await provider.get("/esplora/blocks/tip/height"); - expect(typeof result).toBe("number"); - expect(result).toBeGreaterThan(0); - }); - - it("should handle invalid GET requests", async () => { - try { - await provider.get("/invalid/endpoint"); - fail("Expected error for invalid endpoint"); - } catch (error) { - expect(typeof error).toBe("string"); - } - }); - - it("should handle invalid POST requests", async () => { - try { - await provider.post("/invalid/endpoint", {}); - fail("Expected error for invalid endpoint"); - } catch (error) { - expect(typeof error).toBe("string"); - } - }); - }); - - describe("Error handling", () => { - it("should handle invalid addresses gracefully", async () => { - const invalidAddress = "invalid-address-format"; - - try { - await provider.fetchAddress(invalidAddress); - fail("Expected error for invalid address"); - } catch (error) { - expect(typeof error).toBe("string"); - const errorObj = JSON.parse(error as string); - expect(errorObj.data).toBe("Invalid Bitcoin address"); - expect(errorObj.status).toBe(400); - } - }); - - it("should handle network timeouts and errors", async () => { - // Test with a malformed but syntactically valid address - const malformedAddress = "tb1qinvalidbutvalidlength000000000000000000"; - - try { - await provider.fetchAddress(malformedAddress); - } catch (error) { - expect(typeof error).toBe("string"); - } - }); - }); -}); \ No newline at end of file diff --git a/packages/bitcoin/test/providers/maestro/maestro.test.ts b/packages/bitcoin/test/providers/maestro/maestro.test.ts deleted file mode 100644 index 821302660..000000000 --- a/packages/bitcoin/test/providers/maestro/maestro.test.ts +++ /dev/null @@ -1,77 +0,0 @@ -import { MaestroProvider } from "../../../src/providers/maestro"; -import { MaestroConfig } from "../../../src/types/maestro"; - -describe("MaestroProvider", () => { - describe("Constructor", () => { - it("should create provider with config", () => { - const config: MaestroConfig = { - network: "testnet", - apiKey: "test-key", - }; - const provider = new MaestroProvider(config); - expect(provider.getNetwork()).toBe("testnet"); - }); - - it("should create provider with custom baseURL", () => { - const provider = new MaestroProvider("https://custom-api.com", "custom-key"); - expect(provider.getNetwork()).toBe("mainnet"); - }); - - it("should detect testnet from URL", () => { - const provider = new MaestroProvider("https://testnet-api.com", "test-key"); - expect(provider.getNetwork()).toBe("testnet"); - }); - }); - - describe("IBitcoinProvider interface", () => { - let provider: MaestroProvider; - - beforeEach(() => { - provider = new MaestroProvider({ - network: "mainnet", - apiKey: "test-key", - }); - }); - - it("should have all required IBitcoinProvider methods", () => { - expect(typeof provider.fetchAddress).toBe("function"); - expect(typeof provider.fetchAddressTransactions).toBe("function"); - expect(typeof provider.fetchAddressUTxOs).toBe("function"); - expect(typeof provider.fetchTransactionStatus).toBe("function"); - expect(typeof provider.submitTx).toBe("function"); - expect(typeof provider.fetchFeeEstimates).toBe("function"); - }); - - it("should throw error for unimplemented script methods", async () => { - await expect(provider.fetchScript("test-hash")).rejects.toThrow( - "fetchScript is not implemented" - ); - await expect(provider.fetchScriptTransactions("test-hash")).rejects.toThrow( - "fetchScriptTransactions is not implemented" - ); - await expect(provider.fetchScriptUTxOs("test-hash")).rejects.toThrow( - "fetchScriptUTxOs is not implemented" - ); - }); - }); - - describe("Additional methods", () => { - let provider: MaestroProvider; - - beforeEach(() => { - provider = new MaestroProvider({ - network: "mainnet", - apiKey: "test-key", - }); - }); - - it("should have additional Bitcoin-specific methods", () => { - expect(typeof provider.fetchSatoshiActivity).toBe("function"); - expect(typeof provider.fetchTxInfo).toBe("function"); - expect(typeof provider.fetchAddressBalance).toBe("function"); - expect(typeof provider.getBalance).toBe("function"); - expect(typeof provider.get).toBe("function"); - expect(typeof provider.post).toBe("function"); - }); - }); -}); \ No newline at end of file diff --git a/packages/bitcoin/test/wallets/embedded-core.test.ts b/packages/bitcoin/test/wallets/embedded-core.test.ts deleted file mode 100644 index 7031ca3a4..000000000 --- a/packages/bitcoin/test/wallets/embedded-core.test.ts +++ /dev/null @@ -1,216 +0,0 @@ -import { EmbeddedWallet } from "../../src/wallets/embedded"; -import { MaestroProvider } from "../../src/providers/maestro"; -import { UTxO, AddressInfo } from "../../src/types"; -import { SendTransferParams } from "../../src/types/wallet"; - -jest.mock("../../src/providers/maestro"); -const MockedMaestroProvider = MaestroProvider as jest.MockedClass; - -describe("EmbeddedWallet - Core Functionality", () => { - let mockProvider: jest.Mocked; - const testMnemonic = ["abandon", "abandon", "abandon", "abandon", "abandon", "abandon", "abandon", "abandon", "abandon", "abandon", "abandon", "about"]; - const testAddressTestnet = "tb1q6rz28mcfaxtmd6v789l9rrlrusdprr9pqcpvkl"; - const readOnlyAddress = "tb1q6rz28mcfaxtmd6v789l9rrlrusdprr9pqcpvkl"; - - beforeEach(() => { - jest.clearAllMocks(); - mockProvider = new MockedMaestroProvider({ - network: "mainnet", - apiKey: "test-key", - }) as jest.Mocked; - }); - - describe("getUTxOs", () => { - const mockUTxOs: UTxO[] = [ - { - txid: "d6ac4a5fcb9b8b4e5f9b7ac8b6d4c2b1a3f5e7d9c8b6a4f2e1d3c5b7a9", - vout: 0, - value: 100000, - status: { - confirmed: true, - block_height: 700000, - block_hash: "block-hash", - block_time: 1640000000, - }, - }, - ]; - - it("should fetch UTxOs from provider", async () => { - mockProvider.fetchAddressUTxOs.mockResolvedValue(mockUTxOs); - - const wallet = new EmbeddedWallet({ - network: "Testnet", - key: { type: "mnemonic", words: testMnemonic }, - provider: mockProvider, - }); - - const utxos = await wallet.getUTxOs(); - - expect(mockProvider.fetchAddressUTxOs).toHaveBeenCalledWith(testAddressTestnet); - expect(utxos).toEqual(mockUTxOs); - }); - - it("should throw error if provider is not defined", async () => { - const wallet = new EmbeddedWallet({ - network: "Testnet", - key: { type: "mnemonic", words: testMnemonic }, - }); - - await expect(wallet.getUTxOs()).rejects.toThrow( - "`provider` is not defined. Provide a BitcoinProvider." - ); - }); - }); - - describe("getBalance", () => { - const mockAddressInfo: AddressInfo = { - address: testAddressTestnet, - chain_stats: { - funded_txo_count: 5, - funded_txo_sum: 1000000, - spent_txo_count: 3, - spent_txo_sum: 500000, - tx_count: 8, - }, - mempool_stats: { - funded_txo_count: 1, - funded_txo_sum: 100000, - spent_txo_count: 0, - spent_txo_sum: 0, - tx_count: 1, - }, - }; - - it("should return balance information", async () => { - mockProvider.fetchAddress.mockResolvedValue(mockAddressInfo); - - const wallet = new EmbeddedWallet({ - network: "Testnet", - key: { type: "mnemonic", words: testMnemonic }, - provider: mockProvider, - }); - - const balance = await wallet.getBalance(); - - expect(balance).toEqual({ - confirmed: "500000", // funded_txo_sum - spent_txo_sum - unconfirmed: "100000", // mempool funded_txo_sum - spent_txo_sum - total: "600000", // confirmed + unconfirmed - }); - }); - - it("should throw error when provider missing", async () => { - const wallet = new EmbeddedWallet({ - network: "Testnet", - key: { type: "mnemonic", words: testMnemonic }, - }); - - await expect(wallet.getBalance()).rejects.toThrow( - "`provider` is not defined. Provide a BitcoinProvider for balance." - ); - }); - }); - - describe("sendTransfer", () => { - const mockUTxOs: UTxO[] = [ - { - txid: "d6ac4a5fcb9b8b4e5f9b7ac8b6d4c2b1a3f5e7d9c8b6a4f2e1d3c5b7a9", - vout: 0, - value: 1000000, - status: { - confirmed: true, - block_height: 700000, - block_hash: "block-hash", - block_time: 1640000000, - }, - }, - ]; - - const transferParams: SendTransferParams = { - recipients: [ - { - address: "bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4", - amount: 500000, - }, - ], - }; - - it("should attempt to build and send transfer", async () => { - mockProvider.fetchAddressUTxOs.mockResolvedValue(mockUTxOs); - mockProvider.fetchFeeEstimates.mockResolvedValue(10); - mockProvider.submitTx.mockResolvedValue("transfer-txid"); - - const wallet = new EmbeddedWallet({ - network: "Testnet", - key: { type: "mnemonic", words: testMnemonic }, - provider: mockProvider, - }); - - // This will likely throw due to PSBT construction, but we're testing the flow - await expect(wallet.sendTransfer(transferParams)).rejects.toThrow(); - }); - - it("should throw error for read-only wallet", async () => { - const wallet = new EmbeddedWallet({ - network: "Testnet", - key: { type: "address", address: readOnlyAddress }, - provider: mockProvider, - }); - - await expect(wallet.sendTransfer(transferParams)).rejects.toThrow( - "Cannot send transactions with a read-only wallet." - ); - }); - - it("should throw error when provider missing", async () => { - const wallet = new EmbeddedWallet({ - network: "Testnet", - key: { type: "mnemonic", words: testMnemonic }, - }); - - await expect(wallet.sendTransfer(transferParams)).rejects.toThrow( - "`provider` is not defined. Provide a BitcoinProvider for sending." - ); - }); - }); - - describe("Coin selection", () => { - const mockUtxos: UTxO[] = [ - { txid: "tx1", vout: 0, value: 100000, status: { confirmed: true, block_height: 700000, block_hash: "hash1", block_time: 1640000000 } }, - { txid: "tx2", vout: 0, value: 50000, status: { confirmed: true, block_height: 700001, block_hash: "hash2", block_time: 1640000001 } }, - { txid: "tx3", vout: 0, value: 200000, status: { confirmed: true, block_height: 700002, block_hash: "hash3", block_time: 1640000002 } }, - ]; - - it("should select UTxOs using largest-first algorithm", () => { - const wallet = new EmbeddedWallet({ - network: "Testnet", - key: { type: "mnemonic", words: testMnemonic }, - provider: mockProvider, - }); - - // Test private method through reflection - const selectUtxos = (wallet as any)._selectUtxosLargestFirst; - if (selectUtxos) { - const result = selectUtxos.call(wallet, mockUtxos, 150000, 10); - expect(result.selectedUtxos).toHaveLength(1); - expect(result.selectedUtxos[0].value).toBe(200000); - expect(result.change).toBeGreaterThan(0); - } - }); - - it("should throw error for insufficient funds", () => { - const wallet = new EmbeddedWallet({ - network: "Testnet", - key: { type: "mnemonic", words: testMnemonic }, - provider: mockProvider, - }); - - const selectUtxos = (wallet as any)._selectUtxosLargestFirst; - if (selectUtxos) { - expect(() => selectUtxos.call(wallet, mockUtxos, 500000, 10)).toThrow( - "Insufficient funds for transaction." - ); - } - }); - }); -}); \ No newline at end of file diff --git a/packages/bitcoin/test/wallets/embedded-derivation.test.ts b/packages/bitcoin/test/wallets/embedded-derivation.test.ts deleted file mode 100644 index 26c7a6b52..000000000 --- a/packages/bitcoin/test/wallets/embedded-derivation.test.ts +++ /dev/null @@ -1,181 +0,0 @@ -import { EmbeddedWallet } from "../../src/wallets/embedded"; -import { MaestroProvider } from "../../src/providers/maestro"; -import { CreateWalletOptions } from "../../src/types/wallet"; - -jest.mock("../../src/providers/maestro"); -const MockedMaestroProvider = MaestroProvider as jest.MockedClass; - -describe("EmbeddedWallet - Address Derivation", () => { - let mockProvider: jest.Mocked; - const testMnemonic = ["abandon", "abandon", "abandon", "abandon", "abandon", "abandon", "abandon", "abandon", "abandon", "abandon", "abandon", "about"]; - const testAddressTestnet = "tb1q6rz28mcfaxtmd6v789l9rrlrusdprr9pqcpvkl"; - const testAddressMainnet = "bc1qcr8te4kr609gcawutmrza0j4xv80jy8z306fyu"; - const readOnlyAddress = "tb1qcr8te4kr609gcawutmrza0j4xv80jy8zmfp6l0"; - - beforeEach(() => { - jest.clearAllMocks(); - mockProvider = new MockedMaestroProvider({ - network: "mainnet", - apiKey: "test-key", - }) as jest.Mocked; - }); - - describe("getAddresses", () => { - it("should return correct testnet address", async () => { - const wallet = new EmbeddedWallet({ - network: "Testnet", - key: { type: "mnemonic", words: testMnemonic }, - provider: mockProvider, - }); - - const addresses = await wallet.getAddresses(); - - expect(addresses).toHaveLength(1); - expect(addresses[0]).toMatchObject({ - address: testAddressTestnet, - publicKey: expect.any(String), - purpose: "payment", - addressType: "p2wpkh", - network: "testnet", - walletType: "software", - }); - }); - - it("should return correct mainnet address", async () => { - const wallet = new EmbeddedWallet({ - network: "Mainnet", - key: { type: "mnemonic", words: testMnemonic }, - provider: mockProvider, - }); - - const addresses = await wallet.getAddresses(); - - expect(addresses).toHaveLength(1); - expect(addresses[0]).toMatchObject({ - address: testAddressMainnet, - publicKey: expect.any(String), - purpose: "payment", - addressType: "p2wpkh", - network: "mainnet", - walletType: "software", - }); - }); - - it("should handle read-only wallet", async () => { - const wallet = new EmbeddedWallet({ - network: "Testnet", - key: { type: "address", address: readOnlyAddress }, - provider: mockProvider, - }); - - const addresses = await wallet.getAddresses(); - - expect(addresses).toHaveLength(1); - expect(addresses[0]).toMatchObject({ - address: readOnlyAddress, - publicKey: "", - purpose: "payment", - addressType: "p2wpkh", - network: "testnet", - walletType: "software", - }); - }); - - it("should work with custom derivation path", async () => { - const wallet = new EmbeddedWallet({ - network: "Testnet", - key: { type: "mnemonic", words: testMnemonic }, - path: "m/84'/1'/0'/0/5", // Custom path - provider: mockProvider, - }); - - const addresses = await wallet.getAddresses(); - expect(addresses).toHaveLength(1); - expect(addresses[0]?.addressType).toBe("p2wpkh"); - }); - }); - - describe("getPublicKey", () => { - it("should return public key for mnemonic wallet", () => { - const wallet = new EmbeddedWallet({ - network: "Testnet", - key: { type: "mnemonic", words: testMnemonic }, - provider: mockProvider, - }); - - const publicKey = wallet.getPublicKey(); - expect(publicKey).toMatch(/^[0-9a-f]{66}$/i); - }); - - it("should throw error for read-only wallet", () => { - const wallet = new EmbeddedWallet({ - network: "Testnet", - key: { type: "address", address: readOnlyAddress }, - provider: mockProvider, - }); - - expect(() => wallet.getPublicKey()).toThrow( - "Public key is not available for read-only wallets." - ); - }); - }); - - describe("getNetworkId", () => { - it("should return 1 for mainnet", () => { - const wallet = new EmbeddedWallet({ - network: "Mainnet", - key: { type: "mnemonic", words: testMnemonic }, - provider: mockProvider, - }); - - expect(wallet.getNetworkId()).toBe(1); - }); - - it("should return 0 for testnet", () => { - const wallet = new EmbeddedWallet({ - network: "Testnet", - key: { type: "mnemonic", words: testMnemonic }, - provider: mockProvider, - }); - - expect(wallet.getNetworkId()).toBe(0); - }); - - it("should return 2 for regtest", () => { - const wallet = new EmbeddedWallet({ - network: "Regtest", - key: { type: "mnemonic", words: testMnemonic }, - provider: mockProvider, - }); - - expect(wallet.getNetworkId()).toBe(2); - }); - }); - - describe("Static methods", () => { - describe("brew", () => { - it("should generate mnemonic with default strength", () => { - const mnemonic = EmbeddedWallet.brew(); - expect(mnemonic).toHaveLength(12); - expect(mnemonic.every(word => typeof word === "string")).toBe(true); - }); - - it("should generate mnemonic with custom strength", () => { - const mnemonic = EmbeddedWallet.brew(256); - expect(mnemonic).toHaveLength(24); - }); - - it("should throw error for invalid strength", () => { - expect(() => EmbeddedWallet.brew(100)).toThrow( - "Invalid strength. Must be one of: 128, 160, 192, 224, 256." - ); - }); - - it("should generate different mnemonics on each call", () => { - const mnemonic1 = EmbeddedWallet.brew(); - const mnemonic2 = EmbeddedWallet.brew(); - expect(mnemonic1).not.toEqual(mnemonic2); - }); - }); - }); -}); \ No newline at end of file diff --git a/packages/bitcoin/test/wallets/embedded-signing.test.ts b/packages/bitcoin/test/wallets/embedded-signing.test.ts deleted file mode 100644 index 22400971e..000000000 --- a/packages/bitcoin/test/wallets/embedded-signing.test.ts +++ /dev/null @@ -1,225 +0,0 @@ -import { EmbeddedWallet, verifySignature } from "../../src/wallets/embedded"; -import { MaestroProvider } from "../../src/providers/maestro"; -import { SignPsbtParams } from "../../src/types/wallet"; - -jest.mock("../../src/providers/maestro"); -const MockedMaestroProvider = MaestroProvider as jest.MockedClass; - -describe("EmbeddedWallet - Message Signing", () => { - let mockProvider: jest.Mocked; - const testMnemonic = ["abandon", "abandon", "abandon", "abandon", "abandon", "abandon", "abandon", "abandon", "abandon", "abandon", "abandon", "about"]; - const testAddressTestnet = "tb1qcr8te4kr609gcawutmrza0j4xv80jy8zmfp6l0"; - const testAddressMainnet = "bc1qcr8te4kr609gcawutmrza0j4xv80jy8z306fyu"; - const readOnlyAddress = "tb1qcr8te4kr609gcawutmrza0j4xv80jy8zmfp6l0"; - - beforeEach(() => { - jest.clearAllMocks(); - mockProvider = new MockedMaestroProvider({ - network: "mainnet", - apiKey: "test-key", - }) as jest.Mocked; - - mockProvider.submitTx.mockResolvedValue("mock-tx-id"); - }); - - describe("signMessage", () => { - it("should sign message with real values", async () => { - const wallet = new EmbeddedWallet({ - network: "Mainnet", - key: { type: "mnemonic", words: testMnemonic }, - provider: mockProvider, - }); - - const result = await wallet.signMessage({ - address: testAddressMainnet, - message: "abc", - protocol: "ECDSA" - }); - - expect(result).toMatchObject({ - address: testAddressMainnet, - messageHash: "caaad4da7a8a3b6e7437e933603a9ee4bf338ecdda896e06cb9a4d07660e83d1", - signature: "INXaCK0Dsd5ykeKtMvRY/Wo2Nnse1hasn4DdujqxKVwQVfif0wPMIP8nyfid7chB/Y+P1nUPnMdBFRNWnqVtJA==", - }); - - // Verify signature is cryptographically valid - const publicKey = wallet.getPublicKey(); - const isValid = verifySignature("abc", result.signature, publicKey); - expect(isValid).toBe(true); - }); - - it("should use default ECDSA protocol when not specified", async () => { - const wallet = new EmbeddedWallet({ - network: "Mainnet", - key: { type: "mnemonic", words: testMnemonic }, - provider: mockProvider, - }); - - const result = await wallet.signMessage({ - address: testAddressMainnet, - message: "test message", - }); - - expect(result).toMatchObject({ - address: testAddressMainnet, - messageHash: expect.any(String), - signature: expect.any(String), - }); - - // Verify signature format - expect(() => Buffer.from(result.signature, "base64")).not.toThrow(); - expect(result.messageHash).toMatch(/^[0-9a-f]+$/i); - }); - - it("should throw error for BIP322 protocol", async () => { - const wallet = new EmbeddedWallet({ - network: "Mainnet", - key: { type: "mnemonic", words: testMnemonic }, - provider: mockProvider, - }); - - await expect(wallet.signMessage({ - address: testAddressMainnet, - message: "test", - protocol: "BIP322", - })).rejects.toThrow("BIP322 protocol is not yet supported"); - }); - - it("should throw error for read-only wallet", async () => { - const wallet = new EmbeddedWallet({ - network: "Testnet", - key: { type: "address", address: readOnlyAddress }, - provider: mockProvider, - }); - - await expect(wallet.signMessage({ - address: readOnlyAddress, - message: "test", - })).rejects.toThrow("Cannot sign data with a read-only wallet."); - }); - - it("should handle different message types", async () => { - const wallet = new EmbeddedWallet({ - network: "Mainnet", - key: { type: "mnemonic", words: testMnemonic }, - provider: mockProvider, - }); - - const messages = ["hello", "123", "special chars: !@#$%", ""]; - - for (const message of messages) { - const result = await wallet.signMessage({ - address: testAddressMainnet, - message, - }); - - expect(result).toMatchObject({ - address: testAddressMainnet, - messageHash: expect.any(String), - signature: expect.any(String), - }); - - // Verify each signature - const publicKey = wallet.getPublicKey(); - const isValid = verifySignature(message, result.signature, publicKey); - expect(isValid).toBe(true); - } - }); - - it("should sign message on testnet", async () => { - const wallet = new EmbeddedWallet({ - network: "Testnet", - key: { type: "mnemonic", words: testMnemonic }, - provider: mockProvider, - }); - - const result = await wallet.signMessage({ - address: testAddressTestnet, - message: "testnet message", - protocol: "ECDSA" - }); - - expect(result).toMatchObject({ - address: testAddressTestnet, - messageHash: expect.any(String), - signature: expect.any(String), - }); - - // Verify signature works - const publicKey = wallet.getPublicKey(); - const isValid = verifySignature("testnet message", result.signature, publicKey); - expect(isValid).toBe(true); - }); - }); - - describe("signPsbt", () => { - it("should handle invalid PSBT format", async () => { - const wallet = new EmbeddedWallet({ - network: "Mainnet", - key: { type: "mnemonic", words: testMnemonic }, - provider: mockProvider, - }); - - await expect(wallet.signPsbt({ - psbt: "invalid-base64-data", - signInputs: { [testAddressMainnet]: [0] }, - broadcast: false, - })).rejects.toThrow(); - }); - - it("should handle real PSBT from Bitcoin Core", async () => { - const wallet = new EmbeddedWallet({ - network: "Testnet", - key: { type: "mnemonic", words: testMnemonic }, - provider: mockProvider, - }); - - // Real PSBT from Bitcoin Core multisig example - await expect(wallet.signPsbt({ - psbt: "cHNidP8BAFMCAAAAAQfhbKNA1FRjpH+onW13OEqKIWZCpiF4g1orGXVsH8pEAQAAAAD+////AV1VAAAAAAAAF6kUNgjRCMLYCa5FpfX/Hiio6FjPlemHAAAAAAABASvwVQAAAAAAACIAIP2mSKAKgi8Fe1ssH+zSHj+bdc64GY+QI1re719EAgYdAQVpUiECEXI48hpauJFQc/7pBoGupdsLt2CFBMdqBMmErS/C774hAkkKCbBnfVx28cGq4alyzpHNgadhXhvx+hdqv9xrQQM9IQK08CnGk58nlXP4i/7R3wl5qz3Ldi6akUHA5PNUGBLyllOuAAEAFgAUL/cVRY4VRc6TSlXq0wnca5QjxnUA", - signInputs: { [testAddressTestnet]: [0] }, - broadcast: false, - })).rejects.toThrow(); // Expected to fail due to key mismatch - }); - - it("should throw error for read-only wallet", async () => { - const wallet = new EmbeddedWallet({ - network: "Testnet", - key: { type: "address", address: readOnlyAddress }, - provider: mockProvider, - }); - - await expect(wallet.signPsbt({ - psbt: "cHNidP8BADM...", - signInputs: { [readOnlyAddress]: [0] }, - broadcast: false, - })).rejects.toThrow("Cannot sign transactions with a read-only wallet."); - }); - }); - - describe("verifySignature utility", () => { - it("should verify valid signature", () => { - // Test with known good values - const message = "abc"; - const signature = "INXaCK0Dsd5ykeKtMvRY/Wo2Nnse1hasn4DdujqxKVwQVfif0wPMIP8nyfid7chB/Y+P1nUPnMdBFRNWnqVtJA=="; - const publicKey = "03ba1cf3b34a9f1c5d8e1e8a6d2b3c4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f"; - - const result = verifySignature(message, signature, publicKey); - expect(typeof result).toBe("boolean"); - }); - - it("should return false for invalid signature", () => { - const message = "abc"; - const signature = "invalid-signature"; - const publicKey = "invalid-public-key"; - - const result = verifySignature(message, signature, publicKey); - expect(result).toBe(false); - }); - - it("should handle exceptions gracefully", () => { - const result = verifySignature("", "", ""); - expect(result).toBe(false); - }); - }); -}); \ No newline at end of file diff --git a/packages/bitcoin/test/wallets/embedded.test.ts b/packages/bitcoin/test/wallets/embedded.test.ts deleted file mode 100644 index c14075888..000000000 --- a/packages/bitcoin/test/wallets/embedded.test.ts +++ /dev/null @@ -1,104 +0,0 @@ -import { EmbeddedWallet } from "../../src/wallets/embedded"; -import { MaestroProvider } from "../../src/providers/maestro"; - -jest.mock("../../src/providers/maestro"); -const MockedMaestroProvider = MaestroProvider as jest.MockedClass; - -describe("EmbeddedWallet - Constructor & Basic Functionality", () => { - let mockProvider: jest.Mocked; - const testMnemonic = ["abandon", "abandon", "abandon", "abandon", "abandon", "abandon", "abandon", "abandon", "abandon", "abandon", "abandon", "about"]; - const readOnlyAddress = "tb1qcr8te4kr609gcawutmrza0j4xv80jy8zmfp6l0"; - - beforeEach(() => { - jest.clearAllMocks(); - mockProvider = new MockedMaestroProvider({ - network: "mainnet", - apiKey: "test-key", - }) as jest.Mocked; - }); - - describe("Constructor", () => { - it("should create wallet with mnemonic for mainnet", () => { - const wallet = new EmbeddedWallet({ - network: "Mainnet", - key: { type: "mnemonic", words: testMnemonic }, - provider: mockProvider, - }); - - expect(wallet).toBeDefined(); - expect(wallet.getNetworkId()).toBe(1); - }); - - it("should create wallet with mnemonic for testnet", () => { - const wallet = new EmbeddedWallet({ - network: "Testnet", - key: { type: "mnemonic", words: testMnemonic }, - provider: mockProvider, - }); - - expect(wallet).toBeDefined(); - expect(wallet.getNetworkId()).toBe(0); - }); - - it("should create wallet with mnemonic for regtest", () => { - const wallet = new EmbeddedWallet({ - network: "Regtest", - key: { type: "mnemonic", words: testMnemonic }, - provider: mockProvider, - }); - - expect(wallet).toBeDefined(); - expect(wallet.getNetworkId()).toBe(2); - }); - - it("should create read-only wallet with address", () => { - const wallet = new EmbeddedWallet({ - network: "Testnet", - key: { type: "address", address: readOnlyAddress }, - provider: mockProvider, - }); - - expect(wallet).toBeDefined(); - expect(() => wallet.getPublicKey()).toThrow( - "Public key is not available for read-only wallets." - ); - }); - - it("should create wallet with custom derivation path", () => { - const wallet = new EmbeddedWallet({ - network: "Testnet", - key: { type: "mnemonic", words: testMnemonic }, - path: "m/84'/1'/0'/0/5", - provider: mockProvider, - }); - - expect(wallet).toBeDefined(); - }); - - it("should create wallet without provider", () => { - const wallet = new EmbeddedWallet({ - network: "Testnet", - key: { type: "mnemonic", words: testMnemonic }, - }); - - expect(wallet).toBeDefined(); - }); - }); - - describe("Network validation", () => { - it("should handle all supported networks", () => { - const networks = ["Mainnet", "Testnet", "Regtest"] as const; - const expectedNetworkIds = [1, 0, 2]; - - networks.forEach((network, index) => { - const wallet = new EmbeddedWallet({ - network, - key: { type: "mnemonic", words: testMnemonic }, - provider: mockProvider, - }); - - expect(wallet.getNetworkId()).toBe(expectedNetworkIds[index]); - }); - }); - }); -}); \ No newline at end of file diff --git a/packages/bitcoin/tsconfig.json b/packages/bitcoin/tsconfig.json deleted file mode 100644 index 64eb65145..000000000 --- a/packages/bitcoin/tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "compilerOptions": { - "target": "ES5", - "module": "CommonJS", - "lib": ["ES6"], - "strict": true, - "esModuleInterop": true, - "outDir": "./dist" - }, - "include": ["src"] -} \ No newline at end of file diff --git a/packages/bitcoin/tsup.config.ts b/packages/bitcoin/tsup.config.ts deleted file mode 100644 index c1c5649f4..000000000 --- a/packages/bitcoin/tsup.config.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { defineConfig } from "tsup"; - -export default defineConfig({ - entry: ["src/index.ts"], - format: ["esm", "cjs"], - dts: true, - splitting: false, - sourcemap: true, - clean: true, - target: "esnext", - external: [ - "bip32", - "ecpair", - "@bitcoin-js/tiny-secp256k1-asmjs", - "bitcoinjs-lib", - ], - noExternal: ["@meshsdk/bitcoin"], - esbuildOptions(options) { - options.define = { - global: "globalThis", - process: JSON.stringify({ - env: { - NODE_ENV: "production", - }, - }), - }; - options.platform = "browser"; - }, -}); \ No newline at end of file diff --git a/packages/mesh-hydra/README.md b/packages/mesh-hydra/README.md deleted file mode 100644 index a9ea340ac..000000000 --- a/packages/mesh-hydra/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# mesh-hydra - -Scaling solution for Cardano that increases transaction throughput and ensures cost efficiency while maintaining rigorous security. - -[meshjs.dev/hydra](https://meshjs.dev/hydra) - -## Get started - -```bash -npm install @meshsdk/hydra -``` diff --git a/packages/mesh-hydra/jest.config.ts b/packages/mesh-hydra/jest.config.ts deleted file mode 100644 index e8877e345..000000000 --- a/packages/mesh-hydra/jest.config.ts +++ /dev/null @@ -1,20 +0,0 @@ -import type { Config } from "jest"; - -const jestConfig: Config = { - clearMocks: true, - maxWorkers: 1, - testEnvironment: "node", - testMatch: ["**/*.test.ts"], - setupFiles: ["dotenv/config"], - preset: "ts-jest", - moduleNameMapper: { - "^(\\.{1,2}/.*)\\.js$": "$1", - }, - transform: { - "^.+\\.[jt]s?$": "ts-jest", - }, - transformIgnorePatterns: ["/node_modules/(?!@meshsdk/.*)"], - passWithNoTests: true, -}; - -export default jestConfig; diff --git a/packages/mesh-hydra/package.json b/packages/mesh-hydra/package.json deleted file mode 100644 index a7386c38d..000000000 --- a/packages/mesh-hydra/package.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "@meshsdk/hydra", - "version": "1.9.0-beta.98", - "description": "Mesh Hydra package", - "main": "./dist/index.cjs", - "browser": "./dist/index.js", - "module": "./dist/index.js", - "types": "./dist/index.d.ts", - "type": "module", - "exports": { - ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.js", - "require": "./dist/index.cjs" - } - }, - "files": [ - "dist/**" - ], - "scripts": { - "build:mesh": "tsup src/index.ts --format esm,cjs --dts", - "clean": "rm -rf .turbo && rm -rf dist && rm -rf node_modules", - "dev": "tsup src/index.ts --format esm,cjs --watch --dts", - "format": "prettier --check . --ignore-path ../../.gitignore", - "lint": "eslint", - "pack": "npm pack --pack-destination=./dist", - "test": "jest" - }, - "dependencies": { - "@meshsdk/common": "1.9.0-beta.98", - "@meshsdk/core": "1.9.0-beta.98", - "@meshsdk/core-cst": "1.9.0-beta.98", - "axios": "^1.7.2" - }, - "devDependencies": { - "@meshsdk/configs": "*", - "@swc/core": "^1.10.7", - "eslint": "^8.57.0", - "tsup": "^8.0.2", - "typescript": "^5.3.3" - }, - "prettier": "@meshsdk/configs/prettier" -} diff --git a/packages/mesh-hydra/src/hydra-alice.test.ts b/packages/mesh-hydra/src/hydra-alice.test.ts deleted file mode 100644 index 19daa75a3..000000000 --- a/packages/mesh-hydra/src/hydra-alice.test.ts +++ /dev/null @@ -1,101 +0,0 @@ -import { BlockfrostProvider, MeshTxBuilder, MeshWallet } from "@meshsdk/core"; - -import { HydraInstance } from "./hydra-instance"; -import { HydraProvider } from "./hydra-provider"; - -describe("Hydra Provider", () => { - let provider: HydraProvider; - let blockchainProvider: BlockfrostProvider; - let hInstance: HydraInstance; - let wallet: MeshWallet; - let txBuilder: MeshTxBuilder; - - beforeEach(() => { - provider = new HydraProvider({ - httpUrl: "http://localhost:4001", - }); - - blockchainProvider = new BlockfrostProvider(""); - const seedPhrase = [""]; - - hInstance = new HydraInstance({ - provider: provider, - fetcher: blockchainProvider, - submitter: blockchainProvider, - }); - - wallet = new MeshWallet({ - networkId: 0, - fetcher: blockchainProvider, - submitter: blockchainProvider, - key: { - type: "mnemonic", - words: seedPhrase, - }, - }); - }); - - it("should make and submit a valid tx", async () => { - await provider.connect(); - //await provider.init(); - - const pp = await provider.fetchProtocolParameters(); - const utxos = await provider.fetchUTxOs(); - - txBuilder = new MeshTxBuilder({ - fetcher: blockchainProvider, - submitter: blockchainProvider, - params: pp, - isHydra: true, - }); - const unsignedTx = await txBuilder - .txIn( - "cd8d9b66df467df82cf6df10a0dbd24847a27ac280e1033e509a8bc0de8d2579", - 2, - ) - .txOut("", [ - { - unit: "lovelace", - quantity: "30000000", - }, - ]) - .selectUtxosFrom(utxos) - .setFee("0") - .changeAddress("") - .setNetwork("preprod") - .complete(); - - console.log(unsignedTx); - - const tx = await hInstance.commitBlueprint( - "ad16a3a415763e8662469c868038a659f5076a174633323894666f4c9d2e60d1", - 1, - { - cborHex: unsignedTx, - description: "a new blueprint tx", - type: "Tx ConwayEra", - }, - ); - console.log("tx", tx); - const signedTx = await wallet.signTx(tx, true); - const txHash = await wallet.submitTx(signedTx); - console.log("commit txhash:", txHash); - expect(typeof txHash).toBe("string"); - }); - - it("should fail to fetch UTXOs for an invalid address", async () => { - await provider.connect(); - await expect( - provider.fetchAddressUTxOs("invalid_address"), - ).rejects.toThrow(); - }); - - it("should throw error when submitting an invalid transaction", async () => { - await provider.connect(); - await expect(provider.submitTx("invalid_tx")).rejects.toThrow(); - }); - it("should close head appropriately", async () => { - await provider.connect(); - await provider.close(); - }); -}); diff --git a/packages/mesh-hydra/src/hydra-bob.test.ts b/packages/mesh-hydra/src/hydra-bob.test.ts deleted file mode 100644 index d0c262831..000000000 --- a/packages/mesh-hydra/src/hydra-bob.test.ts +++ /dev/null @@ -1,122 +0,0 @@ -import { BlockfrostProvider, MeshTxBuilder, MeshWallet } from "@meshsdk/core"; - -import { HydraInstance } from "./hydra-instance"; -import { HydraProvider } from "./hydra-provider"; - -describe("Hydra Provider", () => { - let provider: HydraProvider; - let blockchainProvider: BlockfrostProvider; - let hInstance: HydraInstance; - let wallet: MeshWallet; - let txBuilder: MeshTxBuilder; - - beforeEach(() => { - provider = new HydraProvider({ - httpUrl: "http://localhost:4002", - }); - - blockchainProvider = new BlockfrostProvider(""); - - hInstance = new HydraInstance({ - provider: provider, - fetcher: blockchainProvider, - submitter: blockchainProvider, - }); - - wallet = new MeshWallet({ - networkId: 0, - fetcher: provider, - submitter: provider, - key: { - type: "mnemonic", - words: [], - }, - }); - }); - - it("should make and submit a valid tx", async () => { - await provider.connect(); - //await provider.init(); - - const pp = await provider.fetchProtocolParameters(); - const utxos = await wallet.getUtxos(); - - txBuilder = new MeshTxBuilder({ - fetcher: provider, - submitter: provider, - params: pp, - isHydra: true, - }); - const unsignedTx = await txBuilder - .txIn( - "cd8d9b66df467df82cf6df10a0dbd24847a27ac280e1033e509a8bc0de8d2579", - 2, - ) - .txOut("", [ - { - unit: "lovelace", - quantity: "30000000", - }, - ]) - .selectUtxosFrom(utxos) - .changeAddress("") - .setNetwork("preprod") - .complete(); - - const signedTx = await wallet.signTx(unsignedTx, true); - const txHash = await wallet.submitTx(signedTx); - console.log("commit txhash:", txHash); - expect(typeof txHash).toBe("string"); - }); - - it("should fetch UTXOs and build a transaction", async () => { - await provider.connect(); - const utxo = await provider.fetchUTxOs(); - expect(utxo).toBeDefined(); - - const aliceheadUtxo = await provider.fetchAddressUTxOs( - "addr_test1vrlkv8dryg2lcmxjd8adpyd20vmnvwm8cjxv7fh6rpyve9qnmsq0l", - ); - expect(aliceheadUtxo).toBeDefined(); - - const txbuilder = new MeshTxBuilder({ - fetcher: provider, - submitter: provider, - isHydra: true, - }); - - const unsignedTx = await txbuilder - .txOut( - "addr_test1vr5r6y3wy09kd5tnr97azvq0klccc47uthve4s4phw7auvs0jyw3c", - [ - { - unit: "lovelace", - quantity: "50000000", - }, - ], - ) - .changeAddress( - "addr_test1vrlkv8dryg2lcmxjd8adpyd20vmnvwm8cjxv7fh6rpyve9qnmsq0l", - ) - .setNetwork("preprod") - .selectUtxosFrom(aliceheadUtxo) - .complete(); - - expect(unsignedTx).toBeDefined(); - - const signedTx = await wallet.signTx(unsignedTx); - await provider.submitTx(signedTx); - }); - - it("should fail to fetch UTXOs for an invalid address", async () => { - await provider.connect(); - await expect( - provider.fetchAddressUTxOs("invalid_address"), - ).rejects.toThrow(); - }); - - it("should throw error when submitting an invalid transaction", async () => { - await provider.connect(); - await expect(provider.submitTx("invalid_tx")).rejects.toThrow(); - }); -}); diff --git a/packages/mesh-hydra/src/hydra-connection.ts b/packages/mesh-hydra/src/hydra-connection.ts deleted file mode 100644 index 91856a5d6..000000000 --- a/packages/mesh-hydra/src/hydra-connection.ts +++ /dev/null @@ -1,110 +0,0 @@ -import { EventEmitter } from "events"; -import { hydraStatus, getHydraStatus } from "./types/hydra/hydraStatus"; -import WebSocket, { MessageEvent } from "isomorphic-ws"; - -export class HydraConnection extends EventEmitter { - constructor({ - httpUrl, - eventEmitter, - history = false, - address, - wsUrl, - }: { - httpUrl: string; - eventEmitter: EventEmitter; - history?: boolean; - address?: string; - wsUrl?: string; - }) { - super(); - const _wsUrl = wsUrl ? wsUrl : httpUrl.replace("http", "ws"); - const _history = `history=${history ? "yes" : "no"}`; - const _address = address ? `&address=${address}` : ""; - this._websocketUrl = `${_wsUrl}/?${_history}${_address}`; - this._eventEmitter = eventEmitter; - } - - async connect(): Promise { - this._websocket = new WebSocket(this._websocketUrl); - - this._websocket.onopen = () => { - this._connected = true; - console.log("Hydra websocket connected"); - }; - - this._websocket.onerror = (error) => { - console.error("Hydra websocket error:", error); - this._connected = false; - }; - - this._websocket.onclose = (code) => { - console.error("Hydra websocket closed:", code.code, code.reason); - this._connected = false; - }; - - this._websocket.onmessage = (data: MessageEvent) => { - const message = JSON.parse(data.data as string); - this._eventEmitter.emit("onmessage", message); - this.processStatus(message); - }; - } - - send(data: unknown): void { - let send = false; - - const sendData = () => { - if (this._websocket?.readyState === WebSocket.OPEN) { - this._websocket.send(JSON.stringify(data)); - send = true; - return true; - } - return false; - }; - - const interval = setInterval(() => { - if (!send && sendData()) { - clearInterval(interval); - clearTimeout(timeout); - } - }, 1000); - - const timeout = setTimeout(() => { - if (!send) { - console.log(`Hydra websocket failed to send ${JSON.stringify(data)}`); - clearInterval(interval); - } - }, 5000); - } - - async disconnect(timeout?: number): Promise { - return new Promise((resolve) => { - setTimeout(() => { - if (this._websocket) { - this._websocket.onclose = (event: import("ws").CloseEvent) => { - console.log("Hydra websocket disconnected:", event?.reason); - this._connected = false; - resolve(); - }; - this._websocket.close(1000, "initiated disconnect"); - } else { - this._connected = false; - resolve(); - } - }, timeout); - }); - } - - async processStatus(message: {}) { - let status: hydraStatus | null = null; - if ((status = getHydraStatus(message)) && status !== null) { - this._status = status; - this._eventEmitter.emit("onstatuschange", status); - } - } - - _websocket: WebSocket | undefined; - _status: hydraStatus = "IDLE"; - _websocketUrl: string; - private readonly _eventEmitter: EventEmitter; - private _connected: boolean = false; -} diff --git a/packages/mesh-hydra/src/hydra-instance.ts b/packages/mesh-hydra/src/hydra-instance.ts deleted file mode 100644 index 2d454e3d6..000000000 --- a/packages/mesh-hydra/src/hydra-instance.ts +++ /dev/null @@ -1,210 +0,0 @@ -import { IFetcher, ISubmitter, UTxO } from "@meshsdk/common"; -import { HydraProvider } from "./hydra-provider"; -import { hydraTransaction, hydraUTxO, hydraUTxOs } from "./types"; - -/** - * HydraInstance is a tool for interacting with a Hydra head. - * @constructor - * @param provider - The Hydra provider instance for interacting with the Hydra head. - * @param fetcher - The fetcher instance for fetching UTxOs and other data. - * @param submitter - The submitter instance for submitting transactions. - * - * @example - * - * ```tsx - * const provider = new HydraProvider({ - * httpUrl: "", - * }); - * - * const instance = new HydraInstance({ - * provider: provider, - * fetcher: blockchainProvider, - * submitter: blockchainProvider, - * }); - * ``` - */ -export class HydraInstance { - provider: HydraProvider; - fetcher: IFetcher; - submitter: ISubmitter; - - constructor({ - provider, - fetcher, - submitter, - }: { - provider: HydraProvider; - fetcher: IFetcher; - submitter: ISubmitter; - }) { - this.provider = provider; - this.fetcher = fetcher; - this.submitter = submitter; - } - - private async _commitToHydra(payload: any): Promise { - const commit = await this.provider.buildCommit(payload, { - "Content-Type": "application/json", - }); - return commit.cborHex; - } - - /** - * If you don't want to commit any funds and only want to receive on layer 2, - * you can request an empty commit transaction to open the head: - * @example - * ```tsx - * const commit = await hydraInstance.commitEmpty(); - * const submitTx = await wallet.submitTx(commit); - * console.log("submitTx", submitTx); - * ``` - * - * @returns The transaction CBOR hex ready to be submitted. - */ - async commitEmpty(): Promise { - return this._commitToHydra({}); - } - - /** - * To commit funds to the head, choose which UTxO you would like to make available on layer 2. - * The function returns the transaction CBOR hex ready to be partially signed. - * @param txHash - * @param txIndex - * @returns commitTransactionHex - */ - - async commitFunds(txHash: string, outputIndex: number): Promise { - const utxo = (await this.fetcher.fetchUTxOs(txHash, outputIndex))[0]; - if (!utxo) { - throw new Error("UTxO not found"); - } - const hydraUtxo = await hydraUTxO(utxo); - return this._commitToHydra({ [txHash + "#" + outputIndex]: hydraUtxo }); - } - - /** - * Allows Commit UTxOs as ScriptUTxOs in a Cardano transaction blueprint to the Hydra head. - * - * https://hydra.family/head-protocol/docs/how-to/commit-blueprint - * @param txHash - The transaction hash of the UTxO to be committed as a blueprint. - * @param outputIndex - The output index of the UTxO to be committed. - * @param hydraTransaction - The Cardano transaction in text envelope format, containing: - * - type: The type of the transaction (e.g., "Unwitnessed Tx ConwayEra"). - * - description: (Optional) A human-readable description of the transaction. - * - cborHex: The CBOR-encoded unsigned transaction. - * @returns The function returns the transaction CBOR hex ready to be partially signed. - * @example - * ```tsx - * const commitTx = await instance.commitBlueprint(txHash, outputIndex, { - * type: "Tx ConwayEra", - * cborHex: unsignedTx, - * description: "Commit Blueprint", - * }); - * ``` - */ - async commitBlueprint( - txHash: string, - outputIndex: number, - transaction: hydraTransaction - ): Promise { - const utxo = (await this.fetcher.fetchUTxOs(txHash, outputIndex))[0]; - if (!utxo) { - throw new Error("UTxO not found"); - } - const hydraUtxo = await hydraUTxO(utxo); - return this._commitToHydra({ - blueprintTx: { - ...transaction, - }, - utxo: { - [txHash + "#" + outputIndex]: hydraUtxo, - }, - }); - } - - /** - * Commit multiple UTxOs in a Cardano transaction blueprint to the Hydra head. - * - * @param utxos - Array of UTxO to commit, each with txHash and outputIndex - * @param transaction - The Cardano transaction in text envelope format, containing: - * - type: The type of the transaction (e.g., "Unwitnessed Tx ConwayEra"). - * - description: (Optional) A human-readable description of the transaction. - * - cborHex: The CBOR-encoded unsigned transaction. - * @returns The function returns the transaction CBOR hex ready to be partially signed. - * @example - * ```tsx - * const commitTx = await instance.commitBlueprintUTxOs([ - * { txHash: "abc123...", outputIndex: 0 }, - * { txHash: "def456...", outputIndex: 1 }, - * ], { - * type: "Tx ConwayEra", - * cborHex: unsignedTx, - * description: "Commit Multiple Blueprint", - * }); - * ``` - */ - async commitBlueprintUTxOs( - txIn: { txHash: string; outputIndex: number }[], - transaction: hydraTransaction - ): Promise { - const utxo : UTxO[] = []; - for (const { txHash, outputIndex } of txIn) { - const utxos = await this.fetcher.fetchUTxOs(txHash, outputIndex); - if (!utxos.length) { - throw new Error(`UTxO not found for ${txHash}#${outputIndex}`); - } - utxo.push(...utxos); - } - - return this._commitToHydra({ - blueprintTx: { - ...transaction, - }, - utxo: await hydraUTxOs(utxo), - }); - } - - /** - * Increment commit funds to the head, choose which UTxO you would like to make available on layer 2. - * The function returns the transaction CBOR hex ready to be partially signed. - * @param txHash - * @param txIndex - * @returns commitTransactionHex - */ - - async incrementalCommitFunds(txHash: string, outputIndex: number) { - return this.commitFunds(txHash, outputIndex); - } - - /** - * Increment a Cardano transaction blueprint to the Hydra head. - * - * This method allows you to increase a commit in the Cardano text envelope format - * (i.e., a JSON object containing a 'type' and a 'cborHex' field) as a blueprint UTxO - * to the Hydra head. This is useful for advanced use cases such as reference scripts, - * inline datums, or other on-chain features that require a transaction context. - * - * - * https://hydra.family/head-protocol/docs/how-to/commit-blueprint - * - * @param txHash - The transaction hash of the UTxO to be committed as a blueprint. - * @param outputIndex - The output index of the UTxO to be committed. - * @param hydraTransaction - The Cardano transaction in text envelope format, containing: - * - type: The type of the transaction (e.g., "Unwitnessed Tx ConwayEra"). - * - description: (Optional) A human-readable description of the transaction. - * - cborHex: The CBOR-encoded unsigned transaction. - * @returns A promise that resolves to the CBOR hex ready to be partially signed. - */ - async incrementalBlueprintCommit( - txHash: string, - outputIndex: number, - transaction: hydraTransaction - ) { - return this.commitBlueprint(txHash, outputIndex, { - type: transaction.type, - cborHex: transaction.cborHex, - description: transaction.description, - txId: transaction.txId, - }); - } -} diff --git a/packages/mesh-hydra/src/hydra-provider.ts b/packages/mesh-hydra/src/hydra-provider.ts deleted file mode 100644 index ce3fe34d0..000000000 --- a/packages/mesh-hydra/src/hydra-provider.ts +++ /dev/null @@ -1,850 +0,0 @@ -import { EventEmitter } from "events"; -import axios, { AxiosInstance, RawAxiosRequestHeaders } from "axios"; - -import { - AccountInfo, - Asset, - AssetMetadata, - BlockInfo, - castProtocol, - GovernanceProposalInfo, - IFetcher, - IFetcherOptions, - ISubmitter, - POLICY_ID_LENGTH, - Protocol, - TransactionInfo, - UTxO, -} from "@meshsdk/common"; - -import { HydraConnection } from "./hydra-connection"; -import { - clientInput, - ClientMessage, - hydraStatus, - hydraTransaction, - hydraUTxO, - hydraUTxOs, - ServerOutput, -} from "./types"; -import { handleHydraErrors } from "./types/events/handler"; -import { - PostTxOnChainFailed, - TransactionSubmitted, -} from "./types/events/post-tx-failed"; -import { seenSnapshot, snapshotSideLoad } from "./types/events/snapshot"; -import { parseHttpError } from "./utils"; - -/** - * HydraProvider is a tool for administrating & interacting with Hydra Heads. - * - * Usage: - * ``` - * import { HydraProvider } from "@meshsdk/hydra"; - * - * const hydraProvider = new HydraProvider({httpUrl:'http://123.45.67.890:4001'}); - */ -export class HydraProvider implements IFetcher, ISubmitter { - private _connection: HydraConnection; - private readonly _eventEmitter: EventEmitter; - private readonly _axiosInstance: AxiosInstance; - private _messageCallback: - | ((data: ServerOutput | ClientMessage) => void) - | null = null; - private _messageQueue: (ServerOutput | ClientMessage)[] = []; - - constructor({ - httpUrl, - history = false, - address, - wsUrl, - }: { - httpUrl: string; - history?: boolean; - address?: string; - wsUrl?: string; - }) { - this._eventEmitter = new EventEmitter(); - this._connection = new HydraConnection({ - httpUrl: httpUrl, - eventEmitter: this._eventEmitter, - history: history, - address: address, - wsUrl: wsUrl, - }); - this._axiosInstance = axios.create({ - baseURL: httpUrl, - }); - - this._eventEmitter.on( - "onmessage", - (message: ServerOutput | ClientMessage) => { - this._messageQueue.push(message); - - if (this._messageCallback) { - this._messageCallback(message); - } - }, - ); - } - - /** - * Connects to the Hydra Head. - */ - async connect() { - this._connection.connect(); - } - - /** - * Disconnects from the Hydra Head. - * - * @param timeout Optional timeout in milliseconds (defaults to 5 minutes) to wait for the disconnect operation to complete. - * If not provided, the default disconnect timeout will be used. - * Useful for customizing how long to wait before disconnecting. - */ - async disconnect(timeout: number = 300_000) { - if (timeout < 60_000) { - throw new Error("Timeout must be at least 60,000 ms (1 minute)"); - } - await this._connection.disconnect(timeout); - } - - /** - * Commands sent to the Hydra node. - * - * Accepts one of the following commands: - * - Init: init() - * - Abort: abort() - * - NewTx: newTx() - * - Decommit: decommit() - * - Close: close() - * - Contest: contest() - * - Fanout: fanout() - */ - - /** - * Initializes a new Head. This command is a no-op when a Head is already open and the server will output an CommandFailed message should this happen. - */ - /** - * Initialize the head when status is Idle. - */ - async init(): Promise { - return new Promise((resolve, reject) => { - this.onMessage((msg) => { - if (msg.tag === "Greetings" && msg.headStatus === "Idle") { - this._connection.send(clientInput.init); - } - if (msg.tag === "HeadIsInitializing") { - resolve(); - } - if (handleHydraErrors(msg as ClientMessage, reject)) { - return; - } - }); - }); - } - - /** - * Aborts a head before it is opened. This can only be done before all participants have committed. Once opened, the head can't be aborted anymore but it can be closed using: `Close`. - */ - async abort(): Promise { - return new Promise((resolve, reject) => { - this.onMessage((msg) => { - if ( - msg.tag === "HeadIsInitializing" || - (msg.tag === "Greetings" && msg.headStatus === "Initializing") - ) { - this._connection.send(clientInput.abort); - } - if (msg.tag === "HeadIsAborted") { - resolve(); - } - if (handleHydraErrors(msg as ClientMessage, reject)) { - return; - } - }); - }); - } - - /** - * Submit a transaction through the Hydra head. - * The transaction must be well-formed and valid; otherwise, it will not be broadcast. - * - * @param transaction The transaction object to submit. Should have the following structure: - * - type: The type of the transaction - * - description (optional) - * - cborHex: - * @returns txhash - * @example - * ```tsx - * await hydraProvider.newTx({ - * type: "Tx ConwayEra", - * description: "", - * cborHex: unsignedTx, - * }); - * ``` - */ - async newTx(transaction: hydraTransaction): Promise { - return new Promise((resolve, reject) => { - this.onMessage((msg) => { - if ( - msg.tag === "HeadIsOpen" || - (msg.tag === "Greetings" && msg.headStatus === "Open") - ) { - const payload = clientInput.newTx(transaction); - this._connection.send(payload); - } - - if (msg.tag === "TxValid" && msg.transactionId) { - resolve(msg.transactionId); - } else if (msg.tag === "TxInvalid") { - reject( - new Error( - `Transaction invalid: ${JSON.stringify(msg.validationError)}`, - ), - ); - } - }); - }); - } - - /** - * Attempt to recover a deposit transaction in the Hydra head by its transaction ID. - * @param txHash - The deposit txId or txHash of the deposit transaction to recover. - * - * @example - * ```ts - * await hydraProvider.recover(txId); - * ``` - */ - async recover(txHash: string): Promise { - return new Promise((resolve, reject) => { - this.onMessage((msg) => { - if ( - msg.tag === "HeadIsOpen" || - (msg.tag === "Greetings" && msg.headStatus === "Open") - ) { - const payload = clientInput.recover(txHash); - this._connection.send(payload); - } - - if (msg.tag === "CommitRecovered" && msg.recoveredTxId === txHash) { - resolve(msg.recoveredTxId); - } - if (handleHydraErrors(msg as ClientMessage, reject)) { - return; - } - }); - }); - } - - /** - * Request to decommit a UTxO from a Head making UTxOavailable on the layer 1. - * - * @param transaction The transaction object to decommit. Should have the following structure: - * - type: The type of the transaction. Allowed values: "Tx ConwayEra", "Unwitnessed Tx ConwayEra", "Witnessed Tx ConwayEra". - * - description: (Optional) A human-readable description of the transaction. - * - cborHex: The base16-encoded CBOR representation of the transaction. - * - * @example - * ```tsx - * await hydraProvider.decommit({ - * type: "Tx ConwayEra", - * description: "", - * cborHex: unsignedTx, - * }); - * ``` - */ - async decommit(transaction: hydraTransaction): Promise { - return new Promise((resolve, reject) => { - this.onMessage(async (msg) => { - if ( - msg.tag === "HeadIsOpen" || - (msg.tag === "Greetings" && msg.headStatus === "Open") - ) { - const payload = clientInput.decommit(transaction); - const tx: hydraTransaction = await this.publishDecommit(payload, { - "Content-Type": "application/json", - }); - resolve(tx.cborHex); - } - if (handleHydraErrors(msg as ClientMessage, reject)) { - return; - } - }); - }); - } - - /** - * Decommits a UTxO from the Hydra Head incrementally, making it available on layer 1. - * - * @param transaction The transaction object to decommit. - * @returns Promise resolving to the transaction hash or result. - */ - async incrementalDecommit(transaction: hydraTransaction) { - return this.decommit(transaction); - } - - /** - * Terminate a head with the latest known snapshot. This effectively moves the head from the Open state to the Close state where the contestation phase begin. As a result of closing a head, no more transactions can be submitted via NewTx. - */ - async close() { - return new Promise((resolve, reject) => { - this.onMessage((message) => { - if ( - message.tag === "HeadIsOpen" || - (message.tag === "Greetings" && message.headStatus === "Open") - ) { - this._connection.send(clientInput.close); - } - if (message.tag === "HeadIsClosed") { - resolve(message); - } - if (handleHydraErrors(message as ClientMessage, reject)) { - reject(new Error("Failed to close head")); - return; - } - }); - }); - } - - /** - * Challenge the latest snapshot announced as a result of a head closure from another participant. Note that this necessarily contest with the latest snapshot known of your local Hydra node. Participants can only contest once. - */ - async contest() { - return new Promise((resolve, reject) => { - this.onMessage((msg) => { - if ( - msg.tag === "HeadIsClosed" || - (msg.tag === "Greetings" && msg.headStatus === "Closed") - ) - this._connection.send(clientInput.contest); - if (msg.tag === "Greetings") { - resolve(msg.headStatus === "Closed"); - } - if (handleHydraErrors(msg as ClientMessage, reject)) { - reject(new Error("Failed to contest head")); - return; - } - }); - }); - } - - /** - * Finalize a head after the contestation period passed. - * This will distribute the final (as closed and maybe contested) head state back on the layer 1. - */ - async fanout() { - return new Promise((resolve, reject) => { - this.onMessage((msg) => { - if ( - msg.tag === "ReadyToFanout" || - (msg.tag === "Greetings" && msg.headStatus === "Closed") - ) { - this._connection.send(clientInput.fanout); - if (msg.tag === "Greetings") { - resolve(msg.headStatus === "Final"); - } - } - if (handleHydraErrors(msg as ClientMessage, reject)) { - reject(new Error("Failed to fanout head")); - return; - } - }); - }); - } - - /** - * FETCHERS and SUBMITTERS - */ - - /** - * Fetches the UTXOs available in the current Hydra Head snapshot. - * @param address - The address to filter UTXOs by (returns only UTXOs with this address if provided) - * @param asset - Optional asset unit to filter UTXOs (returns only UTXOs containing this asset if provided) - * @returns - Array of UTxOs matching the address and asset if provided - */ - async fetchAddressUTxOs(address: string, asset?: string): Promise { - const utxos = await this.fetchUTxOs(); - const utxo = utxos.filter((utxo) => utxo.output.address === address); - if (asset) { - return utxo.filter((utxo) => - utxo.output.amount.some((a) => a.unit === asset), - ); - } - return utxo; - } - - /** - * Fetch the latest protocol parameters. - * @returns - Protocol parameters - */ - async fetchProtocolParameters(): Promise { - return await this.subscribeProtocolParameters(); - } - - /** - * Get UTxOs for a given hash. - * @param hash - * @param index - * @returns - Array of UTxOs - */ - async fetchUTxOs(hash?: string, index?: number): Promise { - const snapshotUTxOs = await this.subscribeSnapshotUtxo(); - - const outputsPromises: Promise[] = []; - snapshotUTxOs.forEach((utxo) => { - if (hash === undefined || utxo.input.txHash === hash) { - outputsPromises.push(Promise.resolve(utxo)); - } - }); - const outputs = await Promise.all(outputsPromises); - - if (index !== undefined) { - return outputs.filter((utxo) => utxo.input.outputIndex === index); - } - - return outputs; - } - - /** - * Fetches the addresses and quantities for a given Cardano asset. - * - * @param asset - The asset unit in Cardano format, defined as a concatenation of the policy ID and asset name in hex - * - * @returns the address and quantity for each UTxO holding the specified asset. - */ - async fetchAssetAddresses( - asset: string, - ): Promise<{ address: string; quantity: string }[]> { - const utxos = await this.fetchUTxOs(); - const addressesWithQuantity: { address: string; quantity: string }[] = []; - for (const utxo of utxos) { - const found = utxo.output.amount.find((a) => a.unit === asset); - if (found) { - addressesWithQuantity.push({ - address: utxo.output.address, - quantity: found.quantity, - }); - } - } - if (addressesWithQuantity.length === 0 || undefined) { - throw new Error(`No address found holding asset: ${asset}`); - } - return addressesWithQuantity; - } - - /** - * Fetches the list of assets for a given policy ID. - * @param policyId The policy ID to fetch assets for - * @returns The list of assets in the policyId collection - */ - async fetchCollectionAssets(policyId: string): Promise<{ assets: Asset[] }> { - if (policyId.length !== POLICY_ID_LENGTH) { - throw new Error( - "Invalid policyId length: must be a 56-character hexadecimal string", - ); - } - - const utxos = await this.fetchUTxOs(); - const filteredUtxos = utxos.filter((utxo) => - utxo.output.amount.some( - (a) => a.unit.slice(0, POLICY_ID_LENGTH) === policyId, - ), - ); - if (filteredUtxos.length === 0 || undefined) { - throw new Error(`No assets found in the head snapshot: ${policyId}`); - } - return { - assets: filteredUtxos.flatMap((utxo) => - utxo.output.amount - .filter( - (a) => - a.unit.length > policyId.length && a.unit.startsWith(policyId), - ) - .map((a) => ({ - unit: a.unit, - quantity: a.quantity, - })), - ), - }; - } - - /** - * Submit a transaction to the Hydra node. Note, unlike other providers,this returns a transaction hash (txId). - * @param cborHex - The transaction in CBOR hex format usually the unsigned transaction - * @returns The transaction hash (txId) - */ - async submitTx(cborHex: string): Promise { - try { - const txHash = await this.newTx({ - type: "Tx ConwayEra", - description: "", - cborHex, - }); - return txHash; - } catch (error) { - throw parseHttpError(error); - } - } - /** - * Submit a transaction to the Cardano L1 network. - * @param transaction - The transaction to submit - * @returns The transaction cborHex - */ - - async submitL1Tx( - transaction: hydraTransaction, - ): Promise { - const tx = await this.publishCardanoTransaction(transaction, { - "Content-Type": "application/json", - }); - return new Promise((resolve) => { - resolve(tx as TransactionSubmitted); - this.onMessage((msg) => { - if (handleHydraErrors(msg as ClientMessage, resolve)) { - return; - } - }); - }); - } - - /* - SNAPSHOT & COMMIT OPERATIONS - */ - - /** - * Obtain a list of pending deposit transaction ID's. - */ - async getPendingCommits() { - const commit = await this.get("/commits"); - return commit; - } - - /** - * Get the latest snapshot signed by the Hydra node. - * This returns snapshot information. - * - * @returns {Promise} The latest seen snapshot information. - * @throws {Error} If the latest snapshot cannot be retrieved or parsed. - */ - async getLatestSeenSnapshot(): Promise { - try { - const snapshot = await this.subscribeSeenSnapshot(); - if (!snapshot) { - throw new Error( - "Unable to fetch the latest seen snapshot from Hydra node", - ); - } - return snapshot; - } catch (error) { - throw new Error( - `Error fetching latest seen snapshot: ${error instanceof Error ? error.message : String(error)}`, - ); - } - } - - /** - * This is used to get the snapshop from a healthy node ready to - * sideload into a stuck or unhealthy node - * @returns - */ - async getSideloadedSnapshot(): Promise { - const data: snapshotSideLoad = await this.get(`/snapshot`); - let snapshot = {}; - - if (data.tag === "InitialSnapshot") { - const utxos: UTxO[] = []; - for (const [key, value] of Object.entries(data.initialUTxO)) { - const utxo = hydraUTxO.toUTxO(value as unknown as hydraUTxO, key); - utxos.push(utxo); - } - - snapshot = { - tag: "InitialSnapshot", - headId: data.headId, - initialUTxO: utxos, - }; - } - if (data.tag === "ConfirmedSnapshot") { - const utxos: UTxO[] = []; - const utxoToCommit: UTxO[] = []; - const utxoToDecommit: UTxO[] = []; - - for (const [key, value] of Object.entries(data.snapshot.utxo)) { - const utxo = hydraUTxO.toUTxO(value as unknown as hydraUTxO, key); - utxos.push(utxo); - } - - if (data.snapshot.utxoToCommit) { - for (const [key, value] of Object.entries(data.snapshot.utxoToCommit)) { - const utxo = hydraUTxO.toUTxO(value as unknown as hydraUTxO, key); - utxoToCommit.push(utxo); - } - } - - if (data.snapshot.utxoToDecommit) { - for (const [key, value] of Object.entries( - data.snapshot.utxoToDecommit, - )) { - const utxo = hydraUTxO.toUTxO(value as unknown as hydraUTxO, key); - utxoToDecommit.push(utxo); - } - } - - snapshot = { - tag: "ConfirmedSnapshot", - snapshot: { - ...data.snapshot, - utxo: utxos as UTxO[], - utxoToCommit: utxoToCommit.length ? utxoToCommit : null, - utxoToDecommit: utxoToDecommit.length ? utxoToDecommit : null, - }, - signatures: data.signatures, - }; - } - - return snapshot as snapshotSideLoad; - } - - /** - * sync or sideLoadSnapshot to the hydra unhealthy node - * - */ - async syncSideloadSnapshot(snapshot: snapshotSideLoad): Promise { - let hydraSnapshot = {}; - if (snapshot.tag === "InitialSnapshot") { - const initialUTxO = snapshot.initialUTxO.map((utxo) => hydraUTxO(utxo)); - hydraSnapshot = { - tag: "InitialSnapshot", - headId: snapshot.headId, - initialUTxO: await Promise.all(initialUTxO), - }; - } - - if (snapshot.tag === "ConfirmedSnapshot") { - const utxo = await hydraUTxOs(snapshot.snapshot.utxo); - const utxoToCommit = snapshot.snapshot.utxoToCommit - ? await hydraUTxOs(snapshot.snapshot.utxoToCommit) - : null; - const utxoToDecommit = snapshot.snapshot.utxoToDecommit - ? await hydraUTxOs(snapshot.snapshot.utxoToDecommit) - : null; - hydraSnapshot = { - tag: "ConfirmedSnapshot", - snapshot: { - ...snapshot.snapshot, - utxo: utxo, - utxoToCommit: utxoToCommit, - utxoToDecommit: utxoToDecommit, - }, - signatures: snapshot.signatures, - }; - } - await this.post("/snapshot", hydraSnapshot, { - "Content-Type": "application/json", - }); - - return new Promise((resolve) => { - this.onMessage((msg) => { - if (msg.tag === "SnapshotConfirmed") { - resolve(msg.snapshot); - } - }); - }); - } - - /** - * OPERATIONS - */ - - /** - * Draft a commit transaction, which can be completed and later submitted to the L1 network. - */ - async buildCommit(payload: unknown, headers: RawAxiosRequestHeaders = {}) { - return await this.post("/commit", payload, headers); - } - - /** - * - * gets last seen snapshot in the head - */ - - async subscribeSeenSnapshot(): Promise { - return this.get("/snapshot/last-seen"); - } - - /** - * A set of unspent transaction outputs. - * @returns - Array of UTxOs - */ - async subscribeSnapshotUtxo(): Promise { - const data = await this.get(`snapshot/utxo`); - const utxos: UTxO[] = []; - for (const [key, value] of Object.entries(data)) { - const utxo = hydraUTxO.toUTxO(value as hydraUTxO, key); - utxos.push(utxo); - } - return utxos; - } - - /** - * Provide decommit transaction that needs to be applicable to the Hydra's local ledger state. Specified transaction outputs will be available on layer 1 after decommit is successfully processed. - */ - async publishDecommit( - payload: unknown, - headers: RawAxiosRequestHeaders = {}, - ) { - return await this.post("/decommit", payload, headers); - } - - /** - * Cardano transaction to be submitted to the L1 network. Accepts transactions encoded as Base16 CBOR string, TextEnvelope type or JSON. - */ - async publishCardanoTransaction( - payload: unknown, - headers: RawAxiosRequestHeaders = {}, - ): Promise { - return await this.post("/cardano-transaction", payload, headers); - } - - /** - * Get protocol parameters. - * @returns - Protocol parameters - */ - async subscribeProtocolParameters(): Promise { - const data = await this.get("protocol-parameters"); - - const protocolParams = castProtocol({ - coinsPerUtxoSize: data.utxoCostPerByte, - collateralPercent: data.collateralPercentage, - maxBlockExMem: data.maxBlockExecutionUnits.memory, - maxBlockExSteps: data.maxBlockExecutionUnits.steps, - maxBlockHeaderSize: data.maxBlockHeaderSize, - maxBlockSize: data.maxBlockBodySize, - maxCollateralInputs: data.maxCollateralInputs, - maxTxExMem: data.maxTxExecutionUnits.memory, - maxTxExSteps: data.maxTxExecutionUnits.steps, - maxTxSize: data.maxTxSize, - maxValSize: data.maxValueSize, - minFeeA: data.txFeePerByte, - minFeeB: data.txFeeFixed, - minPoolCost: data.minPoolCost, - poolDeposit: data.stakePoolDeposit, - priceMem: data.executionUnitPrices.priceMemory, - priceStep: data.executionUnitPrices.priceSteps, - }); - - return protocolParams; - } - - onMessage(callback: (data: ServerOutput | ClientMessage) => void) { - this._messageCallback = callback; - this._messageQueue.forEach((message) => { - callback(message); - }); - } - onStatusChange(callback: (status: hydraStatus) => void) { - this._eventEmitter.on("onstatuschange", (status) => { - callback(status); - }); - } - - /** - * Useful utility functions. - */ - - /** - * A generic method to fetch data from a URL. - * @param url - The URL to fetch data from - * @returns - The data fetched from the URL - */ - async get(url: string): Promise { - try { - const { data, status } = await this._axiosInstance.get(url); - if (status === 200 || status == 202) { - return data; - } - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * A generic method to post data to a URL. - * @param url - The URL to post data to - * @param payload - The data to post - * @returns - The response from the URL - */ - async post( - url: string, - payload: unknown, - headers: RawAxiosRequestHeaders, - ): Promise { - try { - const { data, status } = await this._axiosInstance.post(url, payload, { - headers, - }); - if (status === 200 || status == 202) { - return data; - } - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * NOT SUPPORTED FETCHERS - */ - - /** - * Note: Not supported in Hydra L2. - */ - async fetchAccountInfo(address?: string): Promise { - throw new Error(`Not supported in Hydra L2.`); - } - - /** - * Not supported in Hydra L2. - */ - async fetchAddressTxs( - address?: string, - option?: IFetcherOptions, - ): Promise { - throw new Error("Not supported in Hydra L2."); - } - - /** - * Not supported in Hydra L2. - */ - async fetchAssetMetadata(asset?: string): Promise { - throw new Error("Not supported in Hydra L2."); - } - - /** - * Note: Not supported in Hydra L2. - */ - async fetchBlockInfo(hash?: string): Promise { - throw new Error("Not supported in Hydra L2."); - } - - /** - * Not supported in Hydra L2. - */ - async fetchGovernanceProposal( - txHash?: string, - certIndex?: number, - ): Promise { - throw new Error("Not supported in Hydra L2."); - } - - /** - * Not supported in Hydra L2. - */ - async fetchTxInfo(hash: string): Promise { - const utxos = await this.fetchUTxOs(hash); - throw new Error("Method not implemented."); - } -} diff --git a/packages/mesh-hydra/src/index.ts b/packages/mesh-hydra/src/index.ts deleted file mode 100644 index a75f79eac..000000000 --- a/packages/mesh-hydra/src/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./hydra-instance"; -export * from "./hydra-provider"; diff --git a/packages/mesh-hydra/src/types/client-input.ts b/packages/mesh-hydra/src/types/client-input.ts deleted file mode 100644 index 76cab1ccd..000000000 --- a/packages/mesh-hydra/src/types/client-input.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { ConfirmedSnapshot, InitialSnapshot } from "./events/snapshot"; -import { hydraTransaction } from "./hydra/hydraTransaction"; - -export type ClientInput = - | { tag: "Init" } - | { tag: "Abort" } - | { tag: "NewTx"; transaction: hydraTransaction } - | { tag: "Recover", recoverTxId: string } - | { tag: "Decommit"; transaction: hydraTransaction } - | { tag: "Close" } - | { tag: "Contest" } - | { tag: "Fanout" } - | { tag: "SideLoadSnapshot"; snapshot: InitialSnapshot | ConfirmedSnapshot }; - -export const clientInput = { - init: { tag: "Init" } as ClientInput, - abort: { tag: "Abort" } as ClientInput, - newTx: (transaction: hydraTransaction): ClientInput => ({ - tag: "NewTx", - transaction, - }), - recover: (txhash: string): ClientInput => ( { tag: "Recover", recoverTxId: txhash }), - decommit: (transaction: hydraTransaction): ClientInput => ({ - tag: "Decommit", - transaction, - }), - close: { tag: "Close" } as ClientInput, - contest: { tag: "Contest" } as ClientInput, - fanout: { tag: "Fanout" } as ClientInput, - sideLoadSnapshot: ( - snapshot: InitialSnapshot | ConfirmedSnapshot - ): ClientInput => ({ - tag: "SideLoadSnapshot", - snapshot: snapshot, - }), -}; diff --git a/packages/mesh-hydra/src/types/client-message.ts b/packages/mesh-hydra/src/types/client-message.ts deleted file mode 100644 index 6152553d5..000000000 --- a/packages/mesh-hydra/src/types/client-message.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { CommandFailed } from "./events/command-failed"; -import { PostTxOnChainFailed } from "./events/post-tx-failed"; - -export type ClientMessage = PostTxOnChainFailed | CommandFailed; \ No newline at end of file diff --git a/packages/mesh-hydra/src/types/events/command-failed.ts b/packages/mesh-hydra/src/types/events/command-failed.ts deleted file mode 100644 index 18dfec97e..000000000 --- a/packages/mesh-hydra/src/types/events/command-failed.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { ClientInput } from "../client-input"; -import { HydraParty } from "../hydra/hydra"; - -export type CommandFailed = { - tag: "CommandFailed"; - clientInput: ClientInput; -}; - -export type InvalidInput = { - tag: "InvalidInput"; - reason: string; - input: string; -}; - -export type IgnoredHeadInitializing = { - tag: "IgnoredHeadInitializing"; - headId: string; - contestationPeriod: number; - parties: HydraParty; - participants: string[]; - seq: number; - timestamp: string; -}; - -export type CommandFailedEvent = - | CommandFailed - | InvalidInput - | IgnoredHeadInitializing; diff --git a/packages/mesh-hydra/src/types/events/commit.ts b/packages/mesh-hydra/src/types/events/commit.ts deleted file mode 100644 index a3f7baf0a..000000000 --- a/packages/mesh-hydra/src/types/events/commit.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { HydraParty } from "../hydra/hydra"; -import { HydraUTxOs } from "../hydra/hydraUTxOs"; - -export type CommitApproved = { - tag: "CommitApproved"; - headId: string; - utxoToCommit: HydraUTxOs; - seq: number; - timestamp: string; -}; - -export type CommitRecorded = { - tag: "CommitRecorded"; - headId: string; - utxoToCommit: HydraUTxOs; - pendingDeposit: string; - deadline: string; - seq: number; - timestamp: string; -}; - -export type CommitFinalized = { - tag: "CommitFinalized"; - headId: string; - depositTxId: string; - seq: number; - timestamp: string; -}; - -export type CommitRecovered = { - tag: "CommitRecovered"; - headId: string; - recoveredUTxO: HydraUTxOs; - recoveredTxId: string; - seq: number; - timestamp: string; -}; - -export type Committed = { - tag: "Committed"; - parties: HydraParty[]; - utxo: HydraUTxOs; - seq: number; - timestamp: string; -}; - -export type CommitEvent = - | CommitRecorded - | CommitApproved - | CommitFinalized - | CommitRecovered; diff --git a/packages/mesh-hydra/src/types/events/decommit.ts b/packages/mesh-hydra/src/types/events/decommit.ts deleted file mode 100644 index 97a8c0e35..000000000 --- a/packages/mesh-hydra/src/types/events/decommit.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { hydraTransaction } from "../hydra/hydraTransaction"; -import { HydraUTxOs } from "../hydra/hydraUTxOs"; - -type DecommitTxInvalid = { - tag: "DecommitTxInvalid"; - localUTxO: HydraUTxOs; - validationError: { - reason: string; - [key: string]: unknown; - }; -}; - -type DecommitAlreadyInFlight = { - tag: "DecommitAlreadyInFlight"; - otherDecommitTxId: string; -}; - -export type DecommitInvalid = { - tag: "DecommitInvalid"; - headId: string; - decommitTx: hydraTransaction; - decommitInvalidReason: DecommitTxInvalid | DecommitAlreadyInFlight; -}; - -export type DecommitRequested = { - tag: "DecommitRequested"; - headId: string; - decommitTx: hydraTransaction; - utxoToDecommit: HydraUTxOs; - seq: number; - timestamp: string; -}; - -export type DecommitApproved = { - tag: "DecommitApproved"; - headId: string; - seq: number; - timestamp: string; -}; - -export type DecommitFinalized = { - tag: "DecommitFinalized"; - headId: string; - seq: number; - timestamp: string; -}; - -export type DecommitEvent = - | DecommitInvalid - | DecommitTxInvalid - | DecommitAlreadyInFlight - | DecommitRequested - | DecommitApproved - | DecommitFinalized; \ No newline at end of file diff --git a/packages/mesh-hydra/src/types/events/deposit.ts b/packages/mesh-hydra/src/types/events/deposit.ts deleted file mode 100644 index 4f45d9fdb..000000000 --- a/packages/mesh-hydra/src/types/events/deposit.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { HydraUTxOs } from "../hydra/hydraUTxOs"; - -export type DepositStatus = - | { tag: "Unknown" } - | { tag: "Active" } - | { tag: "Expired" }; - -export type Deposit = { - tag: "Deposit"; - headId: string; - deposited: HydraUTxOs; - created: string; - deadline: string; - status: DepositStatus; -}; - -export interface DepositActivated { - tag: "DepositActivated"; - headId: string; - depositTxId: string; - deadline: string; - chainTime: string; - seq: number; - timestamp: string; -} - -export interface DepositExpired { - tag: "DepositExpired"; - headId: string; - depositTxId: string; - deadline: string; - chainTime: string; - seq: number; - timestamp: string; -} - -export type DepositEvent = DepositActivated | DepositExpired; diff --git a/packages/mesh-hydra/src/types/events/greetings.ts b/packages/mesh-hydra/src/types/events/greetings.ts deleted file mode 100644 index 1c32ec7a6..000000000 --- a/packages/mesh-hydra/src/types/events/greetings.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { HydraUTxOs } from ".."; - -export interface Greetings { - tag: "Greetings"; - me: { - vkey: string; - }; - headStatus: - | "Idle" - | "Initializing" - | "Open" - | "Closed" - | "FanoutPossible" - | "Final"; - hydraHeadId: string; - snapshotUtxo: HydraUTxOs; - timestamp?: string; - hydraNodeVersion: string; - } \ No newline at end of file diff --git a/packages/mesh-hydra/src/types/events/handler.ts b/packages/mesh-hydra/src/types/events/handler.ts deleted file mode 100644 index 1c2ad8c40..000000000 --- a/packages/mesh-hydra/src/types/events/handler.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { ClientMessage } from "../client-message"; - -export function handleHydraErrors( - msg: ClientMessage, - reject: (reason?: any) => void, -) { - - if (msg.tag === "CommandFailed") { - const inputTag = msg.clientInput?.tag ?? "UnknownInput"; - reject(new Error(`[Hydra] Command failed (${inputTag})`)); - return true; - } - - if (msg.tag === "PostTxOnChainFailed") { - const error = msg.postTxError as any; - let reason = "Unknown on-chain error"; - if (typeof error?.failureReason === "string") { - reason = error.failureReason; - } else if (typeof error?.reason === "string") { - reason = error.reason; - } else if (typeof error?.tag === "string") { - reason = error.tag; - } - reject(new Error(`[Hydra] PostTxOnChainFailed (${reason})`)); - return true; - } - - - return false; -} diff --git a/packages/mesh-hydra/src/types/events/head-cycle.ts b/packages/mesh-hydra/src/types/events/head-cycle.ts deleted file mode 100644 index dc81e6cd6..000000000 --- a/packages/mesh-hydra/src/types/events/head-cycle.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { HydraParty } from "../hydra/hydra"; -import { HydraUTxOs } from "../hydra/hydraUTxOs"; -import { HydraBaseEvent } from "./network"; - -export interface HeadIsInitializing extends HydraBaseEvent { - tag: "HeadIsInitializing"; - headId: string; - parties: HydraParty[]; -} - -export interface HeadIsOpen extends HydraBaseEvent { - tag: "HeadIsOpen"; - headId: string; - utxo: HydraUTxOs; -} - -export interface HeadIsClosed extends HydraBaseEvent { - tag: "HeadIsClosed"; - headId: string; - snapshotNumber: number; - contestationDeadline: string; -} - -export interface HeadIsContested extends HydraBaseEvent { - tag: "HeadIsContested"; - headId: string; - snapshotNumber: number; - contestationDeadline: string; -} - -export interface ReadyToFanout extends HydraBaseEvent { - tag: "ReadyToFanout"; - headId: string; -} - -export interface HeadIsAborted extends HydraBaseEvent { - tag: "HeadIsAborted"; - headId: string; - utxo: HydraUTxOs; -} - -export interface HeadIsFinalized extends HydraBaseEvent { - tag: "HeadIsFinalized"; - headId: string; - utxo: HydraUTxOs; -} diff --git a/packages/mesh-hydra/src/types/events/network.ts b/packages/mesh-hydra/src/types/events/network.ts deleted file mode 100644 index 03249a054..000000000 --- a/packages/mesh-hydra/src/types/events/network.ts +++ /dev/null @@ -1,48 +0,0 @@ -export interface HydraBaseEvent { - tag: string; - seq: number; - timestamp: string; -} - -export interface NetworkConnected extends HydraBaseEvent { - tag: "NetworkConnected"; -} - -export interface NetworkDisconnected extends HydraBaseEvent { - tag: "NetworkDisconnected"; -} - -export interface NetworkVersionMismatch extends HydraBaseEvent { - tag: "NetworkVersionMismatch"; - ourVersion: number; - theirVersion: number | null; -} - -export interface NetworkClusterIDMismatch extends HydraBaseEvent { - tag: "NetworkClusterIDMismatch"; - clusterPeers: string; - misconfiguredPeers: string; -} - -export interface PeerConnected extends HydraBaseEvent { - tag: "PeerConnected"; - peer: { hostname: string; port: number }; -} - -export interface PeerDisconnected extends HydraBaseEvent { - tag: "PeerDisconnected"; - peer: { hostname: string; port: number }; -} -export interface EventLogRotated extends HydraBaseEvent { - tag: "EventLogRotated"; -}; - - -export type NetworkEvent = - | NetworkConnected - | NetworkDisconnected - | NetworkVersionMismatch - | NetworkClusterIDMismatch - | PeerConnected - | PeerDisconnected - | EventLogRotated; diff --git a/packages/mesh-hydra/src/types/events/post-tx-failed.ts b/packages/mesh-hydra/src/types/events/post-tx-failed.ts deleted file mode 100644 index 940ca1cdf..000000000 --- a/packages/mesh-hydra/src/types/events/post-tx-failed.ts +++ /dev/null @@ -1,134 +0,0 @@ -import { hydraTransaction } from "../hydra/hydraTransaction"; -import { HydraUTxOs } from "../hydra/hydraUTxOs"; -import { PostChainTx } from "./post-tx"; - -export type ScriptFailedInWallet = { - tag: "ScriptFailedInWallet"; - redeemerPtr: string; - failureReason: string; - failingTx: hydraTransaction; -}; - -export type InternalWalletError = { - tag: "InternalWalletError"; - failingTx: hydraTransaction; - reason: string; - headUTxO: HydraUTxOs; -}; - -export type NotEnoughFuel = { - tag: "NotEnoughFuel"; - failingTx: hydraTransaction; -}; - -export type NoFuelUTXOFound = { - tag: "NoFuelUTXOFound"; - failingTx: hydraTransaction; -}; - -export type CannotFindOwnInitial = { - tag: "CannotFindOwnInitial"; - knownUTxO: HydraUTxOs; -}; - -export type UnsupportedLegacyOutput = { - tag: "UnsupportedLegacyOutput"; - byronAddress: string; -}; - -export type NoSeedInput = { - tag: "NoSeedInput"; -}; - -export type InvalidStateToPost = { - tag: "InvalidStateToPost"; - chainState: any; - txTried: PostChainTx; -}; - -export type FailedToPostTx = { - tag: "FailedToPostTx"; - failureReason: string; - failingTx: hydraTransaction; -}; - -export type CommittedTooMuchADAForMainnet = { - tag: "CommittedTooMuchADAForMainnet"; - userCommittedLovelace: number; - mainnetLimitLovelace: number; -}; - -export type FailedToDraftTxNotInitializing = { - tag: "FailedToDraftTxNotInitializing"; -}; - -export type InvalidSeed = { - tag: "InvalidSeed"; - headSeed: string; -}; - -export type InvalidHeadId = { - tag: "InvalidHeadId"; - headId: string; -}; - -export type FailedToConstructAbortTx = { tag: "FailedToConstructAbortTx" }; -export type FailedToConstructCloseTx = { tag: "FailedToConstructCloseTx" }; -export type FailedToConstructContestTx = { tag: "FailedToConstructContestTx" }; -export type FailedToConstructCollectTx = { tag: "FailedToConstructCollectTx" }; - -export type FailedToConstructDepositTx = { - tag: "FailedToConstructDepositTx"; - failureReason: string; -}; - -export type FailedToConstructRecoverTx = { - tag: "FailedToConstructRecoverTx"; - failureReason: string; -}; - -export type FailedToConstructIncrementTx = { - tag: "FailedToConstructIncrementTx"; - failureReason: string; -}; - -export type FailedToConstructDecrementTx = { - tag: "FailedToConstructDecrementTx"; - failureReason: string; -}; - -export type FailedToConstructFanoutTx = { - tag: "FailedToConstructFanoutTx"; -}; - -export type TransactionSubmitted = { - tag: "TransactionSubmitted"; -}; - -export type PostTxOnChainFailed = { - tag: "PostTxOnChainFailed"; - postChainTx: PostChainTx; - postTxError: - | ScriptFailedInWallet - | InternalWalletError - | NotEnoughFuel - | NoFuelUTXOFound - | CannotFindOwnInitial - | UnsupportedLegacyOutput - | NoSeedInput - | InvalidStateToPost - | FailedToPostTx - | CommittedTooMuchADAForMainnet - | FailedToDraftTxNotInitializing - | InvalidSeed - | InvalidHeadId - | FailedToConstructAbortTx - | FailedToConstructCloseTx - | FailedToConstructContestTx - | FailedToConstructCollectTx - | FailedToConstructDepositTx - | FailedToConstructRecoverTx - | FailedToConstructIncrementTx - | FailedToConstructDecrementTx - | FailedToConstructFanoutTx; -}; diff --git a/packages/mesh-hydra/src/types/events/post-tx.ts b/packages/mesh-hydra/src/types/events/post-tx.ts deleted file mode 100644 index 097611410..000000000 --- a/packages/mesh-hydra/src/types/events/post-tx.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { HydraUTxOs } from "../hydra/hydraUTxOs"; -import { ConfirmedSnapshot, InitialSnapshot } from "./snapshot"; -import { HydraHeadParameters } from "../hydra/hydra"; - -export interface InitTx { - tag: "InitTx"; - participants: string[]; - headParameters: HydraHeadParameters; -} - -export interface AbortTx { - tag: "AbortTx"; - utxo: HydraUTxOs; - headSeed: string; -} - -export interface CollectComTx { - tag: "CollectComTx"; - utxo: HydraUTxOs; - headId: string; - headParameters: HydraHeadParameters; -} - -export interface RecoverTx { - tag: "RecoverTx"; - headId: string; - recoverTxId: string; - recoverUTxO: HydraUTxOs; - deadline: number; -} - -export interface IncrementTx { - tag: "IncrementTx"; - headId: string; - headParameters: HydraHeadParameters; - incrementingSnapshot: InitialSnapshot | ConfirmedSnapshot; - depositTxId: string; -} - -export interface DecrementTx { - tag: "DecrementTx"; - headId: string; - headParameters: HydraHeadParameters; - decrementingSnapshot: InitialSnapshot | ConfirmedSnapshot; -} - -export interface CloseTx { - tag: "CloseTx"; - headId: string; - headParameters: HydraHeadParameters; - closingSnapshot: InitialSnapshot | ConfirmedSnapshot; - openVersion: number; -} - -export interface ContestTx { - tag: "ContestTx"; - headId: string; - headParameters: HydraHeadParameters; - openVersion: number; - contestingSnapshot: InitialSnapshot | ConfirmedSnapshot; -} - -export interface FanoutTx { - tag: "FanoutTx"; - utxo: HydraUTxOs; - utxoToCommit: HydraUTxOs; - utxoToDecommit: HydraUTxOs; - headSeed: string; - contestationDeadline: string; -} - -export type PostChainTx = - | InitTx - | AbortTx - | CollectComTx - | RecoverTx - | IncrementTx - | DecrementTx - | CloseTx - | ContestTx - | FanoutTx; diff --git a/packages/mesh-hydra/src/types/events/snapshot.ts b/packages/mesh-hydra/src/types/events/snapshot.ts deleted file mode 100644 index 8df72f1ed..000000000 --- a/packages/mesh-hydra/src/types/events/snapshot.ts +++ /dev/null @@ -1,98 +0,0 @@ -import { UTxO } from "@meshsdk/common"; -import { hydraTransaction } from "../hydra/hydraTransaction"; -import { HydraBaseEvent } from "./network"; -import { HydraUTxOs } from "../hydra/hydraUTxOs"; - -export type SnapshotSignatures = { - multiSignature: string[]; -}; - -export type InitialSnapshot = { - headId: string; - tag: "InitialSnapshot"; - initialUTxO: UTxO[]; -}; - -export interface NoSeenSnapshot { - tag: "NoSeenSnapshot"; -} - -export interface LastSeenSnapshot { - tag: "LastSeenSnapshot"; - lastSeen: number; -} - -export interface RequestedSnapshot { - tag: "RequestedSnapshot"; - lastSeen: number; - requested: number; -} - -export interface SeenSnapshot { - tag: "SeenSnapshot"; - snapshot: Snapshot; - signatories: Record; -} - -export type ConfirmedSnapshot = { - tag: "ConfirmedSnapshot"; - snapshot: { - headId: string; - version: number; - number: number; - confirmed: hydraTransaction[]; - utxo: UTxO[]; - utxoToCommit?: UTxO[] | null; - utxoToDecommit?: UTxO[] | null; - }; - signatures: SnapshotSignatures; -}; - -export type Snapshot = { - headId: string; - version: number; - number: number; - confirmed: hydraTransaction[]; - utxo: HydraUTxOs; - utxoToCommit?: HydraUTxOs; - utxoToDecommit?: HydraUTxOs; -}; - -export type SnapshotSideLoaded = { - tag: "SnapshotSideLoaded"; - headId: string; - snapshotNumber: number; - seq: number; - timestamp: string; -}; - -export interface SnapshotConfirmed extends HydraBaseEvent { - tag: "SnapshotConfirmed"; - headId: string; - snapshot: Snapshot; -} - -export type seenSnapshot = - | NoSeenSnapshot - | LastSeenSnapshot - | RequestedSnapshot - | SeenSnapshot; - -export type SideLoadSnapshot = { - tag: "SideLoadSnapshot"; - snapshot: InitialSnapshot | ConfirmedSnapshot; -}; - -export type snapshotSideLoad = InitialSnapshot | ConfirmedSnapshot; - -export type snapshotEvents = - | snapshotSideLoad - | InitialSnapshot - | NoSeenSnapshot - | LastSeenSnapshot - | RequestedSnapshot - | SeenSnapshot - | ConfirmedSnapshot - | SnapshotSideLoaded - | SnapshotConfirmed - | SideLoadSnapshot; diff --git a/packages/mesh-hydra/src/types/events/transaction.ts b/packages/mesh-hydra/src/types/events/transaction.ts deleted file mode 100644 index 96c7e4505..000000000 --- a/packages/mesh-hydra/src/types/events/transaction.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { hydraTransaction } from "../hydra/hydraTransaction"; -import { HydraUTxOs } from "../hydra/hydraUTxOs"; -import { HydraBaseEvent } from "./network"; - -export interface TxValid extends HydraBaseEvent { - tag: "TxValid"; - headId: string; - transactionId: string; - } - - export interface TxInvalid extends HydraBaseEvent { - tag: "TxInvalid"; - headId: string; - utxo: HydraUTxOs; - transaction: hydraTransaction; - validationError: { - reason: string - }; - } - - export type TransactionEvents = - | TxValid - | TxInvalid; \ No newline at end of file diff --git a/packages/mesh-hydra/src/types/hydra/hydra.ts b/packages/mesh-hydra/src/types/hydra/hydra.ts deleted file mode 100644 index f89e4858c..000000000 --- a/packages/mesh-hydra/src/types/hydra/hydra.ts +++ /dev/null @@ -1,8 +0,0 @@ -export interface HydraHeadParameters { - contestationPeriod: number; - parties: HydraParty; -} - -export type HydraParty = { - vkey: string; -}[]; diff --git a/packages/mesh-hydra/src/types/hydra/hydraAssets.ts b/packages/mesh-hydra/src/types/hydra/hydraAssets.ts deleted file mode 100644 index ad096e308..000000000 --- a/packages/mesh-hydra/src/types/hydra/hydraAssets.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { Asset } from "@meshsdk/common"; - -export type HydraAssets = { - lovelace: number; -} & { - [policyId: string]: { - [assetNameHex: string]: number; - }; -}; - -export function hydraAssets(assets: Asset[]): HydraAssets { - return assets.reduce( - (acc, asset) => { - if (asset.unit === "" || asset.unit === "lovelace") { - acc.lovelace += Number(asset.quantity); - } else { - const policyId = asset.unit.slice(0, 56); - const assetNameHex = asset.unit.slice(56) || ""; - - if (!acc[policyId]) acc[policyId] = {}; - acc[policyId][assetNameHex] = - (acc[policyId][assetNameHex] ?? 0) + Number(asset.quantity); - } - return acc; - }, - { lovelace: 0 } as HydraAssets, - ); -} - -hydraAssets.toAssets = (assetsObj: HydraAssets): Asset[] => { - const newAssets: Asset[] = []; - - if (assetsObj.lovelace && assetsObj.lovelace > 0) { - newAssets.push({ - unit: "lovelace", - quantity: assetsObj.lovelace.toString(), - }); - } - - for (const [policyId, assets] of Object.entries(assetsObj)) { - if (policyId === "lovelace") continue; - for (const [assetNameHex, quantity] of Object.entries(assets)) { - newAssets.push({ - unit: `${policyId}${assetNameHex}`, - quantity: quantity.toString(), - }); - } - } - - return newAssets; -}; diff --git a/packages/mesh-hydra/src/types/hydra/hydraReferenceScript.ts b/packages/mesh-hydra/src/types/hydra/hydraReferenceScript.ts deleted file mode 100644 index d18fb860b..000000000 --- a/packages/mesh-hydra/src/types/hydra/hydraReferenceScript.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { NativeScript, PlutusScript } from "@meshsdk/common"; - -import { getReferenceScriptInfo } from "../../utils"; - -export type hydraReferenceScript = { - script: { - cborHex: string; - description: string; - type: - | "SimpleScript" - | "PlutusScriptV1" - | "PlutusScriptV2" - | "PlutusScriptV3" - | null; - }; - scriptLanguage: string; -} | null; - -export type hydraScriptInfo = { - scriptInstance: PlutusScript | NativeScript | undefined; - scriptType: - | "PlutusScriptV1" - | "PlutusScriptV2" - | "PlutusScriptV3" - | "SimpleScript" - | "Unknown"; - scriptLanguage: - | "PlutusScriptLanguage PlutusScriptV1" - | "PlutusScriptLanguage PlutusScriptV2" - | "PlutusScriptLanguage PlutusScriptV3" - | "NativeScriptLanguage SimpleScript" - | null; -}; - -export async function hydraReferenceScript( - scriptRef: string | null, -): Promise { - const { scriptInstance, scriptLanguage, scriptType } = - await getReferenceScriptInfo(scriptRef); - - if (!scriptRef || !scriptInstance || !scriptLanguage || !scriptType) { - return null; - } - - return { - script: { - cborHex: scriptRef, - description: "", - type: scriptType === "Unknown" ? null : scriptType, - }, - scriptLanguage, - }; -} diff --git a/packages/mesh-hydra/src/types/hydra/hydraStatus.ts b/packages/mesh-hydra/src/types/hydra/hydraStatus.ts deleted file mode 100644 index 81a0a89a7..000000000 --- a/packages/mesh-hydra/src/types/hydra/hydraStatus.ts +++ /dev/null @@ -1,29 +0,0 @@ -export type hydraStatus = (typeof status)[number]; - -export function getHydraStatus(value: { headStatus?: string; tag?: string }): hydraStatus | null { - if (value.headStatus === "Open") return "OPEN"; - - switch (value.tag) { - case "HeadIsInitializing": - return "INITIALIZING"; - case "HeadIsOpen": - return "OPEN"; - case "HeadIsClosed": - return "CLOSED"; - case "ReadyToFanout": - return "FANOUT_POSSIBLE"; - case "HeadIsFinalized": - return "FINAL"; - default: - return null; - } -} - -const status = [ - "IDLE", - "INITIALIZING", - "OPEN", - "CLOSED", - "FANOUT_POSSIBLE", - "FINAL", -] as const; diff --git a/packages/mesh-hydra/src/types/hydra/hydraTransaction.ts b/packages/mesh-hydra/src/types/hydra/hydraTransaction.ts deleted file mode 100644 index 14bc3e8bd..000000000 --- a/packages/mesh-hydra/src/types/hydra/hydraTransaction.ts +++ /dev/null @@ -1,6 +0,0 @@ -export type hydraTransaction = { - type: "Tx ConwayEra" | "Unwitnessed Tx ConwayEra" | "Witnessed Tx ConwayEra"; - description: string; - cborHex: string; - txId?: string; -}; diff --git a/packages/mesh-hydra/src/types/hydra/hydraUTxOs.ts b/packages/mesh-hydra/src/types/hydra/hydraUTxOs.ts deleted file mode 100644 index 3aa6f793a..000000000 --- a/packages/mesh-hydra/src/types/hydra/hydraUTxOs.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { UTxO } from "@meshsdk/common"; -import { resolveScriptHash } from "@meshsdk/core"; - -import { resolvePlutusData } from "../../utils/resolveDatum"; -import { HydraAssets, hydraAssets } from "./hydraAssets"; -import { hydraReferenceScript } from "./hydraReferenceScript"; - -export type HydraUTxOs = { - [txRef: string]: hydraUTxO; -}; - -export async function hydraUTxOs(utxos: UTxO[]): Promise { - const entries = await Promise.all( - utxos.map(async (utxo) => [ - utxo.input.txHash + "#" + utxo.input.outputIndex, - await hydraUTxO(utxo), - ]), - ); - return Object.fromEntries(entries); -} - -export type hydraUTxO = { - address: string; - datum: string | null; - inlineDatum: object | null; - inlineDatumRaw: string | null; - inlineDatumhash: string | null; - referenceScript: hydraReferenceScript | null; - value: HydraAssets; -}; - -export async function hydraUTxO(utxo: UTxO): Promise { - return { - address: utxo.output.address, - datum: null, - inlineDatum: utxo.output.plutusData - ? (await resolvePlutusData(utxo.output.plutusData)).inlineDatum - : null, - inlineDatumRaw: utxo.output.plutusData ?? null, - inlineDatumhash: utxo.output.dataHash ?? null, - referenceScript: utxo.output.scriptRef - ? await hydraReferenceScript(utxo.output.scriptRef) - : null, - value: hydraAssets(utxo.output.amount), - }; -} - -hydraUTxO.toUTxO = (hydraUTxO: hydraUTxO, txId: string): UTxO => { - const [txHash, txIndex] = txId.split("#"); - if (!txHash || !txIndex) { - throw new Error("Invalid txId format"); - } - return { - input: { - txHash: txHash, - outputIndex: Number(txIndex), - }, - output: { - address: hydraUTxO.address, - amount: hydraAssets.toAssets(hydraUTxO.value), - dataHash: hydraUTxO.inlineDatumhash ?? undefined, - plutusData: hydraUTxO.inlineDatumRaw?.toString() ?? undefined, - scriptHash: (() => { - const ref = hydraUTxO.referenceScript?.script; - if (!ref?.cborHex || ref.type === "SimpleScript") return undefined; - - const match = /V(1|2|3)$/.exec(ref.type as string); - const version = match - ? (`V${match[1]}` as "V1" | "V2" | "V3") - : undefined; - - return resolveScriptHash(ref.cborHex, version); - })(), - - scriptRef: (() => { - const cbor = hydraUTxO.referenceScript?.script?.cborHex; - return cbor ? cbor.toString() : undefined; - })(), - }, - }; -}; diff --git a/packages/mesh-hydra/src/types/index.ts b/packages/mesh-hydra/src/types/index.ts deleted file mode 100644 index ee55ad0ae..000000000 --- a/packages/mesh-hydra/src/types/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -export * from "./hydra/hydraAssets"; -export * from "./hydra/hydraReferenceScript"; -export * from "./hydra/hydraStatus"; -export * from "./hydra/hydraTransaction"; -export * from "./hydra/hydraUTxOs"; -export * from "./client-input"; -export * from "./client-message"; -export * from "./server-output"; \ No newline at end of file diff --git a/packages/mesh-hydra/src/types/server-output.ts b/packages/mesh-hydra/src/types/server-output.ts deleted file mode 100644 index 5603e58a0..000000000 --- a/packages/mesh-hydra/src/types/server-output.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { IgnoredHeadInitializing, InvalidInput } from "./events/command-failed"; -import { - CommitApproved, - CommitFinalized, - CommitRecorded, - CommitRecovered, - Committed, -} from "./events/commit"; -import { - DecommitApproved, - DecommitFinalized, - DecommitInvalid, - DecommitRequested, -} from "./events/decommit"; -import { DepositActivated, DepositExpired } from "./events/deposit"; -import { Greetings } from "./events/greetings"; -import { - HeadIsAborted, - HeadIsClosed, - HeadIsContested, - HeadIsFinalized, - HeadIsInitializing, - HeadIsOpen, - ReadyToFanout, -} from "./events/head-cycle"; -import { - EventLogRotated, - NetworkClusterIDMismatch, - NetworkConnected, - NetworkDisconnected, - NetworkVersionMismatch, - PeerConnected, - PeerDisconnected, -} from "./events/network"; -import { SnapshotConfirmed, SnapshotSideLoaded } from "./events/snapshot"; -import { TxInvalid, TxValid } from "./events/transaction"; - -export type ServerOutput = - | Greetings - | NetworkConnected - | NetworkDisconnected - | NetworkVersionMismatch - | NetworkClusterIDMismatch - | PeerConnected - | PeerDisconnected - | HeadIsInitializing - | Committed - | HeadIsOpen - | HeadIsClosed - | HeadIsContested - | ReadyToFanout - | HeadIsAborted - | HeadIsFinalized - | TxValid - | TxInvalid - | SnapshotConfirmed - | InvalidInput - | IgnoredHeadInitializing - | DecommitInvalid - | DecommitRequested - | DecommitApproved - | DecommitFinalized - | CommitRecorded - | DepositActivated - | DepositExpired - | CommitApproved - | CommitFinalized - | CommitRecovered - | SnapshotSideLoaded - | EventLogRotated; diff --git a/packages/mesh-hydra/src/utils/hydraScriptRef.ts b/packages/mesh-hydra/src/utils/hydraScriptRef.ts deleted file mode 100644 index 3ed2a975e..000000000 --- a/packages/mesh-hydra/src/utils/hydraScriptRef.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { NativeScript, PlutusScript } from "@meshsdk/common"; -import { fromScriptRef } from "@meshsdk/core-cst"; - -import { hydraScriptInfo } from "../types"; - -/** - * Determines the type and language of a script reference. - * @param scriptRef - The script reference (e.g., CBOR hex string) from a UTxO. - * @returns An object containing the script instance, type, and language. - */ -export async function getReferenceScriptInfo( - scriptRef: string | null, -): Promise { - let scriptInstance: PlutusScript | NativeScript | undefined = undefined; - let scriptType: hydraScriptInfo["scriptType"] = "Unknown"; - let scriptLanguage: hydraScriptInfo["scriptLanguage"] = null; - - if (scriptRef) { - scriptInstance = fromScriptRef(scriptRef); - if (scriptInstance) { - if ("code" in scriptInstance) { - switch (scriptInstance.version) { - case "V1": - scriptType = "PlutusScriptV1"; - scriptLanguage = "PlutusScriptLanguage PlutusScriptV1"; - break; - case "V2": - scriptType = "PlutusScriptV2"; - scriptLanguage = "PlutusScriptLanguage PlutusScriptV2"; - break; - case "V3": - scriptType = "PlutusScriptV3"; - scriptLanguage = "PlutusScriptLanguage PlutusScriptV3"; - break; - } - } else { - scriptType = "SimpleScript"; - scriptLanguage = "NativeScriptLanguage SimpleScript"; - } - } - } - - return { scriptInstance, scriptType, scriptLanguage }; -} diff --git a/packages/mesh-hydra/src/utils/index.ts b/packages/mesh-hydra/src/utils/index.ts deleted file mode 100644 index 338529768..000000000 --- a/packages/mesh-hydra/src/utils/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./parse-http-error"; -export * from "./hydraScriptRef"; diff --git a/packages/mesh-hydra/src/utils/parse-http-error.ts b/packages/mesh-hydra/src/utils/parse-http-error.ts deleted file mode 100644 index f6038199c..000000000 --- a/packages/mesh-hydra/src/utils/parse-http-error.ts +++ /dev/null @@ -1,21 +0,0 @@ -import axios from "axios"; - -export const parseHttpError = (error: unknown): string => { - if (!axios.isAxiosError(error)) { - return JSON.stringify(error); - } - - if (error.response) { - return JSON.stringify({ - data: error.response.data, - headers: error.response.headers, - status: error.response.status, - }); - } - - if (error.request && !(error.request instanceof XMLHttpRequest)) { - return JSON.stringify(error.request); - } - - return JSON.stringify({ code: error.code, message: error.message }); -}; diff --git a/packages/mesh-hydra/src/utils/resolveDatum.ts b/packages/mesh-hydra/src/utils/resolveDatum.ts deleted file mode 100644 index 7022fce39..000000000 --- a/packages/mesh-hydra/src/utils/resolveDatum.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { parseDatumCbor } from "@meshsdk/core-cst"; - -export async function resolvePlutusData(datumHash: string) { - const data = parseDatumCbor(datumHash); - - function normalize(value: any): any { - if (typeof value === "bigint") { - return value <= Number.MAX_SAFE_INTEGER && - value >= Number.MIN_SAFE_INTEGER - ? Number(value) - : value.toString(); - } - if (Array.isArray(value)) { - return value.map(normalize); - } - if (value && typeof value === "object") { - return Object.fromEntries( - Object.entries(value).map(([k, v]) => [k, normalize(v)]), - ); - } - return value; - } - - return { inlineDatum: normalize(data) }; -} diff --git a/packages/mesh-hydra/tsconfig.json b/packages/mesh-hydra/tsconfig.json deleted file mode 100644 index 44863d662..000000000 --- a/packages/mesh-hydra/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "@meshsdk/configs/typescript/base.json", - "include": ["src/**/*"], - "exclude": ["dist", "node_modules"], - "compilerOptions": { - "esModuleInterop": true, - "allowSyntheticDefaultImports": true - } -} diff --git a/packages/mesh-hydra/tsup.config.ts b/packages/mesh-hydra/tsup.config.ts deleted file mode 100644 index 75e19515f..000000000 --- a/packages/mesh-hydra/tsup.config.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { defineConfig } from "tsup"; - -export default defineConfig({ - entry: ["src/index.ts"], - format: ["esm", "cjs"], - dts: true, - splitting: false, - sourcemap: true, - clean: true, - external: ["isomorphic-ws"], - esbuildOptions(options) { - options.define = { - global: "globalThis", - process: JSON.stringify({ - env: { - NODE_ENV: "production", - }, - }), - }; - }, -}); diff --git a/packages/mesh-provider/.env.example b/packages/mesh-provider/.env.example deleted file mode 100644 index 3e4664ed0..000000000 --- a/packages/mesh-provider/.env.example +++ /dev/null @@ -1,5 +0,0 @@ -# API keys for running unit test cases -BLOCKFROST_API_KEY_PREPROD=preprodxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -MAESTRO_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -KOIOS_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -OGMIOS_API_URL=https://your-ogmios-endpoint.demeter.run diff --git a/packages/mesh-provider/README.md b/packages/mesh-provider/README.md deleted file mode 100644 index 0b8a828d7..000000000 --- a/packages/mesh-provider/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# mesh-provider - -Blockchain data providers - [meshjs.dev/providers](https://meshjs.dev/providers) - -[meshjs.dev](https://meshjs.dev/) diff --git a/packages/mesh-provider/jest.config.ts b/packages/mesh-provider/jest.config.ts deleted file mode 100644 index 9229656e9..000000000 --- a/packages/mesh-provider/jest.config.ts +++ /dev/null @@ -1,20 +0,0 @@ -import type { Config } from "jest"; - -const jestConfig: Config = { - clearMocks: true, - maxWorkers: 1, - testEnvironment: "node", - testMatch: ["**/packages/**/*.test.ts"], - setupFiles: ["dotenv/config"], - preset: "ts-jest", - moduleNameMapper: { - "^(\\.{1,2}/.*)\\.js$": "$1", - }, - transform: { - "^.+\\.[jt]s?$": "ts-jest", - }, - transformIgnorePatterns: ["/node_modules/(?!@meshsdk/.*)"], - passWithNoTests: true, -}; - -export default jestConfig; diff --git a/packages/mesh-provider/package.json b/packages/mesh-provider/package.json deleted file mode 100644 index 7555623da..000000000 --- a/packages/mesh-provider/package.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "name": "@meshsdk/provider", - "version": "1.9.0-beta.98", - "description": "Blockchain data providers - https://meshjs.dev/providers", - "main": "./dist/index.cjs", - "browser": "./dist/index.js", - "module": "./dist/index.js", - "types": "./dist/index.d.ts", - "type": "module", - "exports": { - ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.js", - "require": "./dist/index.cjs" - } - }, - "files": [ - "dist/**" - ], - "scripts": { - "build:docs": "typedoc src/index.ts --json ../../apps/docs/src/data/mesh-providers.json", - "build:mesh": "tsup src/index.ts --format esm,cjs --dts", - "clean": "rm -rf .turbo && rm -rf dist && rm -rf node_modules", - "dev": "tsup src/index.ts --format esm,cjs --watch --dts", - "format": "prettier --check . --ignore-path ../../.gitignore", - "lint": "eslint", - "pack": "npm pack --pack-destination=./dist", - "test": "jest" - }, - "devDependencies": { - "@meshsdk/configs": "*", - "@types/ws": "^8.5.13", - "eslint": "^8.57.0", - "tsup": "^8.0.2", - "typescript": "^5.3.3" - }, - "dependencies": { - "@meshsdk/common": "1.9.0-beta.98", - "@meshsdk/core-cst": "1.9.0-beta.98", - "@utxorpc/sdk": "^0.6.7", - "@utxorpc/spec": "^0.16.0", - "axios": "^1.7.2", - "cbor": "^10.0.9", - "libsodium-wrappers-sumo": "0.7.15" - }, - "prettier": "@meshsdk/configs/prettier", - "publishConfig": { - "access": "public" - }, - "license": "Apache-2.0", - "keywords": [ - "cardano", - "ada", - "web3", - "blockchain", - "sdk" - ] -} diff --git a/packages/mesh-provider/src/begin.ts b/packages/mesh-provider/src/begin.ts deleted file mode 100644 index e2e62a6a3..000000000 --- a/packages/mesh-provider/src/begin.ts +++ /dev/null @@ -1,129 +0,0 @@ -import axios from "axios"; - -import { parseHttpError } from "./utils"; - -/** - * The BeginProvider class provides methods to query Begin ID. - * - * To use this provider, simply create a new instance of the BeginProvider class and call the desired method. - * - * ```typescript - * import { BeginProvider } from "@meshsdk/core"; - * - * const beginProvider = new BeginProvider(); - * ``` - */ -export class BeginProvider { - private readonly apikey: string; - private readonly chainNumber = 1815; - private readonly domainUrl = ".bgin.id"; - - /** - * Creates a new instance of the BeginProvider. - * @param apikey The API key for querying Begin ID. - */ - constructor(apikey?: string) { - this.apikey = apikey ?? "31cab9edcc1c530e29924a56167d4ed17d50b7fds"; - } - - /** - * Given a Begin ID, resolves the address and other information. - * @param name name of Begin ID, e.g. `mesh` - * @param url optional URL to override the default: https://resolveidaddress-ylo5dtxzdq-uc.a.run.app - * @returns - * - name: string - * - domain: string - * - image: string - * - address: string - */ - async resolveAddress( - name: string, - url?: string, - ): Promise<{ - name: string; - domain: string; - image: string; - address: string; - }> { - try { - const axiosInstance = axios.create({ - baseURL: url ?? "https://resolveidaddress-ylo5dtxzdq-uc.a.run.app", - headers: { - "Content-Type": "application/json", - Authorization: this.apikey, - }, - }); - - const { data, status } = await axiosInstance.post(``, { - name: name - .replace("@", "") - .replace(/(\.bgin\.id|\.beginid\.io|\.bgn\.is)$/, ""), - chain: this.chainNumber, - }); - - if (status === 200) { - const result = data.result; - return { - name: result.name, - domain: `${"".concat(result.name, this.domainUrl)}`, - image: result.image, - address: result.addresses[this.chainNumber], - }; - } - - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Given an address, resolves the Begin ID and other information. - * @param address address to resolve - * @param url optional URL to override the default: https://resolveIdReserveAddress-ylo5dtxzdq-uc.a.run.app - * @returns - * - name: string - * - domain: string - * - image: string - * - address: string - */ - async resolveAdressReverse( - address: string, - url?: string, - ): Promise<{ - name: string; - domain: string; - image: string; - address: string; - }> { - try { - const axiosInstance = axios.create({ - baseURL: - url ?? "https://resolveIdReserveAddress-ylo5dtxzdq-uc.a.run.app", - headers: { - "Content-Type": "application/json", - Authorization: this.apikey, - }, - }); - - const { data, status } = await axiosInstance.post(``, { - address: address, - chain: this.chainNumber, - }); - - if (status === 200) { - const result = data.result; - return { - name: result.name, - domain: `${"".concat(result.name, this.domainUrl)}`, - image: result.image, - address: result.addresses[this.chainNumber], - }; - } - - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } -} diff --git a/packages/mesh-provider/src/blockfrost.ts b/packages/mesh-provider/src/blockfrost.ts deleted file mode 100644 index adaa6b319..000000000 --- a/packages/mesh-provider/src/blockfrost.ts +++ /dev/null @@ -1,919 +0,0 @@ -import axios, { AxiosInstance } from "axios"; - -import { - AccountInfo, - Action, - Asset, - AssetMetadata, - BlockInfo, - castProtocol, - DEFAULT_FETCHER_OPTIONS, - fromUTF8, - GovernanceProposalInfo, - IEvaluator, - IFetcher, - IFetcherOptions, - IListener, - ISubmitter, - NativeScript, - PlutusScript, - Protocol, - RedeemerTagType, - SUPPORTED_HANDLES, - toBytes, - TransactionInfo, - UTxO, -} from "@meshsdk/common"; -import { - normalizePlutusScript, - resolveRewardAddress, - toScriptRef, -} from "@meshsdk/core-cst"; - -import { utxosToAssets } from "./common/utxos-to-assets"; -import { OfflineFetcher } from "./offline/offline-fetcher"; -import { BlockfrostAsset, BlockfrostUTxO } from "./types"; -import { getAdditionalUtxos, parseAssetUnit, parseHttpError } from "./utils"; - -export type BlockfrostCachingOptions = { - enableCaching?: boolean; - offlineFetcher?: OfflineFetcher; -}; - -export type BlockfrostSupportedNetworks = "mainnet" | "preview" | "preprod"; - -/** - * Blockfrost provides restful APIs which allows your app to access information stored on the blockchain. - * - * Usage: - * ``` - * import { BlockfrostProvider } from "@meshsdk/core"; - * - * const provider = new BlockfrostProvider(''); - * - * // With caching enabled - * const providerWithCache = new BlockfrostProvider('', 0, { enableCaching: true }); - * ``` - */ -export class BlockfrostProvider - implements IFetcher, IListener, ISubmitter, IEvaluator -{ - private readonly _axiosInstance: AxiosInstance; - private readonly _network: BlockfrostSupportedNetworks; - private submitTxToBytes = true; - private _offlineFetcher?: OfflineFetcher; - private _enableCaching = false; - - /** - * If you are using a privately hosted Blockfrost instance, you can set the URL in the parameter. - * @param baseUrl The base URL of the instance. - * @param cachingOptions Optional caching configuration - */ - constructor(baseUrl: string, cachingOptions?: BlockfrostCachingOptions); - - /** - * If you are using [Blockfrost](https://blockfrost.io/) hosted instance, you can set the project ID in the parameter. - * @param projectId The project ID of the instance. - * @param version The version of the API. Default is 0. - * @param cachingOptions Optional caching configuration - */ - constructor( - projectId: string, - version?: number, - cachingOptions?: BlockfrostCachingOptions, - ); - - constructor(...args: unknown[]) { - let cachingOptions: BlockfrostCachingOptions | undefined; - - if ( - typeof args[0] === "string" && - (args[0].startsWith("http") || args[0].startsWith("/")) - ) { - this._axiosInstance = axios.create({ baseURL: args[0] }); - this._network = "mainnet"; - cachingOptions = args[1] as BlockfrostCachingOptions | undefined; - } else { - const projectId = args[0] as string; - const network = projectId.slice(0, 7); - this._axiosInstance = axios.create({ - baseURL: `https://cardano-${network}.blockfrost.io/api/v${ - args[1] ?? 0 - }`, - headers: { project_id: projectId }, - }); - this._network = network as BlockfrostSupportedNetworks; - cachingOptions = args[2] as BlockfrostCachingOptions | undefined; - } - - // Initialize caching if enabled - if (cachingOptions?.enableCaching) { - this._enableCaching = true; - this._offlineFetcher = - cachingOptions.offlineFetcher || new OfflineFetcher(this._network); - } - } - - /** - * Evaluates the resources required to execute the transaction - * @param cbor - The transaction CBOR hex string to evaluate - * @param additionalUtxos - Optional array of additional UTxOs to include in the evaluation context for resolving transaction inputs - * @param additionalTxs - Optional array of transaction CBOR hex strings to provide additional UTxOs from their outputs - */ - async evaluateTx( - cbor: string, - additionalUtxos?: UTxO[], - additionalTxs?: string[], - ): Promise[]> { - const additionalUtxoSet = getAdditionalUtxos( - "blockfrost", - additionalUtxos, - additionalTxs, - ); - - const params = { - cbor, - additionalUtxoSet, - }; - - try { - const headers = { "Content-Type": "application/json" }; - const { status, data } = await this._axiosInstance.post( - "utils/txs/evaluate/utxos", - params, - { - headers, - }, - ); - - if (status === 200 && data.result.EvaluationResult) { - const tagMap: { [key: string]: RedeemerTagType } = { - spend: "SPEND", - mint: "MINT", - certificate: "CERT", - withdrawal: "REWARD", - }; - const result: Omit[] = []; - - Object.keys(data.result.EvaluationResult).forEach((key) => { - const [tagKey, index] = key.split(":"); - const { memory, steps } = data.result.EvaluationResult[key]; - result.push({ - tag: tagMap[tagKey!]!, - index: Number(index), - budget: { mem: memory, steps }, - }); - }); - - return result; - } - - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Obtain information about a specific stake account. - * @param address - Wallet address to fetch account information - */ - async fetchAccountInfo(address: string): Promise { - const rewardAddress = address.startsWith("addr") - ? resolveRewardAddress(address) - : address; - - try { - const { data, status } = await this._axiosInstance.get( - `accounts/${rewardAddress}`, - ); - - if (status === 200 || status == 202) - return { - poolId: data.pool_id, - active: data.active || data.active_epoch !== null, - balance: data.controlled_amount, - rewards: data.withdrawable_amount, - withdrawals: data.withdrawals_sum, - }; - - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Fetches the assets for a given address. - * @param address - The address to fetch assets for - * @returns A map of asset unit to quantity - */ - async fetchAddressAssets( - address: string, - ): Promise<{ [key: string]: string }> { - const utxos = await this.fetchAddressUTxOs(address); - return utxosToAssets(utxos); - } - - /** - * Transactions for an address. The `TransactionInfo` would only return the `hash`, `inputs`, and `outputs`. - * @param address - The address to fetch transactions for - * @returns - partial TransactionInfo - */ - async fetchAddressTxs( - address: string, - option: IFetcherOptions = DEFAULT_FETCHER_OPTIONS, - ): Promise { - const txs: TransactionInfo[] = []; - try { - const fetcherOptions = { ...DEFAULT_FETCHER_OPTIONS, ...option }; - - for (let i = 1; i <= fetcherOptions.maxPage!; i++) { - let { data, status } = await this._axiosInstance.get( - `/addresses/${address}/transactions?page=${i}&order=${fetcherOptions.order}`, - ); - if (status !== 200) throw parseHttpError(data); - if (data.length === 0) break; - for (const tx of data) { - const txInfo = await this.fetchTxInfo(tx.tx_hash); - - const _tx = { - ...txInfo, - blockHeight: tx.block_height, - blockTime: tx.block_time, - }; - - txs.push(_tx); - } - } - return txs; - } catch (error) { - throw parseHttpError(error); - } - } - /** - * Deprecated, use fetchAddressTxs instead - * @param address - * @returns - partial TransactionInfo - */ - async fetchAddressTransactions(address: string): Promise { - return await this.fetchAddressTxs(address); - } - - /** - * UTXOs of the address. - * @param address - The address to fetch UTXO - * @param asset - UTXOs of a given asset​ - * @returns - Array of UTxOs - */ - async fetchAddressUTxOs(address: string, asset?: string): Promise { - // Check cache first if caching is enabled - if (this._enableCaching && this._offlineFetcher) { - try { - const cachedUtxos = await this._offlineFetcher.fetchAddressUTxOs( - address, - asset, - ); - if (cachedUtxos.length > 0) { - return cachedUtxos; - } - } catch (error) { - // Cache miss or error, continue to fetch from network - } - } - - const filter = asset !== undefined ? `/${asset}` : ""; - const url = `addresses/${address}/utxos` + filter; - - const paginateUTxOs = async ( - page = 1, - utxos: UTxO[] = [], - ): Promise => { - const { data, status } = await this._axiosInstance.get( - `${url}?page=${page}`, - ); - - if (status === 200 || status == 202) - return data.length > 0 - ? paginateUTxOs(page + 1, [ - ...utxos, - ...(await Promise.all( - data.map((utxo: BlockfrostUTxO) => - this.toUTxO(utxo, utxo.tx_hash), - ), - )), - ]) - : utxos; - - throw parseHttpError(data); - }; - - try { - const fetchedUtxos = await paginateUTxOs(); - - // Cache the fetched UTXOs if caching is enabled - if ( - this._enableCaching && - this._offlineFetcher && - fetchedUtxos.length > 0 - ) { - try { - this._offlineFetcher.addUTxOs(fetchedUtxos); - } catch (error) { - // Log error but don't fail the request - console.warn("Failed to cache UTXOs:", error); - } - } - - return fetchedUtxos; - } catch (error) { - return []; - } - } - - /** - * Fetches the asset addresses for a given asset. - * @param asset - The asset to fetch addresses for - */ - async fetchAssetAddresses( - asset: string, - ): Promise<{ address: string; quantity: string }[]> { - const paginateAddresses = async ( - page = 1, - addresses: T[] = [], - ): Promise => { - const { policyId, assetName } = parseAssetUnit(asset); - const { data, status } = await this._axiosInstance.get( - `assets/${policyId}${assetName}/addresses?page=${page}`, - ); - - if (status === 200 || status == 202) - return data.length > 0 - ? paginateAddresses(page + 1, [...addresses, ...data]) - : addresses; - - throw parseHttpError(data); - }; - - try { - return await paginateAddresses<{ address: string; quantity: string }>(); - } catch (error) { - return []; - } - } - - /** - * Fetches the metadata for a given asset. - * @param asset - The asset to fetch metadata for - * @returns The metadata for the asset - */ - async fetchAssetMetadata(asset: string): Promise { - try { - const { policyId, assetName } = parseAssetUnit(asset); - const { data, status } = await this._axiosInstance.get( - `assets/${policyId}${assetName}`, - ); - if (status === 200 || status == 202) - return { - ...data.onchain_metadata, - fingerprint: data.fingerprint, - totalSupply: data.quantity, - mintingTxHash: data.initial_mint_tx_hash, // todo: request for `initial_mint_tx_hash` - mintCount: data.mint_or_burn_count, - }; - - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Fetches the metadata for a given asset. - * @param asset - The asset to fetch metadata for - * @returns The metadata for the asset - */ - async fetchLatestBlock(): Promise { - try { - const { data, status } = await this._axiosInstance.get(`blocks/latest`); - - if (status === 200 || status == 202) - return { - confirmations: data.confirmations, - epoch: data.epoch, - epochSlot: data.epoch_slot.toString(), - fees: data.fees, - hash: data.hash, - nextBlock: data.next_block ?? "", - operationalCertificate: data.op_cert, - output: data.output ?? "0", - previousBlock: data.previous_block, - size: data.size, - slot: data.slot.toString(), - slotLeader: data.slot_leader ?? "", - time: data.time, - txCount: data.tx_count, - VRFKey: data.block_vrf, - }; - - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Fetches the block information for a given block hash. - * @param hash The block hash to fetch from - * @returns The block information - */ - async fetchBlockInfo(hash: string): Promise { - try { - const { data, status } = await this._axiosInstance.get(`blocks/${hash}`); - - if (status === 200 || status == 202) - return { - confirmations: data.confirmations, - epoch: data.epoch, - epochSlot: data.epoch_slot.toString(), - fees: data.fees, - hash: data.hash, - nextBlock: data.next_block ?? "", - operationalCertificate: data.op_cert, - output: data.output ?? "0", - previousBlock: data.previous_block, - size: data.size, - slot: data.slot.toString(), - slotLeader: data.slot_leader ?? "", - time: data.time, - txCount: data.tx_count, - VRFKey: data.block_vrf, - }; - - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Fetches the list of assets for a given policy ID. - * @param policyId The policy ID to fetch assets for - * @param cursor The cursor for pagination - * @returns The list of assets and the next cursor - */ - async fetchCollectionAssets( - policyId: string, - cursor = 1, - ): Promise<{ assets: Asset[]; next: string | number | null }> { - try { - const { data, status } = await this._axiosInstance.get( - `assets/policy/${policyId}?page=${cursor}`, - ); - - if (status === 200 || status == 202) - return { - assets: data.map((asset: BlockfrostAsset) => ({ - unit: asset.asset, - quantity: asset.quantity, - })), - next: data.length === 100 ? cursor + 1 : null, - }; - - throw parseHttpError(data); - } catch (error) { - return { assets: [], next: null }; - } - } - - async fetchHandle(handle: string): Promise { - if (this._network !== "mainnet") { - throw new Error( - "Does not support fetching addresses by handle on non-mainnet networks.", - ); - } - try { - const assetName = fromUTF8(`${handle.replace("$", "")}`); - const asset = await this.fetchAssetMetadata( - `${SUPPORTED_HANDLES[1]}000de140${assetName}`, - ); - return asset; - } catch (error) { - throw parseHttpError(error); - } - } - - async fetchHandleAddress(handle: string): Promise { - if (this._network !== "mainnet") { - throw new Error( - "Does not support fetching addresses by handle on non-mainnet networks.", - ); - } - try { - const assetName = fromUTF8(handle.replace("$", "")); - const { data, status } = await this._axiosInstance.get( - `assets/${SUPPORTED_HANDLES[1]}${assetName}/addresses`, - ); - - if (status === 200 || status == 202) return data[0].address; - - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Fetch the latest protocol parameters. - * @param epoch Optional - The epoch to fetch protocol parameters for - * @returns - Protocol parameters - */ - async fetchProtocolParameters(epoch = Number.NaN): Promise { - try { - const { data, status } = await this._axiosInstance.get( - `epochs/${isNaN(epoch) ? "latest" : epoch}/parameters`, - ); - - if (status === 200 || status == 202) - return castProtocol({ - coinsPerUtxoSize: data.coins_per_utxo_word, - collateralPercent: data.collateral_percent, - decentralisation: data.decentralisation_param, - epoch: data.epoch, - keyDeposit: data.key_deposit, - maxBlockExMem: data.max_block_ex_mem, - maxBlockExSteps: data.max_block_ex_steps, - maxBlockHeaderSize: data.max_block_header_size, - maxBlockSize: data.max_block_size, - maxCollateralInputs: data.max_collateral_inputs, - maxTxExMem: data.max_tx_ex_mem, - maxTxExSteps: data.max_tx_ex_steps, - maxTxSize: data.max_tx_size, - maxValSize: data.max_val_size, - minFeeA: data.min_fee_a, - minFeeB: data.min_fee_b, - minPoolCost: data.min_pool_cost, - poolDeposit: data.pool_deposit, - priceMem: data.price_mem, - priceStep: data.price_step, - }); - - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Fetches the transaction information for a given transaction hash. - * @param hash The transaction hash to fetch - * @returns The transaction information - */ - async fetchTxInfo(hash: string): Promise { - try { - const { data: txData, status } = await this._axiosInstance.get( - `txs/${hash}`, - ); - if (status === 200 || status == 202) { - const { data, status } = await this._axiosInstance.get( - `/txs/${txData.hash}/utxos`, - ); - if (status !== 200) throw parseHttpError(data); - return { - block: txData.block, - deposit: txData.deposit, - fees: txData.fees, - hash: txData.hash, - index: txData.index, - invalidAfter: txData.invalid_hereafter ?? "", - invalidBefore: txData.invalid_before ?? "", - slot: txData.slot.toString(), - size: txData.size, - inputs: data.inputs, - outputs: data.outputs, - }; - } - - throw parseHttpError(txData); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Get UTxOs for a given hash. - * @param hash The transaction hash - * @param index Optional - The output index for filtering post fetching - * @returns - Array of UTxOs - */ - async fetchUTxOs(hash: string, index?: number): Promise { - try { - const { data, status } = await this._axiosInstance.get( - `txs/${hash}/utxos`, - ); - if (status === 200 || status == 202) { - const bfOutputs = data.outputs as BlockfrostUTxO[]; - const outputsPromises: Promise[] = []; - bfOutputs.forEach((output) => { - outputsPromises.push(this.toUTxO(output, hash)); - }); - const outputs = await Promise.all(outputsPromises); - - if (index !== undefined) { - return outputs.filter((utxo) => utxo.input.outputIndex === index); - } - - return outputs; - } - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Fetches the governance proposal information. - * @param txHash The transaction hash of the proposal - * @param certIndex The certificate index of the proposal - * @returns The governance proposal information - */ - async fetchGovernanceProposal( - txHash: string, - certIndex: number, - ): Promise { - try { - const { data, status } = await this._axiosInstance.get( - `governance/proposals/${txHash}/${certIndex}`, - ); - if (status === 200 || status == 202) - return { - txHash: data.tx_hash, - certIndex: data.cert_index, - governanceType: data.governance_type, - deposit: data.deposit, - returnAddress: data.return_address, - governanceDescription: data.governance_description, - ratifiedEpoch: data.ratified_epoch, - enactedEpoch: data.enacted_epoch, - droppedEpoch: data.dropped_epoch, - expiredEpoch: data.expired_epoch, - expiration: data.expiration, - metadata: ( - await this._axiosInstance.get( - `governance/proposals/${txHash}/${certIndex}/metadata`, - ) - ).data, - }; - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * A generic method to fetch data from a URL. - * @param url - The URL to fetch data from - * @returns - The data fetched from the URL - */ - async get(url: string): Promise { - try { - const { data, status } = await this._axiosInstance.get(url); - if (status === 200 || status == 202) { - return data; - } - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * A generic method to post data to a URL. - * @param url - The URL to fetch data from - * @param body - Payload - * @param headers - Specify headers, default: { "Content-Type": "application/json" } - * @returns - Data - */ - async post( - url: string, - body: any, - headers = { "Content-Type": "application/json" }, - ): Promise { - try { - const { data, status } = await this._axiosInstance.post(url, body, { - headers, - }); - - if (status === 200 || status == 202) return data; - - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Allow you to listen to a transaction confirmation. Upon confirmation, the callback will be called. - * @param txHash - The transaction hash to listen for confirmation - * @param callback - The callback function to call when the transaction is confirmed - * @param limit - The number of blocks to wait for confirmation - */ - onTxConfirmed(txHash: string, callback: () => void, limit = 100): void { - let attempts = 0; - - const checkTx = setInterval(() => { - if (attempts >= limit) clearInterval(checkTx); - - this.fetchTxInfo(txHash) - .then((txInfo) => { - this.fetchBlockInfo(txInfo.block) - .then((blockInfo) => { - if (blockInfo?.confirmations > 0) { - clearInterval(checkTx); - callback(); - } - }) - .catch(() => { - attempts += 1; - }); - }) - .catch(() => { - attempts += 1; - }); - }, 5_000); - } - - setSubmitTxToBytes(value: boolean): void { - this.submitTxToBytes = value; - } - - /** - * Submit a serialized transaction to the network. - * @param tx - The serialized transaction in hex to submit - * @returns The transaction hash of the submitted transaction - */ - async submitTx(tx: string): Promise { - try { - const headers = { "Content-Type": "application/cbor" }; - const { data, status } = await this._axiosInstance.post( - "tx/submit", - this.submitTxToBytes ? toBytes(tx) : tx, - { headers }, - ); - - if (status === 200 || status == 202) { - // Cache the submitted transaction if caching is enabled - if (this._enableCaching && this._offlineFetcher) { - try { - this._offlineFetcher.addSerializedTransaction(tx); - } catch (error) { - // Log error but don't fail the request - console.warn("Failed to cache submitted transaction:", error); - } - } - - return data; - } - - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - private resolveScriptRef = async ( - scriptHash: string, - ): Promise => { - if (scriptHash) { - const { data, status } = await this._axiosInstance.get( - `scripts/${scriptHash}`, - ); - - if (status === 200 || status == 202) { - let script; - if (data.type.startsWith("plutus")) { - const plutusScript = await this.fetchPlutusScriptCBOR(scriptHash); - const normalized = normalizePlutusScript(plutusScript, "DoubleCBOR"); - script = { - version: data.type.replace("plutus", ""), - code: normalized, - }; - } else { - script = await this.fetchNativeScriptJSON(scriptHash); - } - - return toScriptRef(script).toCbor().toString(); - } - - throw parseHttpError(data); - } - - return undefined; - }; - - private toUTxO = async ( - bfUTxO: BlockfrostUTxO, - tx_hash: string, - ): Promise => ({ - input: { - outputIndex: bfUTxO.output_index, - txHash: tx_hash, - }, - output: { - address: bfUTxO.address, - amount: bfUTxO.amount, - dataHash: bfUTxO.data_hash ?? undefined, - plutusData: bfUTxO.inline_datum ?? undefined, - scriptRef: bfUTxO.reference_script_hash - ? await this.resolveScriptRef(bfUTxO.reference_script_hash) - : undefined, - scriptHash: bfUTxO.reference_script_hash, - }, - }); - - private async fetchPlutusScriptCBOR(scriptHash: string): Promise { - const { data, status } = await this._axiosInstance.get( - `scripts/${scriptHash}/cbor`, - ); - - if (status === 200 || status == 202) return data.cbor; - - throw parseHttpError(data); - } - - private async fetchNativeScriptJSON( - scriptHash: string, - ): Promise { - const { data, status } = await this._axiosInstance.get( - `scripts/${scriptHash}/json`, - ); - - if (status === 200 || status == 202) return data.json; - - throw parseHttpError(data); - } - - /** - * Enable or disable caching functionality. - * @param enable - Whether to enable caching - * @param offlineFetcher - Optional custom OfflineFetcher instance to use - */ - setCaching(enable: boolean, offlineFetcher?: OfflineFetcher): void { - this._enableCaching = enable; - if (enable) { - this._offlineFetcher = - offlineFetcher || new OfflineFetcher(this._network); - } else { - this._offlineFetcher = undefined; - } - } - - /** - * Get the current OfflineFetcher instance if caching is enabled. - * @returns The OfflineFetcher instance or undefined if caching is disabled - */ - getOfflineFetcher(): OfflineFetcher | undefined { - return this._offlineFetcher; - } - - /** - * Check if caching is currently enabled. - * @returns True if caching is enabled, false otherwise - */ - isCachingEnabled(): boolean { - return this._enableCaching; - } - - /** - * Export the cached data as JSON string. - * @returns JSON string of cached data or null if caching is disabled - */ - exportCache(): string | null { - return this._offlineFetcher ? this._offlineFetcher.toJSON() : null; - } - - /** - * Import cached data from JSON string. - * @param jsonData - JSON string containing cached data - * @param enableCaching - Whether to enable caching if not already enabled - */ - importCache(jsonData: string, enableCaching = true): void { - if (enableCaching && !this._enableCaching) { - this.setCaching(true); - } - - if (this._offlineFetcher) { - const importedFetcher = OfflineFetcher.fromJSON(jsonData); - this._offlineFetcher = importedFetcher; - } - } - - /** - * Clear all cached data. - */ - clearCache(): void { - if (this._offlineFetcher) { - this._offlineFetcher = new OfflineFetcher(this._network); - } - } -} diff --git a/packages/mesh-provider/src/common/utxos-to-assets.ts b/packages/mesh-provider/src/common/utxos-to-assets.ts deleted file mode 100644 index fc28d21d8..000000000 --- a/packages/mesh-provider/src/common/utxos-to-assets.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { UTxO } from "@meshsdk/common"; - -export function utxosToAssets(utxos: UTxO[]): { [key: string]: string } { - const _balance = utxos - .map((utxo) => { - return utxo.output.amount; - }) - .reduce( - (acc, amount) => { - for (const asset of amount) { - if (asset) { - if (acc[asset.unit] == undefined) { - acc[asset.unit] = 0; - } - if (asset.unit in acc) { - acc[asset.unit]! += parseFloat(asset.quantity); - } - } - } - return acc; - }, - {} as { [key: string]: number }, - ); - - return Object.fromEntries( - Object.entries(_balance).map(([key, value]) => [key, value.toString()]), - ); -} diff --git a/packages/mesh-provider/src/index.ts b/packages/mesh-provider/src/index.ts deleted file mode 100644 index a376989dc..000000000 --- a/packages/mesh-provider/src/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -export * from "./begin"; -export * from "./blockfrost"; -export * from "./koios"; -export * from "./maestro"; -export * from "./ogmios"; -export * from "./utxo-rpc"; -export * from "./yaci"; -export * from "./offline"; -export * from "./kupo"; diff --git a/packages/mesh-provider/src/koios.ts b/packages/mesh-provider/src/koios.ts deleted file mode 100644 index 168e93fa2..000000000 --- a/packages/mesh-provider/src/koios.ts +++ /dev/null @@ -1,680 +0,0 @@ -import axios, { AxiosInstance, CreateAxiosDefaults } from "axios"; - -import { - AccountInfo, - Action, - Asset, - AssetMetadata, - BlockInfo, - castProtocol, - DEFAULT_FETCHER_OPTIONS, - fromUTF8, - GovernanceProposalInfo, - IEvaluator, - IFetcher, - IFetcherOptions, - IListener, - ISubmitter, - PlutusScript, - Protocol, - SUPPORTED_HANDLES, - toBytes, - toUTF8, - TransactionInfo, - UTxO, -} from "@meshsdk/common"; -import { - deserializeNativeScript, - fromNativeScript, - normalizePlutusScript, - resolveRewardAddress, - toScriptRef, -} from "@meshsdk/core-cst"; - -import { utxosToAssets } from "./common/utxos-to-assets"; -import { KoiosAsset, KoiosReferenceScript, KoiosUTxO } from "./types"; -import { getAdditionalUtxos, parseAssetUnit, parseHttpError } from "./utils"; - -export type KoiosSupportedNetworks = "api" | "preview" | "preprod" | "guild"; - -export class KoiosProvider - implements IFetcher, IListener, ISubmitter, IEvaluator -{ - private readonly _axiosInstance: AxiosInstance; - private readonly _network: KoiosSupportedNetworks; - - constructor(baseUrl: string); - constructor(network: KoiosSupportedNetworks, token: string, version?: number); - - constructor(...args: unknown[]) { - if (typeof args[0] === "string" && args[0].startsWith("http")) { - this._axiosInstance = axios.create({ - baseURL: args[0], - headers: { - Authorization: `Bearer ${args[1]}`, - }, - }); - this._network = "api"; - } else { - let version = 1; - if (typeof args[2] === "number") { - version = args[2]; - } - - const config: CreateAxiosDefaults = { - baseURL: `https://${args[0]}.koios.rest/api/v${version}`, - }; - - this._network = args[0] as KoiosSupportedNetworks; - - if (typeof args[1] === "string") { - config.headers = { - Authorization: `Bearer ${args[1]}`, - }; - } - - this._axiosInstance = axios.create(config); - } - } - - /** - * Obtain information about a specific stake account. - * @param address - Wallet address to fetch account information - */ - async fetchAccountInfo(address: string): Promise { - try { - const rewardAddress = address.startsWith("addr") - ? resolveRewardAddress(address) - : address; - - const { data, status } = await this._axiosInstance.post("account_info", { - _stake_addresses: [rewardAddress], - }); - - if (status === 200) - return { - poolId: data[0].delegated_pool, - active: data[0].status === "registered", - balance: data[0].total_balance.toString(), - rewards: data[0].rewards_available, - withdrawals: data[0].withdrawals, - }; - - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Fetches the assets for a given address. - * @param address - The address to fetch assets for - * @returns A map of asset unit to quantity - */ - async fetchAddressAssets( - address: string, - ): Promise<{ [key: string]: string }> { - const utxos = await this.fetchAddressUTxOs(address); - return utxosToAssets(utxos); - } - - /** - * Unimplemented - open for contribution, see blockfrost.ts for reference - * @param address - */ - async fetchAddressTxs( - address: string, - option: IFetcherOptions = DEFAULT_FETCHER_OPTIONS, - ): Promise { - try { - const { data, status } = await this._axiosInstance.post(`/address_txs`, { - _addresses: [address], - }); - if (status === 200 || status == 202) { - return data.map((tx: any) => { - return { - hash: tx.tx_hash, - index: 0, - block: "", - slot: "", - fees: "", - size: 0, - deposit: "", - invalidBefore: "", - invalidAfter: "", - }; - }); - } - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * UTXOs of the address. - * @param address - The address to fetch UTXO - * @param asset - UTXOs of a given asset​ - * @returns - Array of UTxOs - */ - async fetchAddressUTxOs(address: string, asset?: string): Promise { - try { - const { data, status } = await this._axiosInstance.post("address_info", { - _addresses: [address], - }); - - if (status === 200) { - const utxos = ( - data - .flatMap((info: { utxo_set: [] }) => info.utxo_set) - .map((utxo: KoiosUTxO) => this.toUTxO(utxo, address)) - ); - - return asset !== undefined - ? utxos.filter( - (utxo) => - utxo.output.amount.find((a) => a.unit === asset) !== undefined, - ) - : utxos; - } - - throw parseHttpError(data); - } catch (error) { - return []; - } - } - - /** - * Fetches the asset addresses for a given asset. - * @param asset - The asset to fetch addresses for - */ - async fetchAssetAddresses( - asset: string, - ): Promise<{ address: string; quantity: string }[]> { - try { - const { policyId, assetName } = parseAssetUnit(asset); - const { data, status } = await this._axiosInstance.get( - `asset_addresses?_asset_policy=${policyId}&_asset_name=${assetName}`, - ); - - if (status === 200) - return data.map( - (item: { - payment_address: string; - quantity: string; - stake_address: string; - }) => ({ - address: item.payment_address, - quantity: item.quantity, - }), - ); - - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Fetches the metadata for a given asset. - * @param asset - The asset to fetch metadata for - * @returns The metadata for the asset - */ - async fetchAssetMetadata(asset: string): Promise { - try { - const { policyId, assetName } = parseAssetUnit(asset); - const { data, status } = await this._axiosInstance.get( - `asset_info?_asset_policy=${policyId}&_asset_name=${assetName}`, - ); - if (status === 200) - return { - ...data[0].minting_tx_metadata[721][policyId][toUTF8(assetName)], - fingerprint: data[0].fingerprint, - totalSupply: data[0].total_supply, - mintingTxHash: data[0].minting_tx_hash, - mintCount: data[0].mint_cnt, - }; - - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Fetches the block information for a given block hash. - * @param hash The block hash to fetch from - * @returns The block information - */ - async fetchBlockInfo(hash: string): Promise { - try { - const { data, status } = await this._axiosInstance.post("block_info", { - _block_hashes: [hash], - }); - - if (status === 200) - return { - confirmations: data[0].num_confirmations, - epoch: data[0].epoch_no, - epochSlot: data[0].epoch_slot.toString(), - fees: data[0].total_fees ?? "", - hash: data[0].hash, - nextBlock: data[0].child_hash ?? "", - operationalCertificate: data[0].op_cert, - output: data[0].total_output ?? "0", - previousBlock: data[0].parent_hash, - size: data[0].block_size, - slot: data[0].abs_slot.toString(), - slotLeader: data[0].pool ?? "", - time: data[0].block_time, - txCount: data[0].tx_count, - VRFKey: data[0].vrf_key, - }; - - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Fetches the list of assets for a given policy ID. - * @param policyId The policy ID to fetch assets for - * @param cursor The cursor for pagination - * @returns The list of assets and the next cursor - */ - async fetchCollectionAssets(policyId: string): Promise<{ assets: Asset[] }> { - try { - const { data, status } = await this._axiosInstance.get( - `policy_asset_info?_asset_policy=${policyId}`, - ); - - if (status === 200) - return { - assets: data.map((asset: KoiosAsset) => ({ - unit: `${asset.policy_id}${asset.asset_name}`, - quantity: asset.total_supply, - })), - }; - - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - async fetchHandle(handle: string): Promise { - if (this._network !== "api") { - throw new Error( - "Does not support fetching addresses by handle on non-mainnet networks.", - ); - } - try { - const assetName = fromUTF8(`${handle.replace("$", "")}`); - const asset = await this.fetchAssetMetadata( - `${SUPPORTED_HANDLES[1]}000de140${assetName}`, - ); - return asset; - } catch (error) { - throw parseHttpError(error); - } - } - - async fetchHandleAddress(handle: string): Promise { - if (this._network !== "api") { - throw new Error( - "Does not support fetching addresses by handle on non-mainnet networks.", - ); - } - try { - const assetName = fromUTF8(handle.replace("$", "")); - const { data, status } = await this._axiosInstance.get( - `asset_addresses?_asset_policy=${SUPPORTED_HANDLES[1]}&_asset_name=${assetName}`, - ); - - if (status === 200) return data[0].payment_address; - - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Fetch the latest protocol parameters. - * @param epoch - * @returns - Protocol parameters - */ - async fetchProtocolParameters(epoch = Number.NaN): Promise { - try { - if (isNaN(epoch)) { - const { data } = await this._axiosInstance.get(`tip`); - epoch = data[0].epoch_no; - } - - const { data, status } = await this._axiosInstance.get( - `epoch_params?_epoch_no=${epoch}`, - ); - - if (status === 200) - return castProtocol({ - coinsPerUtxoSize: data[0].coins_per_utxo_size, - collateralPercent: data[0].collateral_percent, - decentralisation: data[0].decentralisation, - epoch: data[0].epoch_no, - keyDeposit: data[0].key_deposit, - maxBlockExMem: data[0].max_block_ex_mem.toString(), - maxBlockExSteps: data[0].max_block_ex_steps.toString(), - maxBlockHeaderSize: data[0].max_bh_size, - maxBlockSize: data[0].max_block_size, - maxCollateralInputs: data[0].max_collateral_inputs, - maxTxExMem: data[0].max_tx_ex_mem.toString(), - maxTxExSteps: data[0].max_tx_ex_steps.toString(), - maxTxSize: data[0].max_tx_size, - maxValSize: data[0].max_val_size, - minFeeA: data[0].min_fee_a, - minFeeB: data[0].min_fee_b, - minPoolCost: data[0].min_pool_cost, - poolDeposit: data[0].pool_deposit, - priceMem: data[0].price_mem, - priceStep: data[0].price_step, - }); - - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Fetches the transaction information for a given transaction hash. - * @param hash The transaction hash to fetch - * @returns The transaction information - */ - async fetchTxInfo(hash: string): Promise { - try { - const { data, status } = await this._axiosInstance.post("tx_info", { - _tx_hashes: [hash], - }); - - if (status === 200 && data.length == 1) - return { - block: data[0].block_hash, - deposit: data[0].deposit, - fees: data[0].fee, - hash: data[0].tx_hash, - index: data[0].tx_block_index, - invalidAfter: data[0].invalid_after?.toString() ?? "", - invalidBefore: data[0].invalid_before?.toString() ?? "", - slot: data[0].absolute_slot.toString(), - size: data[0].tx_size, - }; - - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Get UTxOs for a given hash. - * @param hash The transaction hash - * @param index Optional - The output index for filtering post fetching - * @returns - Array of UTxOs - */ - async fetchUTxOs(hash: string, index?: number): Promise { - try { - // get the assets too - const { data, status } = await this._axiosInstance.post("tx_info", { - _tx_hashes: [hash], - _assets: true, - _scripts: true, - _bytecode: true, - }); - - if (status === 200) { - const utxos: UTxO[] = data[0].outputs.map((utxo: KoiosUTxO) => - this.toUTxO(utxo, utxo.payment_addr.bech32), - ); - - if (index !== undefined) { - return utxos.filter((utxo) => utxo.input.outputIndex === index); - } - - return utxos; - } - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - async fetchGovernanceProposal( - txHash: string, - certIndex: number, - ): Promise { - throw new Error("Method not implemented"); - } - - /** - * A generic method to fetch data from a URL. - * @param url - The URL to fetch data from - * @returns - The data fetched from the URL - */ - async get(url: string): Promise { - try { - const { data, status } = await this._axiosInstance.get(url); - if (status === 200 || status == 202) { - return data; - } - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * A generic method to post data to a URL. - * @param url - The URL to fetch data from - * @param body - Payload - * @param headers - Specify headers, default: { "Content-Type": "application/json" } - * @returns - Data - */ - async post( - url: string, - body: any, - headers = { "Content-Type": "application/json" }, - ): Promise { - try { - const { data, status } = await this._axiosInstance.post(url, body, { - headers, - }); - - if (status === 200 || status == 202) return data; - - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Allow you to listen to a transaction confirmation. Upon confirmation, the callback will be called. - * @param txHash - The transaction hash to listen for confirmation - * @param callback - The callback function to call when the transaction is confirmed - * @param limit - The number of blocks to wait for confirmation - */ - onTxConfirmed(txHash: string, callback: () => void, limit = 100): void { - let attempts = 0; - - const checkTx = setInterval(() => { - if (attempts >= limit) clearInterval(checkTx); - - this.fetchTxInfo(txHash) - .then((txInfo) => { - this.fetchBlockInfo(txInfo.block) - .then((blockInfo) => { - if (blockInfo?.confirmations > 0) { - clearInterval(checkTx); - callback(); - } - }) - .catch(() => { - attempts += 1; - }); - }) - .catch(() => { - attempts += 1; - }); - }, 5_000); - } - - /** - * Deprecated, use fetchAddressTxs instead - * @param address - * @returns - partial TransactionInfo - */ - async fetchAddressTransactions(address: string): Promise { - return await this.fetchAddressTxs(address); - } - - /** - * Submit a serialized transaction to the network. - * @param tx - The serialized transaction in hex to submit - * @returns The transaction hash of the submitted transaction - */ - async submitTx(tx: string): Promise { - try { - const headers = { "Content-Type": "application/cbor" }; - - const { data, status } = await this._axiosInstance.post( - "submittx", - toBytes(tx), - { headers }, - ); - - if (status === 202) return data; - - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - private toUTxO(utxo: KoiosUTxO, address: string): UTxO { - return { - input: { - outputIndex: utxo.tx_index, - txHash: utxo.tx_hash, - }, - output: { - address: address, - amount: [ - { unit: "lovelace", quantity: utxo.value }, - ...utxo.asset_list.map( - (a: KoiosAsset) => - { - unit: `${a.policy_id}${a.asset_name}`, - quantity: `${a.quantity}`, - }, - ), - ], - dataHash: utxo.datum_hash ?? undefined, - plutusData: utxo.inline_datum?.bytes ?? undefined, - scriptRef: this.resolveScriptRef(utxo.reference_script), - scriptHash: utxo.reference_script?.hash ?? undefined, - }, - }; - } - - private resolveScriptRef = ( - kScriptRef: KoiosReferenceScript | undefined, - ): string | undefined => { - if (kScriptRef) { - let script; - if (kScriptRef.type.startsWith("plutus")) { - const normalized = normalizePlutusScript( - kScriptRef.bytes, - "DoubleCBOR", - ); - script = { - code: normalized, - version: kScriptRef.type.replace("plutus", ""), - }; - } else { - script = fromNativeScript(deserializeNativeScript(kScriptRef.bytes)); - } - - if (script) return toScriptRef(script).toCbor().toString(); - } - - return undefined; - }; - - /** - * Evaluates the resources required to execute the transaction - * @param cbor - The transaction CBOR hex string to evaluate - * @param additionalUtxos - Optional array of additional UTxOs to include in the evaluation context for resolving transaction inputs - * @param additionalTxs - Optional array of transaction CBOR hex strings to provide additional UTxOs from their outputs - */ - async evaluateTx( - cbor: string, - additionalUtxos?: UTxO[], - additionalTxs?: string[], - ): Promise[]> { - const additionalUtxo = getAdditionalUtxos( - "koios", - additionalUtxos, - additionalTxs, - ); - - try { - const headers = { - "Content-Type": "application/json", - Accept: "application/json", - }; - - const body = { - jsonrpc: "2.0", - method: "evaluateTransaction", - params: { - transaction: { - cbor, - }, - additionalUtxo, - }, - }; - - const { data, status } = await this._axiosInstance.post("ogmios", body, { - headers, - }); - - if (status === 200 || status === 202) { - if (!data.result || !data.result.length) { - return []; - } - - return data.result.map((val: any) => { - if (!val.validator || !val.budget) { - throw new Error("Invalid response format"); - } - return >{ - index: val.validator.index, - tag: - val.validator.purpose.toUpperCase() === "PUBLISH" - ? "CERT" - : val.validator.purpose.toUpperCase(), - budget: { - mem: val.budget.memory, - steps: val.budget.cpu, - }, - }; - }); - } - - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } -} diff --git a/packages/mesh-provider/src/kupo.ts b/packages/mesh-provider/src/kupo.ts deleted file mode 100644 index 8c83e8978..000000000 --- a/packages/mesh-provider/src/kupo.ts +++ /dev/null @@ -1,148 +0,0 @@ -import axios, { AxiosInstance } from "axios"; - -import { - AccountInfo, - Asset, - AssetMetadata, - BlockInfo, - GovernanceProposalInfo, - IFetcher, - IFetcherOptions, - Protocol, - TransactionInfo, - UTxO, -} from "@meshsdk/common"; - -import { parseHttpError } from "./utils"; - -// Unfortunately, Kupo is specifically used for fetching UTxOs and does not implement all methods of the IFetcher interface. -// Kupo is a specialized service for indexing Transaction outputs (UTxOs) and does not provide all the -// necessary methods for a full IFetcher implementation. -export class KupoProvider implements IFetcher { - baseUrl: string; - private readonly _axiosInstance: AxiosInstance; - constructor(baseUrl: string) { - this.baseUrl = baseUrl; - this._axiosInstance = axios.create({ - baseURL: this.baseUrl, - }); - } - fetchAccountInfo(address: string): Promise { - throw new Error("Method not implemented."); - } - async fetchAddressUTxOs(address: string, asset?: string): Promise { - const { status, data } = await this.get(`${address}?unspent`); - if (status === 200) { - return data - .map((utxo: any) => { - const meshValue: Asset[] = this.kupoValueToMeshValue(utxo.value); - if (asset) { - if (!meshValue.some((v) => v.unit === asset)) { - return null; // Skip UTxO if it does not contain the specified asset - } - } - return { - input: { - txHash: utxo.transaction_id, - outputIndex: utxo.output_index, - }, - output: { - address: utxo.address, - amount: this.kupoValueToMeshValue(utxo.value), - }, - }; - }) - .filter((utxo: any) => utxo !== null) as UTxO[]; - } else { - parseHttpError(data); - } - return []; - } - fetchAddressTxs( - address: string, - options?: IFetcherOptions, - ): Promise { - throw new Error("Method not implemented."); - } - fetchAssetAddresses( - asset: string, - ): Promise<{ address: string; quantity: string }[]> { - throw new Error("Method not implemented."); - } - fetchAssetMetadata(asset: string): Promise { - throw new Error("Method not implemented."); - } - fetchBlockInfo(hash: string): Promise { - throw new Error("Method not implemented."); - } - fetchCollectionAssets( - policyId: string, - cursor?: number | string, - ): Promise<{ assets: Asset[]; next?: string | number | null }> { - throw new Error("Method not implemented."); - } - fetchProtocolParameters(epoch: number): Promise { - throw new Error("Method not implemented."); - } - fetchTxInfo(hash: string): Promise { - throw new Error("Method not implemented."); - } - async fetchUTxOs(hash: string, index?: number): Promise { - const { status, data } = await this.get( - index === undefined ? `*@${hash}` : `${index}@${hash}`, - ); - if (status === 200) { - return data.map((utxo: any) => { - return { - input: { - txHash: utxo.transaction_id, - outputIndex: utxo.output_index, - }, - output: { - address: utxo.address, - amount: this.kupoValueToMeshValue(utxo.value), - }, - }; - }) as UTxO[]; - } else { - parseHttpError(data); - } - return []; - } - fetchGovernanceProposal( - txHash: string, - certIndex: number, - ): Promise { - throw new Error("Method not implemented."); - } - get(pattern: string): Promise { - try { - return this._axiosInstance.get(`matches/${pattern}`); - } catch (error) { - throw new Error(`Failed to fetch data from Kupo: ${error}`); - } - } - - private kupoValueToMeshValue(value: any): any { - if (value === null || value === undefined) return value; - let meshValue: Asset[] = []; - meshValue.push({ - unit: "lovelace", - quantity: String(value.coins), - }); - for (const [assetClass, quantity] of Object.entries(value.assets)) { - let [policyId, assetName] = assetClass.split("."); - if (!policyId) { - throw new Error("Invalid asset class format found"); - } - if (!assetName) { - assetName = ""; - } - meshValue.push({ - unit: policyId + assetName, - quantity: String(quantity), - }); - } - return meshValue; - } -} diff --git a/packages/mesh-provider/src/maestro.ts b/packages/mesh-provider/src/maestro.ts deleted file mode 100644 index 70683c5a0..000000000 --- a/packages/mesh-provider/src/maestro.ts +++ /dev/null @@ -1,667 +0,0 @@ -import axios, { AxiosInstance } from "axios"; - -import { - AccountInfo, - Action, - Asset, - AssetMetadata, - BlockInfo, - castProtocol, - fromUTF8, - GovernanceProposalInfo, - IEvaluator, - IFetcher, - IFetcherOptions, - IListener, - ISubmitter, - NativeScript, - NonFungibleAssetMetadata, - PlutusScript, - Protocol, - SUPPORTED_HANDLES, - toBytes, - TransactionInfo, - UTxO, -} from "@meshsdk/common"; -import { - normalizePlutusScript, - resolveRewardAddress, - toScriptRef, - VrfVkBech32, -} from "@meshsdk/core-cst"; - -import { utxosToAssets } from "./common/utxos-to-assets"; -import { MaestroAssetExtended, MaestroUTxO } from "./types/maestro"; -import { getAdditionalUtxos, parseAssetUnit, parseHttpError } from "./utils"; - -export type MaestroSupportedNetworks = "Mainnet" | "Preprod" | "Preview"; - -interface MaestroConfig { - network: MaestroSupportedNetworks; - apiKey: string; - turboSubmit?: boolean; -} - -export class MaestroProvider - implements IFetcher, ISubmitter, IEvaluator, IListener -{ - private readonly _axiosInstance: AxiosInstance; - private readonly _amountsAsStrings = { - headers: { - "amounts-as-strings": "true", - }, - }; - private readonly _network: MaestroSupportedNetworks; - private submitTxToBytes = true; - submitUrl: string; - - constructor({ network, apiKey, turboSubmit = false }: MaestroConfig) { - this._axiosInstance = axios.create({ - baseURL: `https://${network}.gomaestro-api.org/v1`, - headers: { "api-key": apiKey }, - }); - this.submitUrl = turboSubmit ? "txmanager/turbosubmit" : "txmanager"; - this._network = network; - } - - /** - * Evaluates the resources required to execute the transaction - * @param cbor - The transaction CBOR hex string to evaluate - * @param additionalUtxos - Optional array of additional UTxOs to include in the evaluation context for resolving transaction inputs - * @param additionalTxs - Optional array of transaction CBOR hex strings to provide additional UTxOs from their outputs - */ - async evaluateTx( - cbor: string, - additionalUtxos?: UTxO[], - additionalTxs?: string[], - ): Promise[]> { - const additional_utxos = getAdditionalUtxos( - "maestro", - additionalUtxos, - additionalTxs, - ); - - try { - const { data, status } = await this._axiosInstance.post( - "transactions/evaluate", - { cbor, additional_utxos }, - ); - if (status === 200) { - const tagMap: { [key: string]: string } = { - spend: "SPEND", - mint: "MINT", - cert: "CERT", - wdrl: "REWARD", - }; - const result = data.map((action: any) => { - const budget = action.ex_units; - const index = action.redeemer_index; - const tag = tagMap[action.redeemer_tag]; - return { budget, index, tag }; - }); - return result; - } - - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Obtain information about a specific stake account. - * @param address - Wallet address to fetch account information - */ - async fetchAccountInfo(address: string): Promise { - const rewardAddress = address.startsWith("addr") - ? resolveRewardAddress(address) - : address; - - try { - const { data: timestampedData, status } = await this._axiosInstance.get( - `accounts/${rewardAddress}`, - this._amountsAsStrings, - ); - - if (status === 200) { - const data = timestampedData.data; - return { - poolId: data.delegated_pool, - active: data.registered, - balance: data.total_balance, - rewards: data.rewards_available, - withdrawals: data.total_withdrawn, - }; - } - throw parseHttpError(timestampedData); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Fetches the assets for a given address. - * @param address - The address to fetch assets for - * @returns A map of asset unit to quantity - */ - async fetchAddressAssets( - address: string, - ): Promise<{ [key: string]: string }> { - const utxos = await this.fetchAddressUTxOs(address); - return utxosToAssets(utxos); - } - - /** - * UTXOs of the address. - * @param address - The address to fetch UTXO - * @param asset - UTXOs of a given asset​ - * @returns - Array of UTxOs - */ - async fetchAddressUTxOs(address: string, asset?: string): Promise { - const queryPredicate = (() => { - if ( - address.startsWith("addr_vkh") || - address.startsWith("addr_shared_vkh") - ) - return `addresses/cred/${address}`; - else return `addresses/${address}`; - })(); - const appendAssetString = asset ? `&asset=${asset}` : ""; - const paginateUTxOs = async ( - cursor = null, - utxos: UTxO[] = [], - ): Promise => { - const appendCursorString = cursor === null ? "" : `&cursor=${cursor}`; - const { data: timestampedData, status } = await this._axiosInstance.get( - `${queryPredicate}/utxos?count=100${appendAssetString}${appendCursorString}`, - this._amountsAsStrings, - ); - if (status === 200) { - const data = timestampedData.data; - const pageUTxOs: UTxO[] = data.map(this.toUTxO); - const addedUtxos = [...utxos, ...pageUTxOs]; - const nextCursor = timestampedData.next_cursor; - return nextCursor == null - ? addedUtxos - : paginateUTxOs(nextCursor, addedUtxos); - } - - throw parseHttpError(timestampedData); - }; - - try { - return await paginateUTxOs(); - } catch (error) { - return []; - } - } - - /** - * Unimplemented - open for contribution - * - * Transactions for an address. The `TransactionInfo` would only return the `hash`, `inputs`, and `outputs`. - * @param address - * @returns - partial TransactionInfo - */ - async fetchAddressTxs( - address: string, - option: IFetcherOptions = { maxPage: 100, order: "desc" }, - ): Promise { - // open for contribution, see blockfrost.ts for reference - throw new Error("Method not implemented."); - } - - /** - * Fetches the asset addresses for a given asset. - * @param asset - The asset to fetch addresses for - */ - async fetchAssetAddresses( - asset: string, - ): Promise<{ address: string; quantity: string }[]> { - const { policyId, assetName } = parseAssetUnit(asset); - const paginateAddresses = async ( - cursor = null, - addressesWithQuantity: { address: string; quantity: string }[] = [], - ): Promise<{ address: string; quantity: string }[]> => { - const appendCursorString = cursor === null ? "" : `&cursor=${cursor}`; - const { data: timestampedData, status } = await this._axiosInstance.get( - `assets/${policyId}${assetName}/addresses?count=100${appendCursorString}`, - this._amountsAsStrings, - ); - if (status === 200) { - const data = timestampedData.data; - const pageAddressesWithQuantity: { - address: string; - quantity: string; - }[] = data.map((a: { address: string; amount: string }) => { - return { address: a.address, quantity: a.amount }; - }); - const nextCursor = timestampedData.next_cursor; - const addedData = [ - ...addressesWithQuantity, - ...pageAddressesWithQuantity, - ]; - return nextCursor == null - ? addedData - : paginateAddresses(nextCursor, addedData); - } - - throw parseHttpError(timestampedData); - }; - - try { - return await paginateAddresses(); - } catch (error) { - return []; - } - } - - /** - * Fetches the metadata for a given asset. - * @param asset - The asset to fetch metadata for - * @returns The metadata for the asset - */ - async fetchAssetMetadata(asset: string): Promise { - try { - const { policyId, assetName } = parseAssetUnit(asset); - const { data: timestampedData, status } = await this._axiosInstance.get( - `assets/${policyId}${assetName}`, - ); - if (status === 200) { - const data = timestampedData.data; - return { - ...data.asset_standards.cip25_metadata, - ...data.asset_standards.cip68_metadata, - fingerprint: data.fingerprint, - totalSupply: data.total_supply, - mintingTxHash: data.latest_mint_tx.tx_hash, - mintCount: data.mint_tx_count, - }; - } - - throw parseHttpError(timestampedData); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Fetches the block information for a given block hash. - * @param hash The block hash to fetch from - * @returns The block information - */ - async fetchBlockInfo(hash: string): Promise { - try { - const { data: timestampedData, status } = await this._axiosInstance.get( - `blocks/${hash}`, - this._amountsAsStrings, - ); - - if (status === 200) { - const data = timestampedData.data; - return { - confirmations: data.confirmations, - epoch: data.epoch, - epochSlot: data.epoch_slot.toString(), - fees: data.total_fees, - hash: data.hash, - nextBlock: data.next_block ?? "", - operationalCertificate: data.operational_certificate?.hot_vkey, - output: data.total_output_lovelace ?? "0", - previousBlock: data.previous_block, - size: data.size, - slot: data.absolute_slot.toString(), - slotLeader: data.block_producer ?? "", - time: Date.parse(data.timestamp) / 1000, - txCount: data.tx_hashes.length, - VRFKey: VrfVkBech32.fromHex(data.vrf_key), - }; - } - - throw parseHttpError(timestampedData); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Fetches the list of assets for a given policy ID. - * @param policyId The policy ID to fetch assets for - * @param cursor The cursor for pagination - * @returns The list of assets and the next cursor - */ - async fetchCollectionAssets( - policyId: string, - cursor?: string, - ): Promise<{ assets: Asset[]; next: string | number | null }> { - try { - const { data: timestampedData, status } = await this._axiosInstance.get( - `policy/${policyId}/assets?count=100${ - cursor ? `&cursor=${cursor}` : "" - }`, - ); - - if (status === 200) { - const data = timestampedData.data; - return { - assets: data.map((asset: MaestroAssetExtended) => ({ - unit: policyId + asset.asset_name, - quantity: asset.total_supply, - })), - next: timestampedData.next_cursor, - }; - } - - throw parseHttpError(timestampedData); - } catch (error) { - return { assets: [], next: null }; - } - } - - async fetchHandle(handle: string): Promise { - if (this._network !== "Mainnet") { - throw new Error( - "Does not support fetching addresses by handle on non-mainnet networks.", - ); - } - try { - const assetName = fromUTF8(`${handle.replace("$", "")}`); - const asset = (await this.fetchAssetMetadata( - `${SUPPORTED_HANDLES[1]}000643b0${assetName}`, - )) as NonFungibleAssetMetadata; - - if (asset.metadata !== undefined) return asset.metadata; - - throw "Problem fetching metadata"; - } catch (error) { - throw parseHttpError(error); - } - } - - async fetchHandleAddress(handle: string): Promise { - if (this._network !== "Mainnet") { - throw new Error( - "Does not support fetching addresses by handle on non-mainnet networks.", - ); - } - - try { - const handleWithoutDollar = - handle.charAt(0) === "$" ? handle.substring(1) : handle; - const { data: timestampedData, status } = await this._axiosInstance.get( - `ecosystem/adahandle/${handleWithoutDollar}`, - ); - - if (status === 200) return timestampedData.data; - - throw parseHttpError(timestampedData); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Fetch the latest protocol parameters. - * @param epoch - * @returns - Protocol parameters - */ - async fetchProtocolParameters(epoch = Number.NaN): Promise { - if (!isNaN(epoch)) - throw new Error( - "Maestro only supports fetching Protocol parameters of the latest completed epoch.", - ); - - // Decimal numbers in Maestro are given as ratio of two numbers represented by string of format "firstNumber/secondNumber". - const decimalFromRationalString = (str: string): number => { - const forwardSlashIndex = str.indexOf("/"); - return ( - parseInt(str.slice(0, forwardSlashIndex)) / - parseInt(str.slice(forwardSlashIndex + 1)) - ); - }; - try { - const { data: timestampedData, status } = - await this._axiosInstance.get("protocol-params"); - if (status === 200) { - const data = timestampedData.data; - try { - const { data: timestampedDataEpochData, status: epochStatus } = - await this._axiosInstance.get("epochs/current"); - if (epochStatus === 200) { - const epochData = timestampedDataEpochData.data; - return castProtocol({ - coinsPerUtxoSize: parseInt(data.coins_per_utxo_byte), - collateralPercent: parseInt(data.collateral_percentage), - decentralisation: 0, // Deprecated in Babbage era. - epoch: parseInt(epochData.epoch_no), - keyDeposit: parseInt(data.stake_key_deposit), - maxBlockExMem: - data.max_execution_units_per_block.memory.toString(), - maxBlockExSteps: - data.max_execution_units_per_block.steps.toString(), - maxBlockHeaderSize: parseInt(data.max_block_header_size), - maxBlockSize: parseInt(data.max_block_body_size), - maxCollateralInputs: parseInt(data.max_collateral_inputs), - maxTxExMem: - data.max_execution_units_per_transaction.memory.toString(), - maxTxExSteps: - data.max_execution_units_per_transaction.steps.toString(), - maxTxSize: parseInt(data.max_tx_size), - maxValSize: parseInt(data.max_value_sized), - minFeeA: data.min_fee_coefficient, - minFeeB: data.min_fee_constant, - minPoolCost: data.min_pool_cost.toString(), - poolDeposit: parseInt(data.pool_deposit), - priceMem: decimalFromRationalString(data.prices.memory), - priceStep: decimalFromRationalString(data.prices.steps), - }); - } - throw parseHttpError(timestampedDataEpochData); - } catch (error) { - throw parseHttpError(error); - } - } - throw parseHttpError(timestampedData); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Fetches the transaction information for a given transaction hash. - * @param hash The transaction hash to fetch - * @returns The transaction information - */ - async fetchTxInfo(hash: string): Promise { - try { - const { data: timestampedData, status } = await this._axiosInstance.get( - `transactions/${hash}`, - ); - - if (status === 200) { - const data = timestampedData.data; - return { - block: data.block_hash, - deposit: data.deposit.toString(), - fees: data.fee.toString(), - hash: data.tx_hash, - index: data.block_tx_index, - invalidAfter: data.invalid_hereafter ?? "", - invalidBefore: data.invalid_before ?? "", - slot: data.block_absolute_slot.toString(), - size: data.size - 1, - }; - } - throw parseHttpError(timestampedData); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Get UTxOs for a given hash. - * @param hash The transaction hash - * @param index Optional - The output index for filtering post fetching - * @returns - Array of UTxOs - */ - async fetchUTxOs(hash: string, index?: number): Promise { - try { - const { data: timestampedData, status } = await this._axiosInstance.get( - `transactions/${hash}`, - this._amountsAsStrings, - ); - if (status === 200) { - const msOutputs = timestampedData.data.outputs as MaestroUTxO[]; - const outputs = msOutputs.map(this.toUTxO); - - if (index !== undefined) { - return outputs.filter((utxo) => utxo.input.outputIndex === index); - } - - return outputs; - } - throw parseHttpError(timestampedData); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Unimplemented - open for contribution - * - * Fetches the governance proposal information. - * @param txHash The transaction hash of the proposal - * @param certIndex The certificate index of the proposal - * @returns The governance proposal information - */ - async fetchGovernanceProposal( - txHash: string, - certIndex: number, - ): Promise { - throw new Error("Method not implemented by Maestro"); - } - - async get(url: string): Promise { - try { - const { data, status } = await this._axiosInstance.get(url); - if (status === 200) { - return data; - } - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - async post(url: string, body: any): Promise { - try { - const { data, status } = await this._axiosInstance.post(url, body, { - headers: { - 'Content-Type': 'application/json', - }, - }); - if (status === 200) { - return data; - } - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Allow you to listen to a transaction confirmation. Upon confirmation, the callback will be called. - * @param txHash - The transaction hash to listen for confirmation - * @param callback - The callback function to call when the transaction is confirmed - * @param limit - The number of blocks to wait for confirmation - */ - onTxConfirmed(txHash: string, callback: () => void, limit = 100): void { - let attempts = 0; - - const checkTx = setInterval(() => { - if (attempts >= limit) clearInterval(checkTx); - - this.fetchTxInfo(txHash) - .then((txInfo) => { - this.fetchBlockInfo(txInfo.block) - .then((blockInfo) => { - if (blockInfo?.confirmations > 0) { - clearInterval(checkTx); - callback(); - } - }) - .catch(() => { - attempts += 1; - }); - }) - .catch(() => { - attempts += 1; - }); - }, 5_000); - } - - setSubmitTxToBytes(value: boolean): void { - this.submitTxToBytes = value; - } - - /** - * Submit a serialized transaction to the network. - * @param tx - The serialized transaction in hex to submit - * @returns The transaction hash of the submitted transaction - */ - async submitTx(tx: string): Promise { - try { - const headers = { "Content-Type": "application/cbor" }; - const { data, status } = await this._axiosInstance.post( - this.submitUrl, - this.submitTxToBytes ? toBytes(tx) : tx, - { headers }, - ); - - if (status === 202) return data; - - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - private toUTxO = (utxo: MaestroUTxO): UTxO => ({ - input: { - outputIndex: utxo.index, - txHash: utxo.tx_hash, - }, - output: { - address: utxo.address, - amount: utxo.assets.map((asset) => ({ - unit: asset.unit, - quantity: asset.amount, - })), - dataHash: utxo.datum?.hash, - plutusData: utxo.datum?.bytes, - scriptRef: this.resolveScript(utxo), - scriptHash: utxo.reference_script?.hash, - }, - }); - - private resolveScript = (utxo: MaestroUTxO) => { - if (utxo.reference_script) { - let script; - if (utxo.reference_script.type === "native") { - script = utxo.reference_script.json; - } else { - const scriptBytes = utxo.reference_script.bytes; - if (scriptBytes) { - const normalized = normalizePlutusScript(scriptBytes, "DoubleCBOR"); - script = { - code: normalized, - version: utxo.reference_script.type.replace("plutusv", "V"), - }; - } else { - throw new Error("Script bytes not found"); - } - } - return toScriptRef(script).toCbor().toString(); - } else return undefined; - }; -} diff --git a/packages/mesh-provider/src/offline/index.ts b/packages/mesh-provider/src/offline/index.ts deleted file mode 100644 index 08ef88907..000000000 --- a/packages/mesh-provider/src/offline/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./offline-fetcher"; diff --git a/packages/mesh-provider/src/offline/offline-fetcher.ts b/packages/mesh-provider/src/offline/offline-fetcher.ts deleted file mode 100644 index c8fcdcd43..000000000 --- a/packages/mesh-provider/src/offline/offline-fetcher.ts +++ /dev/null @@ -1,1056 +0,0 @@ -import { randomBytes } from "crypto"; - -import { - AccountInfo, - Asset, - AssetMetadata, - BlockInfo, - fromUTF8, - IFetcher, - IFetcherOptions, - Network, - Protocol, - resolveEpochNo, - resolveSlotNo, - SLOT_CONFIG_NETWORK, - SUPPORTED_HANDLES, - TransactionInfo, - UTxO, -} from "@meshsdk/common"; -import { Serialization, TransactionOutput, Value } from "@meshsdk/core-cst"; - -import { parseHttpError } from "../utils"; - -type AssetAddress = { - address: string; - quantity: string; -}; - -/** - * OfflineFetcher implements the IFetcher interface to provide offline access to blockchain data. - * This class allows working with pre-loaded blockchain data without requiring network connectivity. - * It's useful for testing, development, and scenarios where offline operation is needed. - * - * The class maintains internal storage for various blockchain data types: - * - Account information - * - UTXOs (Unspent Transaction Outputs) - * - Asset addresses and metadata - * - Block information - * - Protocol parameters - * - Transaction information - * - * Example usage: - * ```typescript - * import { OfflineFetcher } from '@meshsdk/core'; - * - * // Create a new instance - * const fetcher = new OfflineFetcher(); - * //or const fetcher = new OfflineFetcher("mainnet"); - * - * // Add some blockchain data - * fetcher.addAccount(address, accountInfo); - * fetcher.addUTxOs(utxos); - * fetcher.addSerializedTransaction("txHash"); - * - * // Use the fetcher with MeshWallet - * const wallet = new MeshWallet({ - * networkId: 0, - * fetcher: fetcher, - * key: { - * type: 'address', - * address: walletAddress - * } - * }); - * ``` - */ -export class OfflineFetcher implements IFetcher { - private accounts: Record = {}; - private utxos: Record = {}; - private assetAddresses: Record = {}; - private assetMetadata: Record = {}; - private blocks: Record = {}; - private collections: Record = {}; - private protocolParameters: Record = {}; - private transactions: Record = {}; - - constructor(private network?: Network) {} - - private paginate( - items: T[], - cursor?: number | string, - pageSize: number = 20, - ): { paginatedItems: T[]; nextCursor?: number } { - const startIndex = cursor != null ? parseInt(String(cursor), 10) : 0; - const paginatedItems = items.slice(startIndex, startIndex + pageSize); - const nextCursor = - startIndex + pageSize < items.length ? startIndex + pageSize : undefined; - return { paginatedItems, nextCursor }; - } - - /** - * Fetches account information for a given address. - * @param address - Address to fetch info for - * @returns Promise resolving to account information - * @throws Error if account not found - */ - async fetchAccountInfo(address: string): Promise { - const account = this.accounts[address]; - if (!account) throw new Error(`Account not found: ${address}`); - return account; - } - - /** - * Fetches UTXOs for a given address, optionally filtered by asset. - * @param address - Address to fetch UTXOs for - * @param asset - Optional asset ID to filter UTXOs - * @returns Promise resolving to array of UTXOs - */ - async fetchAddressUTxOs(address: string, asset?: string): Promise { - const addressUtxos = this.utxos[address] || []; - return asset - ? addressUtxos.filter((utxo) => - utxo.output.amount.some((a) => a.unit === asset), - ) - : addressUtxos; - } - - /** - * WIP - NOT IMPLEMENTED - * @param address - * @param options - */ - fetchAddressTxs( - address: string, - options?: IFetcherOptions, - ): Promise { - throw new Error("Method not implemented."); - } - - /** - * Fetches addresses holding a specific asset. - * @param asset - Asset identifier - * @returns Promise resolving to array of asset addresses and quantities - */ - async fetchAssetAddresses(asset: string): Promise { - if (!OfflineFetcher.isValidHex(asset)) { - throw new Error("Invalid asset: must be a hex string"); - } - - const addressMap = new Map(); - - // Get addresses from asset addresses registry - const registryAddresses = this.assetAddresses[asset] || []; - for (const addr of registryAddresses) { - addressMap.set(addr.address, BigInt(addr.quantity)); - } - - // Get addresses from UTXOs - for (const [address, utxos] of Object.entries(this.utxos)) { - for (const utxo of utxos) { - const assetAmount = utxo.output.amount.find( - (amt) => amt.unit === asset, - ); - if (assetAmount) { - const currentAmount = addressMap.get(address) || BigInt(0); - addressMap.set(address, currentAmount + BigInt(assetAmount.quantity)); - } - } - } - - // Convert map to array of AssetAddress objects - return Array.from(addressMap.entries()) - .filter(([_, quantity]) => quantity > BigInt(0)) - .map(([address, quantity]) => ({ - address, - quantity: quantity.toString(), - })); - } - - /** - * Fetches all assets associated with an address. - * @param address - Address to fetch assets for - * @returns Promise resolving to array of assets held by the address - */ - async fetchAddressAssets(address: string): Promise { - if (!OfflineFetcher.isValidAddress(address)) { - throw new Error( - "Invalid address: must be a valid Bech32 or Base58 address", - ); - } - - const assetMap = new Map(); - - // Get assets from UTXOs - const addressUtxos = this.utxos[address] || []; - for (const utxo of addressUtxos) { - for (const amount of utxo.output.amount) { - const currentAmount = assetMap.get(amount.unit) || BigInt(0); - assetMap.set(amount.unit, currentAmount + BigInt(amount.quantity)); - } - } - - // Get assets from asset addresses registry - for (const [assetId, addresses] of Object.entries(this.assetAddresses)) { - const assetAddress = addresses.find((addr) => addr.address === address); - if (assetAddress) { - const currentAmount = assetMap.get(assetId) || BigInt(0); - assetMap.set(assetId, currentAmount + BigInt(assetAddress.quantity)); - } - } - - // Convert map back to array of Assets - return Array.from(assetMap.entries()).map(([unit, quantity]) => ({ - unit, - quantity: quantity.toString(), - })); - } - - /** - * Fetches metadata for a specific asset. - * @param asset - Asset identifier - * @returns Promise resolving to asset metadata - * @throws Error if asset metadata not found - */ - async fetchAssetMetadata(asset: string): Promise { - const metadata = this.assetMetadata[asset]; - if (!metadata) throw new Error(`Asset metadata not found: ${asset}`); - return metadata; - } - - /** - * Fetches information about a specific block. - * @param hash - Block hash - * @returns Promise resolving to block information - * @throws Error if block not found - */ - async fetchBlockInfo(hash: string): Promise { - const block = this.blocks[hash]; - if (!block) throw new Error(`Block not found: ${hash}`); - return block; - } - - /** - * Fetches assets in a collection (by policy ID) with pagination. - * @param policyId - Policy ID of the collection - * @param cursor - Optional pagination cursor - * @returns Promise resolving to paginated assets and next cursor - * @throws Error if collection not found or invalid cursor - */ - async fetchCollectionAssets( - policyId: string, - cursor?: number | string, - ): Promise<{ assets: Asset[]; next?: string | number }> { - const assets = this.collections[policyId]; - if (!assets) throw new Error(`Collection not found: ${policyId}`); - - if (cursor && !OfflineFetcher.isIntegerString(String(cursor))) { - throw new Error("Invalid cursor: must be a string of digits"); - } - - const { paginatedItems, nextCursor } = this.paginate(assets, cursor); - return { assets: paginatedItems, next: nextCursor }; - } - - /** - * Fetches metadata for a handle. - * @param handle - Handle to fetch metadata for - * @returns Promise resolving to handle metadata - * @throws Error if handle not found or invalid - */ - async fetchHandle(handle: string): Promise { - try { - const assetName = fromUTF8(handle.replace("$", "")); - const handleAsset = `${SUPPORTED_HANDLES[1]}000de140${assetName}`; - return await this.fetchAssetMetadata(handleAsset); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Fetches address associated with a handle. - * @param handle - Handle to fetch address for - * @returns Promise resolving to address - * @throws Error if no address found for handle - */ - async fetchHandleAddress(handle: string): Promise { - const assetName = fromUTF8(handle.replace("$", "")); - const policyId = SUPPORTED_HANDLES[1]; - const addresses = await this.fetchAssetAddresses(`${policyId}${assetName}`); - - const address = addresses[0]?.address; - if (!address) { - throw new Error(`No addresses found for handle: ${handle}`); - } - - return address; - } - - /** - * Fetches protocol parameters for a specific epoch. - * @param epoch - Epoch number - * @returns Promise resolving to protocol parameters - * @throws Error if parameters not found for epoch - */ - async fetchProtocolParameters(epoch?: number): Promise { - if (!epoch) { - const maxEpochNumber = Math.max( - ...Object.keys(this.protocolParameters).map(Number), - ); - return this.protocolParameters[maxEpochNumber]!; - } - const parameters = this.protocolParameters[epoch]; - if (!parameters) - throw new Error(`Protocol parameters not found for epoch: ${epoch}`); - return parameters; - } - - /** - * Fetches information about a specific transaction. - * @param hash - Transaction hash - * @returns Promise resolving to transaction information - * @throws Error if transaction not found - */ - async fetchTxInfo(hash: string): Promise { - const transaction = this.transactions[hash]; - if (!transaction) throw new Error(`Transaction not found: ${hash}`); - return transaction; - } - - /** - * Fetches all UTXOs associated with a specific transaction hash. - * @param hash - Transaction hash to fetch UTXOs for - * @returns Promise resolving to array of UTXOs associated with the transaction - * @throws Error if no UTXOs found for the transaction hash - */ - async fetchUTxOs(hash: string): Promise { - const utxos = Object.values(this.utxos) - .flat() - .filter((utxo) => utxo.input.txHash === hash); - if (!utxos.length) - throw new Error(`No UTxOs found for transaction hash: ${hash}`); - return utxos; - } - - async fetchGovernanceProposal( - txHash: string, - certIndex: number, - ): Promise { - throw new Error("Method not implemented"); - } - - /** - * HTTP GET method required by IFetcher interface but not implemented in OfflineFetcher. - * @param url - URL to fetch from - * @throws Error always, as this fetcher operates offline - */ - async get(url: string): Promise { - throw new Error("Method not implemented in OfflineFetcher."); - } - - /** - * Serializes fetcher data to JSON string. - * @returns JSON string containing all fetcher data - */ - toJSON(): string { - return JSON.stringify({ - accounts: this.accounts, - utxos: this.utxos, - assetAddresses: this.assetAddresses, - assetMetadata: this.assetMetadata, - blocks: this.blocks, - collections: this.collections, - protocolParameters: this.protocolParameters, - transactions: this.transactions, - }); - } - - /** - * Creates an OfflineFetcher instance from JSON data. - * @param json - JSON string containing fetcher data - * @returns New OfflineFetcher instance - */ - static fromJSON(json: string): OfflineFetcher { - const data = JSON.parse(json); - const fetcher = new OfflineFetcher(); - - Object.entries(data.accounts || {}).forEach(([address, info]) => - fetcher.addAccount(address, info as AccountInfo), - ); - - Object.entries(data.utxos || {}).forEach(([address, utxos]) => - fetcher.addUTxOs(utxos as UTxO[]), - ); - - Object.entries(data.assetAddresses || {}).forEach(([asset, addresses]) => - fetcher.addAssetAddresses(asset, addresses as AssetAddress[]), - ); - - Object.entries(data.assetMetadata || {}).forEach(([asset, metadata]) => - fetcher.addAssetMetadata(asset, metadata as AssetMetadata), - ); - - Object.entries(data.blocks || {}).forEach(([_, info]) => - fetcher.addBlock(info as BlockInfo), - ); - - Object.entries(data.collections || {}).forEach(([policyId, assets]) => - fetcher.addCollectionAssets(assets as Asset[]), - ); - - Object.entries(data.protocolParameters || {}).forEach(([_, params]) => - fetcher.addProtocolParameters(params as Protocol), - ); - - Object.entries(data.transactions || {}).forEach(([_, info]) => - fetcher.addTransaction(info as TransactionInfo), - ); - - return fetcher; - } - - private static isValidHex(str: string, length?: number): boolean { - if (length && str.length !== length) { - return false; - } - return /^[0-9a-fA-F]+$/.test(str); - } - - private static isValidAddress(address: string): boolean { - return ( - OfflineFetcher.isValidBech32Address(address) || - OfflineFetcher.isValidBase58(address) - ); - } - - private static isValidBase58(input: string): boolean { - // Base58 character set (Bitcoin alphabet) - const base58Regex = - /^[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]+$/; - // Check that input matches Base58 character set - if (!base58Regex.test(input)) { - return false; - } - // Additional checks can be added here, such as length or checksum validation - return true; - } - - private static isValidBech32(input: string, prefix: string): boolean { - // Check if the input is all lowercase or all uppercase - if (input !== input.toLowerCase() && input !== input.toUpperCase()) { - return false; - } - - // Bech32 regex pattern for the given prefix - const pattern = new RegExp(`^${prefix}1[02-9ac-hj-np-z]+$`, "i"); - return pattern.test(input); - } - - private static isValidBech32Address(address: string): boolean { - return OfflineFetcher.isValidBech32(address, "(addr|addr_test)"); - } - - private static isValidBech32Pool(poolId: string): boolean { - return OfflineFetcher.isValidBech32(poolId, "pool"); - } - - private static isValidBech32VrfVk(vrfKey: string): boolean { - return OfflineFetcher.isValidBech32(vrfKey, "vrf_vk"); - } - - private static isIntegerString(str: string): boolean { - return /^\d+$/.test(str); - } - - private static isValidAssetOrLovelace(asset: string): boolean { - if (asset === "lovelace") { - return true; - } - if (asset.length < 56) { - return false; - } - return OfflineFetcher.isValidHex(asset); - } - - /** - * Adds account information to the fetcher. - * @param address - Account address - * @param accountInfo - Account information - * @throws Error if address or account info invalid - */ - addAccount(address: string, accountInfo: AccountInfo): void { - if (!OfflineFetcher.isValidAddress(address)) { - throw new Error( - "Invalid address: must be a valid Bech32 or Base58 address", - ); - } - - if (accountInfo.poolId) { - if (!OfflineFetcher.isValidBech32Pool(accountInfo.poolId)) { - throw new Error( - "Invalid 'poolId': must be a valid Bech32 pool address", - ); - } - } - - if (!OfflineFetcher.isIntegerString(accountInfo.balance)) { - throw new Error("Invalid 'balance': must be a string of digits"); - } - - if (!OfflineFetcher.isIntegerString(accountInfo.rewards)) { - throw new Error("Invalid 'rewards': must be a string of digits"); - } - - if (!OfflineFetcher.isIntegerString(accountInfo.withdrawals)) { - throw new Error("Invalid 'withdrawals': must be a string of digits"); - } - - this.accounts[address] = accountInfo; - } - - /** - * Adds UTXOs to the fetcher. - * @param utxos - Array of UTXOs - * @throws Error if UTXOs invalid - */ - addUTxOs(utxos: UTxO[]): void { - if (!Array.isArray(utxos) || utxos.length === 0) { - throw new Error("Invalid utxos: must be a non-empty array"); - } - - utxos.forEach((utxo, index) => { - if ( - !Number.isInteger(utxo.input.outputIndex) || - utxo.input.outputIndex < 0 - ) { - throw new Error( - `Invalid outputIndex for UTxO at index ${index}: must be a non-negative integer`, - ); - } - if (!OfflineFetcher.isValidHex(utxo.input.txHash, 64)) { - throw new Error( - `Invalid txHash for UTxO at index ${index}: must be a 64-character hexadecimal string`, - ); - } - - if (!OfflineFetcher.isValidAddress(utxo.output.address)) { - throw new Error( - `Invalid address in output for UTxO at index ${index}: must be a valid Bech32 or Base58 address`, - ); - } - if ( - !Array.isArray(utxo.output.amount) || - utxo.output.amount.length === 0 - ) { - throw new Error( - `Invalid amount for UTxO at index ${index}: must be a non-empty array of assets`, - ); - } - - utxo.output.amount.forEach((asset, assetIndex) => { - if (!OfflineFetcher.isValidAssetOrLovelace(asset.unit)) { - throw new Error( - `Invalid unit for asset at index ${assetIndex} in UTxO at index ${index}`, - ); - } - if (!OfflineFetcher.isIntegerString(asset.quantity)) { - throw new Error( - `Invalid quantity for asset at index ${assetIndex} in UTxO at index ${index}: must be a string of digits`, - ); - } - }); - if ( - utxo.output.dataHash && - !OfflineFetcher.isValidHex(utxo.output.dataHash, 64) - ) { - throw new Error( - `Invalid dataHash for UTxO at index ${index}: must be a 64-character hexadecimal string or undefined`, - ); - } - if ( - utxo.output.plutusData && - !OfflineFetcher.isValidHex(utxo.output.plutusData) - ) { - throw new Error( - `Invalid plutusData for UTxO at index ${index}: must be a hexadecimal string or undefined`, - ); - } - if ( - utxo.output.scriptRef && - !OfflineFetcher.isValidHex(utxo.output.scriptRef) - ) { - throw new Error( - `Invalid scriptRef for UTxO at index ${index}: must be a hexadecimal string or undefined`, - ); - } - if ( - utxo.output.scriptHash && - !OfflineFetcher.isValidHex(utxo.output.scriptHash, 56) - ) { - throw new Error( - `Invalid scriptHash for UTxO at index ${index}: must be a 56-character hexadecimal string or undefined`, - ); - } - }); - - for (const utxo of utxos) { - if (!this.utxos[utxo.output.address]) { - this.utxos[utxo.output.address] = []; - } - this.utxos[utxo.output.address]!.push(utxo); - } - } - - /** - * Adds asset address information to the fetcher. - * @param asset - Asset identifier - * @param addresses - Array of asset addresses - * @throws Error if asset or addresses invalid - */ - addAssetAddresses(asset: string, addresses: AssetAddress[]): void { - if (!OfflineFetcher.isValidHex(asset)) { - throw new Error("Invalid asset: must be a hex string"); - } - if (addresses.length === 0) { - throw new Error("Invalid addresses: must be a non-empty array"); - } - addresses.forEach((item, index) => { - if (!OfflineFetcher.isValidAddress(item.address)) { - throw new Error( - `Invalid 'address' field at index ${index}, should be bech32 string`, - ); - } - if (!OfflineFetcher.isIntegerString(item.quantity)) { - throw new Error( - `Invalid 'quantity' field at index ${index}, should be a string of digits`, - ); - } - }); - this.assetAddresses[asset] = addresses; - } - - /** - * Adds asset metadata to the fetcher. - * @param asset - Asset identifier - * @param metadata - Asset metadata - * @throws Error if asset or metadata invalid - */ - addAssetMetadata(asset: string, metadata: AssetMetadata): void { - if (asset.length < 56) { - throw new Error( - `Invalid asset ${asset}: must be a string longer than 56 characters`, - ); - } - if (!OfflineFetcher.isValidHex(asset)) { - throw new Error("Invalid asset: must be a hex string"); - } - - if (typeof metadata !== "object" || metadata === null) { - throw new Error("Invalid metadata object"); - } - this.assetMetadata[asset] = metadata; - } - - /** - * Adds collection assets to the fetcher. - * @param assets - Array of assets - * @throws Error if assets invalid - */ - addCollectionAssets(assets: Asset[]): void { - if (!Array.isArray(assets) || assets.length === 0) { - throw new Error("Invalid assets: must be a non-empty array"); - } - - const groupedAssets: { [policyId: string]: Asset[] } = {}; - - assets.forEach((asset, index) => { - if (asset.unit.length < 56) { - throw new Error( - `Invalid unit for asset at index ${index}: must be a string longer than 56 characters`, - ); - } - - if (!OfflineFetcher.isValidHex(asset.unit)) { - throw new Error( - `Invalid unit for asset at index ${index}: must be a hexadecimal string`, - ); - } - - const policyId = asset.unit.slice(0, 56); - - if (!OfflineFetcher.isValidHex(policyId, 56)) { - throw new Error( - `Invalid policyId in asset unit at index ${index}: must be a 56-character hexadecimal string`, - ); - } - - if (!OfflineFetcher.isIntegerString(asset.quantity)) { - throw new Error( - `Invalid quantity for asset at index ${index}: must be a string of digits`, - ); - } - - if (!groupedAssets[policyId]) { - groupedAssets[policyId] = []; - } - groupedAssets[policyId].push(asset); - }); - - for (const [policyId, policyAssets] of Object.entries(groupedAssets)) { - if (!this.collections[policyId]) { - this.collections[policyId] = []; - } - this.collections[policyId] = - this.collections[policyId].concat(policyAssets); - } - } - - /** - * Adds protocol parameters to the fetcher. - * @param parameters - Protocol parameters - * @throws Error if parameters invalid - */ - addProtocolParameters(parameters: Protocol): void { - if (parameters.epoch < 0 || !Number.isInteger(parameters.epoch)) { - throw new Error("Invalid epoch: must be a non-negative integer"); - } - - if (parameters.minFeeA < 0 || !Number.isInteger(parameters.minFeeA)) { - throw new Error("Invalid 'minFeeA': must be a non-negative integer"); - } - if (parameters.minFeeB < 0 || !Number.isInteger(parameters.minFeeB)) { - throw new Error("Invalid 'minFeeB': must be a non-negative integer"); - } - if ( - parameters.maxBlockSize <= 0 || - !Number.isInteger(parameters.maxBlockSize) - ) { - throw new Error("Invalid 'maxBlockSize': must be a positive integer"); - } - if (parameters.maxTxSize <= 0 || !Number.isInteger(parameters.maxTxSize)) { - throw new Error("Invalid 'maxTxSize': must be a positive integer"); - } - if ( - parameters.maxBlockHeaderSize <= 0 || - !Number.isInteger(parameters.maxBlockHeaderSize) - ) { - throw new Error( - "Invalid 'maxBlockHeaderSize': must be a positive integer", - ); - } - if (parameters.keyDeposit < 0 || !Number.isInteger(parameters.keyDeposit)) { - throw new Error("Invalid 'keyDeposit': must be a non-negative integer"); - } - if ( - parameters.poolDeposit < 0 || - !Number.isInteger(parameters.poolDeposit) - ) { - throw new Error("Invalid 'poolDeposit': must be a non-negative integer"); - } - if (parameters.decentralisation < 0 || parameters.decentralisation > 1) { - throw new Error("Invalid 'decentralisation': must be between 0 and 1"); - } - if (parameters.priceMem < 0) { - throw new Error("Invalid 'priceMem': must be non-negative"); - } - if (parameters.priceStep < 0) { - throw new Error("Invalid 'priceStep': must be non-negative"); - } - if (parameters.maxValSize < 0 || !Number.isInteger(parameters.maxValSize)) { - throw new Error("Invalid 'maxValSize': must be a non-negative integer"); - } - if (parameters.collateralPercent < 0) { - throw new Error( - "Invalid 'collateralPercent': must be a non-negative integer", - ); - } - if ( - parameters.maxCollateralInputs < 0 || - !Number.isInteger(parameters.maxCollateralInputs) - ) { - throw new Error( - "Invalid 'maxCollateralInputs': must be a non-negative integer", - ); - } - if (parameters.coinsPerUtxoSize < 0) { - throw new Error("Invalid 'coinsPerUtxoSize': must be non-negative"); - } - if (parameters.minFeeRefScriptCostPerByte < 0) { - throw new Error( - "Invalid 'minFeeRefScriptCostPerByte': must be non-negative", - ); - } - - if (!OfflineFetcher.isIntegerString(parameters.minPoolCost)) { - throw new Error("Invalid 'minPoolCost': must be a string of digits"); - } - if (!OfflineFetcher.isIntegerString(parameters.maxTxExMem)) { - throw new Error("Invalid 'maxTxExMem': must be a string of digits"); - } - if (!OfflineFetcher.isIntegerString(parameters.maxTxExSteps)) { - throw new Error("Invalid 'maxTxExSteps': must be a string of digits"); - } - if (!OfflineFetcher.isIntegerString(parameters.maxBlockExMem)) { - throw new Error("Invalid 'maxBlockExMem': must be a string of digits"); - } - if (!OfflineFetcher.isIntegerString(parameters.maxBlockExSteps)) { - throw new Error("Invalid 'maxBlockExSteps': must be a string of digits"); - } - - this.protocolParameters[parameters.epoch] = parameters; - } - - /** - * Adds transaction information to the fetcher. - * @param txInfo - Transaction information - * @throws Error if transaction info invalid - */ - addTransaction(txInfo: TransactionInfo): void { - if (!OfflineFetcher.isValidHex(txInfo.hash, 64)) { - throw new Error( - "Invalid transaction hash: must be a 64-character hexadecimal string", - ); - } - if (!Number.isInteger(txInfo.index) || txInfo.index < 0) { - throw new Error("Invalid 'index': must be a non-negative integer"); - } - if (!OfflineFetcher.isValidHex(txInfo.block, 64)) { - throw new Error( - "Invalid 'block': must be a 64-character hexadecimal string", - ); - } - if (!OfflineFetcher.isIntegerString(txInfo.slot)) { - throw new Error("Invalid 'slot': must be a string of digits"); - } - if (!OfflineFetcher.isIntegerString(txInfo.fees)) { - throw new Error("Invalid 'fees': must be a string of digits"); - } - if (!Number.isInteger(txInfo.size) || txInfo.size <= 0) { - throw new Error("Invalid 'size': must be a positive integer"); - } - if (!/^-?\d+$/.test(txInfo.deposit)) { - throw new Error( - "Invalid 'deposit': must be a string representing an integer (positive or negative)", - ); - } - if ( - txInfo.invalidBefore !== "" && - !OfflineFetcher.isIntegerString(txInfo.invalidBefore) - ) { - throw new Error( - "Invalid 'invalidBefore': must be a string of digits or empty string", - ); - } - if ( - txInfo.invalidAfter !== "" && - !OfflineFetcher.isIntegerString(txInfo.invalidAfter) - ) { - throw new Error( - "Invalid 'invalidAfter': must be a string of digits or empty string", - ); - } - this.transactions[txInfo.hash] = txInfo; - this.addUTxOs(txInfo.outputs); - } - - /** - * Adds block information to the fetcher. - * @param blockInfo - Block information - * @throws Error if block info invalid - */ - addBlock(blockInfo: BlockInfo): void { - if (!OfflineFetcher.isValidHex(blockInfo.hash, 64)) { - throw new Error( - "Invalid block hash: must be a 64-character hexadecimal string", - ); - } - if (!Number.isInteger(blockInfo.time) || blockInfo.time < 0) { - throw new Error("Invalid 'time': must be a non-negative integer"); - } - if (!OfflineFetcher.isIntegerString(blockInfo.slot)) { - throw new Error("Invalid 'slot': must be a string of digits"); - } - if (!Number.isInteger(blockInfo.epoch) || blockInfo.epoch < 0) { - throw new Error("Invalid 'epoch': must be a non-negative integer"); - } - if (!OfflineFetcher.isIntegerString(blockInfo.epochSlot)) { - throw new Error("Invalid 'epochSlot': must be a string of digits"); - } - if (!OfflineFetcher.isValidBech32Pool(blockInfo.slotLeader)) { - throw new Error( - "Invalid 'slotLeader': must be a bech32 string with pool prefix", - ); - } - if (!Number.isInteger(blockInfo.size) || blockInfo.size <= 0) { - throw new Error("Invalid 'size': must be a positive integer"); - } - if (!Number.isInteger(blockInfo.txCount) || blockInfo.txCount < 0) { - throw new Error("Invalid 'txCount': must be a non-negative integer"); - } - if (!OfflineFetcher.isIntegerString(blockInfo.output)) { - throw new Error("Invalid 'output': must be a string of digits"); - } - if (!OfflineFetcher.isValidHex(blockInfo.operationalCertificate, 64)) { - throw new Error( - "Invalid 'operationalCertificate': must be a 64-character hexadecimal string", - ); - } - if (!OfflineFetcher.isValidHex(blockInfo.previousBlock, 64)) { - throw new Error( - "Invalid 'previousBlock': must be a 64-character hexadecimal string", - ); - } - if (!OfflineFetcher.isValidBech32VrfVk(blockInfo.VRFKey)) { - throw new Error( - "Invalid 'VRFKey': must be a bech32 string with vrf_vk1 prefix", - ); - } - this.blocks[blockInfo.hash] = blockInfo; - } - - /** - * Adds a serialized transaction to the fetcher, it's generates pseudo block in addition to transaction. - * Removes spent UTxOs from the fetcher and adds new UTxOs from the transaction. - * @param txHex - Hexadecimal string of the transaction - * @throws Error if transaction hex invalid - */ - addSerializedTransaction(txHex: string) { - const tx = Serialization.Transaction.fromCbor(Serialization.TxCBOR(txHex)); - const time = Date.now(); - const slot = resolveSlotNo(this.network ?? "mainnet", time); - const epoch = resolveEpochNo(this.network ?? "mainnet", time); - const epochSlot = this.slotToEpochSlot(BigInt(slot)); - const randomBlockHash = randomBytes(32).toString("hex"); - const randomPrevBlockHash = randomBytes(32).toString("hex"); - const randomOCert = randomBytes(32).toString("hex"); - const fee = tx.body().fee().toString(); - const totalOutput = tx - .body() - .outputs() - .reduce((acc, output) => { - const amount = output.amount().coin(); - return acc + amount; - }, 0n); - const ttl = tx.body().ttl(); - const validityStartInterval = tx.body().validityStartInterval(); - const txHash = tx.body().hash(); - - const blockInfo: BlockInfo = { - confirmations: 40, - nextBlock: "undefined its a random block", - hash: randomBlockHash, - time, - slot, - epoch, - epochSlot: epochSlot.toString(), - fees: fee, - slotLeader: "pool1qv3x5x5x5x5x5x5x5x5x5x5x5x5x5x5", - size: txHex.length / 2, - txCount: 1, - output: totalOutput.toString(), - operationalCertificate: randomOCert, - previousBlock: randomPrevBlockHash, - VRFKey: "vrf_vk1qv3x5x5x5x5x5x5x5x5x5x5x5x5x5", - }; - - const txInputs = tx.body().inputs(); - const fetchedUTxOs = txInputs.values().map((input) => { - const txHash = input.transactionId(); - const outputIndex = Number(input.index()); - const utxo = Object.values(this.utxos) - .flat() - .find((utxo) => { - return ( - utxo.input.txHash === txHash && - utxo.input.outputIndex === outputIndex - ); - }); - if (!utxo) { - throw new Error( - `UTxO not found for transaction hash and output index: ${txHash} ${outputIndex}`, - ); - } - return utxo; - }); - - for (const addressUtxos of Object.values(this.utxos)) { - for (const utxo of fetchedUTxOs) { - const index = addressUtxos.indexOf(utxo); - if (index !== -1) { - addressUtxos.splice(index, 1); - } - } - } - - const newUtxOs = tx - .body() - .outputs() - .map((output, index) => { - return this.mapOutputToUTxO(output, txHash, index); - }); - - const transactionInfo: TransactionInfo = { - inputs: fetchedUTxOs, - hash: txHash, - index: 0, - block: randomBlockHash, - slot: slot.toString(), - fees: fee, - size: txHex.length / 2, - deposit: "0", - invalidBefore: validityStartInterval - ? validityStartInterval.toString() - : "", - invalidAfter: ttl ? ttl.toString() : "", - outputs: newUtxOs, - }; - - this.addBlock(blockInfo); - this.addTransaction(transactionInfo); - } - - private slotToEpochSlot(slot: bigint): bigint { - const slotConfig = SLOT_CONFIG_NETWORK[this.network ?? "mainnet"]; - const epochLength = BigInt(slotConfig.epochLength); - return slot % epochLength; - } - - private mapOutputToUTxO( - output: TransactionOutput, - txHash: string, - index: number, - ): UTxO { - return { - input: { - txHash, - outputIndex: index, - }, - output: { - address: output.address().toBech32(), - amount: this.mapValueToAsset(output.amount()), - dataHash: output.datum()?.asDataHash(), - plutusData: output.datum()?.asInlineData()?.toCbor(), - scriptRef: output.scriptRef()?.toCbor(), - scriptHash: output.scriptRef()?.hash(), - }, - }; - } - - private mapValueToAsset(value: Value): Asset[] { - const assets: Asset[] = []; - const multiAsset = value.multiasset(); - if (multiAsset) { - for (const [assetId, quantity] of multiAsset) { - const asset = { - unit: assetId, - quantity: quantity.toString(), - }; - assets.push(asset); - } - } else { - const lovelace = value.coin().toString(); - assets.push({ unit: "lovelace", quantity: lovelace }); - } - return assets; - } -} diff --git a/packages/mesh-provider/src/ogmios.ts b/packages/mesh-provider/src/ogmios.ts deleted file mode 100644 index a802a9d16..000000000 --- a/packages/mesh-provider/src/ogmios.ts +++ /dev/null @@ -1,204 +0,0 @@ -import { - Action, - IEvaluator, - isNetwork, - ISubmitter, - Network, - SUPPORTED_OGMIOS_LINKS, - UTxO, -} from "@meshsdk/common"; - -import { getAdditionalUtxos } from "./utils"; - -export class OgmiosProvider implements IEvaluator, ISubmitter { - private readonly _baseUrl: string; - - constructor(baseUrl: string); - constructor(network: Network); - - constructor(...args: unknown[]) { - this._baseUrl = isNetwork(args[0]) - ? SUPPORTED_OGMIOS_LINKS[args[0]] - : (args[0] as string); - } - - /** - * Evaluates the resources required to execute the transaction - * @param cbor - The transaction CBOR hex string to evaluate - * @param additionalUtxos - Optional array of additional UTxOs to include in the evaluation context for resolving transaction inputs - * @param additionalTxs - Optional array of transaction CBOR hex strings to provide additional UTxOs from their outputs - */ - async evaluateTx( - cbor: string, - additionalUtxos?: UTxO[], - additionalTxs?: string[], - ): Promise[]> { - const additionalUtxo = getAdditionalUtxos( - "ogmios", - additionalUtxos, - additionalTxs, - ); - - const client = await this.open(); - - this.send(client, "evaluateTransaction", { - transaction: { - cbor, - }, - additionalUtxo, - }); - - return new Promise((resolve, reject) => { - client.addEventListener( - "message", - (response: MessageEvent) => { - try { - const { result } = JSON.parse(response.data); - if (result) { - resolve( - Object.values(result).map((val: any) => { - return >{ - index: val.validator.index, - tag: - val.validator.purpose.toUpperCase() === "PUBLISH" - ? "CERT" - : val.validator.purpose.toUpperCase(), - budget: { - mem: val.budget.memory, - steps: val.budget.cpu, - }, - }; - }), - ); - } else { - reject(result); - } - - client.close(); - } catch (error) { - reject(error); - } - }, - { once: true }, - ); - }); - } - - async onNextTx(callback: (tx: unknown) => void): Promise<() => void> { - const client = await this.open(); - - this.send(client, "acquireMempool", {}); - - client.addEventListener("message", (response: MessageEvent) => { - const { result } = JSON.parse(response.data); - if (result === null) { - return this.send(client, "acquireMempool", {}); - } - - if (result.transaction === null || result.transaction === undefined) { - this.send(client, "acquireMempool", {}); - } else { - callback(result); - } - - this.send(client, "nextTransaction", { - fields: "all", - }); - }); - - return () => client.close(); - } - - /** - * Submit a serialized transaction to the network. - * @param tx - The serialized transaction in hex to submit - * @returns The transaction hash of the submitted transaction - */ - async submitTx(tx: string): Promise { - const client = await this.open(); - - this.send(client, "submitTransaction", { - transaction: { - cbor: tx, - }, - }); - - return new Promise((resolve, reject) => { - client.addEventListener( - "message", - (response: MessageEvent) => { - try { - const { result } = JSON.parse(response.data); - - if (!result) { - reject(JSON.parse(response.data).error); - } - - if ( - result.transaction !== null && - result.transaction !== undefined - ) { - resolve(result.transaction.id); - } else { - reject(result); - } - - client.close(); - } catch (error) { - reject(error); - } - }, - { once: true }, - ); - }); - } - - async fetchProtocolParameters(): Promise { - const client = await this.open(); - - this.send(client, "queryLedgerState/protocolParameters", {}); - return new Promise((resolve, reject) => { - client.addEventListener( - "message", - (response: MessageEvent) => { - try { - const { result } = JSON.parse(response.data); - - if (!result) { - reject(JSON.parse(response.data).error); - } - - resolve(result); - - client.close(); - } catch (error) { - reject(error); - } - }, - { once: true }, - ); - }); - } - - private async open(): Promise { - const client = new WebSocket(this._baseUrl); - - await new Promise((resolve) => { - client.addEventListener("open", () => resolve(true), { once: true }); - }); - - return client; - } - - private send(client: WebSocket, method: string, params: unknown) { - client.send( - JSON.stringify({ - jsonrpc: "2.0", - type: "jsonwsp/request", - servicename: "ogmios", - method, - params, - }), - ); - } -} diff --git a/packages/mesh-provider/src/types/blockfrost.ts b/packages/mesh-provider/src/types/blockfrost.ts deleted file mode 100644 index b81a63f1f..000000000 --- a/packages/mesh-provider/src/types/blockfrost.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { Asset, Quantity, Unit } from "@meshsdk/common"; - -export type BlockfrostUTxO = { - output_index: number; - amount: Array; - address: string; - data_hash?: string; - inline_datum?: string; - collateral?: boolean; - reference_script_hash?: string; - tx_hash: string; -}; - -export type BlockfrostAsset = { - asset: Unit; - quantity: Quantity; -}; - -export type BlockfrostTxIn = { - txId: string; - index: number; -}; - -export type BlockfrostTxOutValue = { - coins: number; - [policyId: string]: { [assetName: string]: number } | number; -}; - -export type BlockfrostTxOut = { - address: string; - value: BlockfrostTxOutValue; -}; - -export type BlockfrostAdditionalUtxo = [BlockfrostTxIn, BlockfrostTxOut]; - -export type BlockfrostAdditionalUtxos = Array; diff --git a/packages/mesh-provider/src/types/index.ts b/packages/mesh-provider/src/types/index.ts deleted file mode 100644 index d3badf1cb..000000000 --- a/packages/mesh-provider/src/types/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from "./blockfrost"; -export * from "./koios"; -export * from "./maestro"; -export * from "./ogmios"; diff --git a/packages/mesh-provider/src/types/koios.ts b/packages/mesh-provider/src/types/koios.ts deleted file mode 100644 index d2854c05b..000000000 --- a/packages/mesh-provider/src/types/koios.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { Asset } from "@meshsdk/common"; - -export type KoiosUTxO = { - tx_index: number; - amount: Array; - datum_hash?: string; - inline_datum?: { - bytes: string; - value: KoiosValue; - }; - reference_script?: KoiosReferenceScript; - tx_hash: string; - value: string; - asset_list: Array; - block_height: number; - block_time: number; - payment_addr: { cred: string; bech32: string }; -}; - -export type KoiosAsset = { - policy_id: string; - asset_name: string; - quantity?: string; - decimals: number; - fingerprint: string; - total_supply?: string; -}; - -export type KoiosValue = { - constructor: number; - fields: Array; - bytes?: string; -}; - -export type KoiosReferenceScript = { - bytes: string; - hash: string; - size: number; - type: string; - value?: KoiosValue; -}; - -export type { - OgmiosAdditionalUtxo as KoiosAdditionalUtxo, - OgmiosAdditionalUtxos as KoiosAdditionalUtxos, -} from "./ogmios"; diff --git a/packages/mesh-provider/src/types/maestro.ts b/packages/mesh-provider/src/types/maestro.ts deleted file mode 100644 index 287798c68..000000000 --- a/packages/mesh-provider/src/types/maestro.ts +++ /dev/null @@ -1,56 +0,0 @@ -type MaestroDatumOptionType = "hash" | "inline"; - -type MaestroDatumOption = { - type: MaestroDatumOptionType; - hash: string; - bytes?: string; - json?: Json; -}; - -type MaestroScriptType = "native" | "plutusv1" | "plutusv2"; - -type Json = any; - -type MaestroScript = { - hash: string; - type: MaestroScriptType; - bytes?: string; - json?: Json; -}; - -type MaestroAsset = { - unit: string; - amount: string; -}; - -export type MaestroUTxO = { - tx_hash: string; - index: number; - assets: Array; - address: string; - datum?: MaestroDatumOption; - reference_script?: MaestroScript; -}; - -export type MaestroAssetExtended = { - asset_name: string; - asset_name_ascii: string; - fingerprint: string; - total_supply: string; - asset_standards: { - cip25_metadata: { - data: string[]; - idx: number; - name: string; - uid: string; - }; - }; -}; - -export type MaestroAdditionalUtxo = { - tx_hash: string; - index: number; - txout_cbor: string; -}; - -export type MaestroAdditionalUtxos = Array; diff --git a/packages/mesh-provider/src/types/ogmios.ts b/packages/mesh-provider/src/types/ogmios.ts deleted file mode 100644 index 7fae72745..000000000 --- a/packages/mesh-provider/src/types/ogmios.ts +++ /dev/null @@ -1,16 +0,0 @@ -export type OgmiosAdditionalUtxoValue = { - ada: { - lovelace: number; - } & Record>; -}; - -export type OgmiosAdditionalUtxo = { - transaction: { - id: string; - }; - index: number; - address: string; - value: OgmiosAdditionalUtxoValue; -}; - -export type OgmiosAdditionalUtxos = Array; diff --git a/packages/mesh-provider/src/utils/get-additional-utxos.ts b/packages/mesh-provider/src/utils/get-additional-utxos.ts deleted file mode 100644 index 920f15c2b..000000000 --- a/packages/mesh-provider/src/utils/get-additional-utxos.ts +++ /dev/null @@ -1,176 +0,0 @@ -import { parseAssetUnit, UTxO } from "@meshsdk/common"; -import { - deserializeTx, - fromTxUnspentOutput, - toTxUnspentOutput, - TransactionId, - TransactionInput, - TransactionUnspentOutput, -} from "@meshsdk/core-cst"; - -import { - BlockfrostAdditionalUtxo, - BlockfrostAdditionalUtxos, - BlockfrostTxOutValue, - KoiosAdditionalUtxo, - KoiosAdditionalUtxos, - MaestroAdditionalUtxo, - MaestroAdditionalUtxos, - OgmiosAdditionalUtxo, - OgmiosAdditionalUtxos, - OgmiosAdditionalUtxoValue, -} from "../types"; - -type OutputFormat = "koios" | "maestro" | "blockfrost" | "ogmios"; - -/** - * Extract UTxOs from transaction CBOR hex string - * @param txCbor - Transaction in CBOR hex format - * @returns Array of UTxOs parsed from the transaction outputs - */ -function getTransactionOutputsFromCbor(txCbor: string): UTxO[] { - const tx = deserializeTx(txCbor); - const txBody = tx.body(); - const txHash = tx.getId(); - const outputs = txBody.outputs(); - const utxos: UTxO[] = []; - - for (let i = 0; i < outputs.length; i++) { - const output = outputs[i]; - if (output) { - const txInput = new TransactionInput(TransactionId(txHash), BigInt(i)); - const txUnspentOutput = new TransactionUnspentOutput(txInput, output); - const utxo = fromTxUnspentOutput(txUnspentOutput); - utxos.push(utxo); - } - } - - return utxos; -} - -export function getAdditionalUtxos( - format: OutputFormat, - additionalUtxos?: UTxO[], - additionalTxs?: string[], -): - | MaestroAdditionalUtxos - | KoiosAdditionalUtxos - | BlockfrostAdditionalUtxos - | OgmiosAdditionalUtxos { - const foundUtxos = new Set(); - const uniqueUtxos: UTxO[] = []; - - if (!additionalUtxos && !additionalTxs) return []; - - if (additionalUtxos) { - for (const utxo of additionalUtxos) { - addUniqueUtxo(utxo, foundUtxos, uniqueUtxos); - } - } - - if (additionalTxs) { - for (const txCbor of additionalTxs) { - const utxos = getTransactionOutputsFromCbor(txCbor); - - for (const utxo of utxos) { - addUniqueUtxo(utxo, foundUtxos, uniqueUtxos); - } - } - } - - const result = { - blockfrost: uniqueUtxos.map((utxo) => { - const txIn = { - txId: utxo.input.txHash, - index: utxo.input.outputIndex, - }; - - const value = parseValueForBlockfrost(utxo); - - const txOut = { - address: utxo.output.address, - value, - }; - - return [txIn, txOut]; - }), - - maestro: uniqueUtxos.map((utxo) => { - const txUnspentOutput = toTxUnspentOutput(utxo); - const cborHex = txUnspentOutput.output().toCbor(); - return { - tx_hash: utxo.input.txHash, - index: utxo.input.outputIndex, - txout_cbor: cborHex, - }; - }), - - koios: uniqueUtxos.map((utxo) => { - return { - transaction: { - id: utxo.input.txHash, - }, - index: utxo.input.outputIndex, - address: utxo.output.address, - value: parseValueForOgmios(utxo), - }; - }), - - ogmios: uniqueUtxos.map((utxo) => { - return { - transaction: { - id: utxo.input.txHash, - }, - index: utxo.input.outputIndex, - address: utxo.output.address, - value: parseValueForOgmios(utxo), - }; - }), - }; - - return result[format]; -} - -const parseValueForBlockfrost = (utxo: UTxO): BlockfrostTxOutValue => { - const value: any = {}; - - utxo.output.amount.forEach(({ unit, quantity }) => { - if (unit === "lovelace") { - value.coins = Number(quantity); - } else { - const { policyId, assetName } = parseAssetUnit(unit); - if (!value[policyId]) { - value[policyId] = {}; - } - value[policyId][assetName] = Number(quantity); - } - }); - - return value; -}; - -const parseValueForOgmios = (utxo: UTxO): OgmiosAdditionalUtxoValue => { - const value: any = {}; - - utxo.output.amount.forEach(({ unit, quantity }) => { - if (unit === "lovelace") { - value.ada = { lovelace: Number(quantity) }; - } else { - const { policyId, assetName } = parseAssetUnit(unit); - if (!value[policyId]) { - value[policyId] = {}; - } - value[policyId][assetName] = Number(quantity); - } - }); - - return value; -}; - -const addUniqueUtxo = (utxo: UTxO, set: Set, list: UTxO[]) => { - const key = `${utxo.input.txHash}:${utxo.input.outputIndex}`; - if (!set.has(key)) { - set.add(key); - list.push(utxo); - } -}; diff --git a/packages/mesh-provider/src/utils/index.ts b/packages/mesh-provider/src/utils/index.ts deleted file mode 100644 index de7bad4ee..000000000 --- a/packages/mesh-provider/src/utils/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from "./parse-http-error"; -export * from "./parse-asset-unit"; -export * from "./get-additional-utxos"; diff --git a/packages/mesh-provider/src/utils/parse-asset-unit.ts b/packages/mesh-provider/src/utils/parse-asset-unit.ts deleted file mode 100644 index 535c76ed7..000000000 --- a/packages/mesh-provider/src/utils/parse-asset-unit.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { fromUTF8, POLICY_ID_LENGTH } from "@meshsdk/common"; - -export const parseAssetUnit = (unit: string) => { - const policyId = unit.slice(0, POLICY_ID_LENGTH); - const assetName = unit.includes(".") - ? fromUTF8(unit.split(".")[1] || "") - : unit.slice(POLICY_ID_LENGTH); - - return { policyId, assetName }; -}; diff --git a/packages/mesh-provider/src/utils/parse-http-error.ts b/packages/mesh-provider/src/utils/parse-http-error.ts deleted file mode 100644 index 86d8a229e..000000000 --- a/packages/mesh-provider/src/utils/parse-http-error.ts +++ /dev/null @@ -1,19 +0,0 @@ -import axios from "axios"; - -export const parseHttpError = (error: unknown): string => { - if (axios.isAxiosError(error)) { - if (error.response) { - return JSON.stringify({ - data: error.response.data, - headers: error.response.headers, - status: error.response.status, - }); - } else if (error.request && !(error.request instanceof XMLHttpRequest)) { - return JSON.stringify(error.request); - } else { - return JSON.stringify({ code: error.code, message: error.message }); - } - } else { - return JSON.stringify(error); - } -}; diff --git a/packages/mesh-provider/src/utxo-rpc.ts b/packages/mesh-provider/src/utxo-rpc.ts deleted file mode 100644 index 4a4d3e7b9..000000000 --- a/packages/mesh-provider/src/utxo-rpc.ts +++ /dev/null @@ -1,592 +0,0 @@ -import type * as spec from "@utxorpc/spec"; -import { CardanoQueryClient, CardanoSubmitClient } from "@utxorpc/sdk"; -import { submit } from "@utxorpc/spec"; -import cbor from "cbor"; - -import { - AccountInfo, - Action, - Asset, - AssetMetadata, - BlockInfo, - bytesToHex, - castProtocol, - GovernanceProposalInfo, - hexToBytes, - IEvaluator, - IFetcher, - IFetcherOptions, - IListener, - ISubmitter, - Protocol, - RedeemerTagType, - toBytes, - TransactionInfo, - UTxO, -} from "@meshsdk/common"; -import { - Address, - CardanoSDKUtil, - deserializePlutusScript, -} from "@meshsdk/core-cst"; - -import { utxosToAssets } from "./common/utxos-to-assets"; - -/** - * A UTxO RPC Provider for [MeshJS](https://meshjs.dev/) Transaction Builder Library. - * - * Example usage of how to use the UTxO RPC provider with Mesh to build and submit a transaction. - * ``` - * // Step #1 - * // Import Mesh SDK and UTxO RPC provider - * import { Transaction, MeshWallet, U5CProvider } from "@meshsdk/core"; - * - * async function main() { - * // Step #2 - * // Create a new U5C provider - * const provider = new U5CProvider({ - * url: "http://localhost:50051", - * headers: { - * "dmtr-api-key": "", - * }, - * }); - * - * // Step #3 - * // Create a new wallet from a mnemonic - * const wallet = new MeshWallet({ - * networkId: 0, // 0: testnet, 1: mainnet - * fetcher: provider, - * submitter: provider, - * key: { - * type: "mnemonic", - * words: [ - * "solution", - * "solution", - * "solution", - * "solution", - * "solution", - * "solution", - * "solution", - * "solution", - * "solution", - * "solution", - * "solution", - * "solution", - * "solution", - * "solution", - * "solution", - * "solution", - * "solution", - * "solution", - * "solution", - * "solution", - * "solution", - * "solution", - * "solution", - * "solution", - * ], - * }, - * }); - * - * // Optional: Print the wallet address - * console.log(wallet.getChangeAddress()); - * - * // Optional: Print the wallet utxos - * console.log(await provider.fetchAddressUTxOs(wallet.getChangeAddress())); - * - * // Step #4 - * // Create an example transaction that sends 5 ADA to an address - * const tx = new Transaction({ - * initiator: wallet, - * verbose: false, - * }).sendLovelace( - * "addr_test1vpvx0sacufuypa2k4sngk7q40zc5c4npl337uusdh64kv0c7e4cxr", - * "5000000" - * ); - * const unsignedTx = await tx.build(); - * - * // Step #5 - * // Sign the transaction - * const signedTx = await wallet.signTx(unsignedTx); - * - * // Step #6 - * // Submit the transaction to the blockchain network - * const txId = await provider.submitTx(signedTx); - * - * // Optional: Print the transaction ID - * console.log("Transaction ID", txId); - * } - * - * main().catch(console.error); - * ``` - */ -export class U5CProvider - implements IFetcher, ISubmitter, IEvaluator, IListener -{ - // Clients for querying and submitting transactions on the Cardano blockchain. - private queryClient: CardanoQueryClient; - private submitClient: CardanoSubmitClient; - - /** - * Constructor initializes the query and submit clients with provided URL and optional headers. - * @param url - The base URL for interacting with Cardano nodes. - * @param headers - Optional HTTP headers for API requests. - */ - constructor({ - url, - headers, - }: { - url: string; - headers?: Record; - }) { - this.queryClient = new CardanoQueryClient({ - uri: url, - headers, - }); - - this.submitClient = new CardanoSubmitClient({ - uri: url, - headers, - }); - } - - /** - * Allow you to listen to a transaction confirmation. Upon confirmation, the callback will be called. - * @param txHash - The transaction hash to listen for confirmation - * @param callback - The callback function to call when the transaction is confirmed - * @param limit - The number of blocks to wait for confirmation - */ - onTxConfirmed(txHash: string, callback: () => void, limit = 100): void { - const onConfirmed = async () => { - const updates = this.submitClient.waitForTx(hexToBytes(txHash)); - - for await (const stage of updates) { - console.log(JSON.stringify(updates)); - if (stage === submit.Stage.CONFIRMED) { - callback(); - return; // Exit once confirmed - } - } - }; - - const timeoutId = setTimeout(() => { - // Handle timeout if necessary (e.g., log or notify) - console.log("Transaction confirmation timed out."); - }, limit * 5000); - - // Start listening for confirmations and clear timeout on completion. - onConfirmed().finally(() => clearTimeout(timeoutId)); - } - - /** - * Evaluates the resources required to execute the transaction - * @param tx - The transaction to evaluate - */ - async evaluateTx( - tx: string, - additionalUtxos?: UTxO[], - additionalTxs?: string[], - ): Promise[]> { - // TODO: additionalUtxos/additionalTxs dep on utxoprc implementation - - const report = await this.submitClient.evalTx(hexToBytes(tx)); - const evalResult = report.report[0]!.chain.value?.redeemers!; - - const tagMap: { [key: number]: RedeemerTagType } = { - // 0: "UNSPECIFIED", // REDEEMER_PURPOSE_UNSPECIFIED - 1: "SPEND", // REDEEMER_PURPOSE_SPEND - 2: "MINT", // REDEEMER_PURPOSE_MINT - 3: "CERT", // REDEEMER_PURPOSE_CERT - 4: "REWARD", // REDEEMER_PURPOSE_REWARD - 5: "VOTE", // REDEEMER_PURPOSE_VOTE - 6: "PROPOSE", // REDEEMER_PURPOSE_PROPOSE - }; - - const result: Omit[] = []; - - evalResult.map((action: spec.cardano.Redeemer) => { - result.push({ - tag: tagMap[action.purpose!]!, - index: action.index, - budget: { - mem: Number(action.exUnits!.memory), - steps: Number(action.exUnits!.steps), - }, - }); - }); - - return result; - } - - /** - * Submit a serialized transaction to the network. - * @param tx - The serialized transaction in hex to submit - * @returns The transaction hash of the submitted transaction - */ - async submitTx(tx: string): Promise { - const cbor = toBytes(tx); - const hash = await this.submitClient.submitTx(cbor); - return bytesToHex(hash); - } - - /** - * Obtain information about a specific stake account. - * @param address - Wallet address to fetch account information - */ - fetchAccountInfo(address: string): Promise { - throw new Error("Method not implemented."); - } - - async fetchAddressAssets( - address: string, - ): Promise<{ [key: string]: string }> { - const utxos = await this.fetchAddressUTxOs(address); - return utxosToAssets(utxos); - } - - /** - * Fetches the UTxOs for a given address. - * @param address - The address to fetch UTxOs for - * @param asset - The asset to filter UTxOs by (optional) - * @returns UTxOs for the given address - */ - async fetchAddressUTxOs(address: string, asset?: string): Promise { - const addressBytes = hexToBytes(Address.fromBech32(address).toBytes()); - - const utxoSearchResult = - await this.queryClient.searchUtxosByAddress(addressBytes); - - return utxoSearchResult - .map((item) => { - const utxo = this._rpcUtxoToMeshUtxo(item.txoRef, item.parsedValued!); - - if (asset) { - // Check if the output amount contains the specified asset - if ( - utxo.output.amount.some((amountItem) => amountItem.unit === asset) - ) { - return utxo; // Return the utxo if asset matches - } - // If the asset does not match, return undefined - return undefined; - } - - // If no asset is specified, return the utxo directly - return utxo; - }) - .filter((utxo) => utxo !== undefined); // Filter out undefined results - } - - /** - * Unimplemented - open for contribution - * - * Transactions for an address. The `TransactionInfo` would only return the `hash`, `inputs`, and `outputs`. - * @param address - The address to fetch transactions for - * @returns - partial TransactionInfo - */ - async fetchAddressTxs( - address: string, - option: IFetcherOptions = { maxPage: 100, order: "desc" }, - ): Promise { - // open for contribution, see blockfrost.ts for reference - throw new Error("Method not implemented."); - } - - /** - * Unimplemented - open for contribution - * - * Fetches the asset addresses for a given asset. - * @param asset - The asset to fetch addresses for - */ - fetchAssetAddresses( - asset: string, - ): Promise<{ address: string; quantity: string }[]> { - throw new Error("Method not implemented."); - } - - /** - * Unimplemented - open for contribution - * - * Fetches the metadata for a given asset. - * @param asset - The asset to fetch metadata for - */ - fetchAssetMetadata(asset: string): Promise { - throw new Error("Method not implemented."); - } - - /** - * Unimplemented - open for contribution - * - * Fetches the block information for a given block hash. - * @param hash - The block hash to fetch block information for - */ - fetchBlockInfo(hash: string): Promise { - throw new Error("Method not implemented."); - } - - /** - * Unimplemented - open for contribution - * - * Fetches the collection assets for a given policy ID. - * @param policyId - The policy ID to fetch collection assets for - * @param cursor - The cursor to fetch the next set of assets (optional) - */ - fetchCollectionAssets( - policyId: string, - cursor?: number | string, - ): Promise<{ assets: Asset[]; next?: string | number | null }> { - throw new Error("Method not implemented."); - } - - /** - * Unimplemented - open for contribution - * - * Fetches the information (AssetMetadata) for a given handle. - * @param handle - The handle to fetch information for - */ - fetchHandle(handle: string): Promise { - throw new Error("Method not implemented."); - } - - /** - * Unimplemented - open for contribution - * - * Resolve the handle's address from the handle. - * @param handle - The handle to resolve - */ - fetchHandleAddress(handle: string): Promise { - throw new Error("Method not implemented."); - } - - /** - * Unimplemented - open for contribution - * - * Fetches protocol parameters - */ - async fetchProtocolParameters(epoch = Number.NaN): Promise { - const rpcPParams = await this.queryClient.readParams(); - if (rpcPParams === undefined || rpcPParams === null) { - throw new Error(`Error fetching protocol parameters`); - } - return this._rpcPParamsToProtocol(rpcPParams); - } - - /** - * Unimplemented - open for contribution - * - * Fetches transaction info for a given hash. - * @param hash - The transaction hash - */ - fetchTxInfo(hash: string): Promise { - throw new Error("Method not implemented."); - } - - /** - * Not complete - open for contribution - * - * Fetches output UTxOs of a given transaction hash. - * @param hash - The transaction hash - */ - async fetchUTxOs(hash: string, index?: number): Promise { - const txHash = hexToBytes(hash); - - // Fetch specific UTxO if index is given - if (index !== undefined) { - const [utxo] = await this.queryClient.readUtxosByOutputRef([ - { txHash: txHash, outputIndex: index }, - ]); - return utxo - ? [this._rpcUtxoToMeshUtxo(utxo.txoRef, utxo.parsedValued!)] - : []; - } - - // Otherwise, fetch all UTxOs in batches - const batchSize = 100; - let outputIndex = 0; - const allUtxos: UTxO[] = []; - - while (true) { - const batch = Array.from({ length: batchSize }, (_, i) => ({ - txHash: txHash, - outputIndex: outputIndex + i, - })); - - const utxos = await this.queryClient.readUtxosByOutputRef(batch); - const meshUtxos = utxos.map((u) => - this._rpcUtxoToMeshUtxo(u.txoRef, u.parsedValued!), - ); - allUtxos.push(...meshUtxos); - - if (utxos.length < batchSize) break; - outputIndex += batchSize; - } - - return allUtxos; - } - - /** - * Unimplemented - open for contribution - * - * Fetches the governance proposal information. - * @param txHash The transaction hash of the proposal - * @param certIndex The certificate index of the proposal - * @returns The governance proposal information - */ - async fetchGovernanceProposal( - txHash: string, - certIndex: number, - ): Promise { - throw new Error("Method not implemented"); - } - - /** - * Unimplemented - open for contribution - * - * @param url - */ - get(url: string): Promise { - throw new Error("Method not implemented."); - } - - /** - * Waits for transaction confirmation within a given timeout. - * @param txId - The transaction hash. - * @param timeout - Optional timeout in milliseconds. - * @returns True if the transaction is confirmed within the timeout, otherwise false. - */ - awaitTransactionConfirmation( - txId: string, - timeout?: number, - ): Promise { - const onConfirmed = (async () => { - const updates = this.submitClient.waitForTx(hexToBytes(txId)); - - for await (const stage of updates) { - if (stage == submit.Stage.CONFIRMED) { - return true; - } - } - - return false; - })(); - - const onTimeout: Promise = new Promise((resolve) => - setTimeout(() => resolve(false), timeout), - ); - - return Promise.race([onConfirmed, onTimeout]); - } - - /** - * Helper function to convert an RPC UTxO object to a Mesh UTxO object. - * @param rpcTxoRef - The transaction output reference from RPC. - * @param rpcTxOutput - The transaction output details from RPC. - * @returns A formatted UTxO object. - */ - private _rpcUtxoToMeshUtxo( - rpcTxoRef: spec.query.TxoRef, - rpcTxOutput: spec.cardano.TxOutput, - ): UTxO { - const amount: Asset[] = [ - { - unit: "lovelace", - quantity: rpcTxOutput.coin.toString(), - }, - ]; - rpcTxOutput.assets.forEach((ma) => { - ma.assets.forEach((asset) => { - amount.push({ - unit: - Buffer.from(ma.policyId).toString("hex") + - Buffer.from(asset.name).toString("hex"), - quantity: asset.outputCoin.toString(), - }); - }); - }); - - let dataHash: string | undefined = undefined; - let plutusData: string | undefined = undefined; - - if (rpcTxOutput.datum !== undefined) { - if ( - rpcTxOutput.datum?.originalCbor && - rpcTxOutput.datum.originalCbor.length > 0 - ) { - dataHash = Buffer.from(rpcTxOutput.datum.hash).toString("hex"); - plutusData = Buffer.from(rpcTxOutput.datum.originalCbor).toString( - "hex", - ); - } else if (rpcTxOutput.datum?.hash && rpcTxOutput.datum.hash.length > 0) { - dataHash = Buffer.from(rpcTxOutput.datum.hash).toString("hex"); - } - } - - let scriptRef: string | undefined = undefined; - let scriptHash: string | undefined = undefined; - - if (rpcTxOutput.script !== undefined) { - if ( - rpcTxOutput.script.script.case !== "native" && - rpcTxOutput.script.script.value - ) { - scriptRef = bytesToHex(rpcTxOutput.script.script.value); - scriptRef = cbor.encode(Buffer.from(scriptRef, "hex")).toString("hex"); - let V: "V1" | "V2" | "V3"; - if (rpcTxOutput.script.script.case === "plutusV1") { - V = "V1"; - } else if (rpcTxOutput.script.script.case === "plutusV2") { - V = "V2"; - } else { - V = "V3"; - } - scriptHash = deserializePlutusScript(scriptRef!, V).hash(); - } - } - - return { - input: { - outputIndex: rpcTxoRef.index, - txHash: Buffer.from(rpcTxoRef.hash).toString("hex"), - }, - output: { - address: Address.fromBytes( - CardanoSDKUtil.HexBlob.fromBytes(rpcTxOutput.address), - ).toBech32(), - amount: amount, - dataHash: dataHash, - plutusData: plutusData, - scriptRef: scriptRef, - scriptHash: scriptHash, - }, - }; - } - - /** - * Converts RPC protocol parameters to a Mesh Protocol object. - * @param rpcPParams - The protocol parameters from the RPC. - * @returns A Protocol object. - */ - private _rpcPParamsToProtocol(rpcPParams: spec.cardano.PParams): Protocol { - return castProtocol({ - coinsPerUtxoSize: Number(rpcPParams.coinsPerUtxoByte), - collateralPercent: Number(rpcPParams.collateralPercentage), - decentralisation: 0, // Deprecated in Babbage era. - keyDeposit: Number(rpcPParams.stakeKeyDeposit), - maxBlockExMem: Number(rpcPParams.maxExecutionUnitsPerBlock?.memory), - maxBlockExSteps: Number(rpcPParams.maxExecutionUnitsPerBlock?.steps), - maxBlockHeaderSize: Number(rpcPParams.maxBlockHeaderSize), - maxBlockSize: Number(rpcPParams.maxBlockBodySize), - maxCollateralInputs: Number(rpcPParams.maxCollateralInputs), - maxTxExMem: Number(rpcPParams.maxExecutionUnitsPerTransaction?.memory), - maxTxExSteps: Number(rpcPParams.maxExecutionUnitsPerTransaction?.steps), - maxTxSize: Number(rpcPParams.maxTxSize), - maxValSize: Number(rpcPParams.maxValueSize), - minFeeA: Number(rpcPParams.minFeeCoefficient), - minFeeB: Number(rpcPParams.minFeeConstant), - minPoolCost: Number(rpcPParams.minPoolCost), - poolDeposit: Number(rpcPParams.poolDeposit), - priceMem: Number(rpcPParams.prices?.memory), - priceStep: Number(rpcPParams.prices?.steps), - }); - } -} diff --git a/packages/mesh-provider/src/yaci.ts b/packages/mesh-provider/src/yaci.ts deleted file mode 100644 index d90a5c971..000000000 --- a/packages/mesh-provider/src/yaci.ts +++ /dev/null @@ -1,684 +0,0 @@ -import axios, { AxiosInstance } from "axios"; - -import { - AccountInfo, - Action, - Asset, - AssetMetadata, - BlockInfo, - castProtocol, - fromUTF8, - GovernanceProposalInfo, - IEvaluator, - IFetcher, - IFetcherOptions, - IListener, - ISubmitter, - NativeScript, - PlutusScript, - Protocol, - RedeemerTagType, - SUPPORTED_HANDLES, - TransactionInfo, - Unit, - UTxO, -} from "@meshsdk/common"; -import { - normalizePlutusScript, - resolveRewardAddress, - toScriptRef, -} from "@meshsdk/core-cst"; - -import { utxosToAssets } from "./common/utxos-to-assets"; -import { parseHttpError } from "./utils"; -import { parseAssetUnit } from "./utils/parse-asset-unit"; - -/** - * Yaci DevKit is a development tool designed for rapid and efficient Cardano blockchain development. It allows developers to create and destroy custom Cardano devnets in seconds, providing fast feedback loops and simplifying the iteration process. - * - * Get started: - * ```typescript - * import { YaciProvider } from "@meshsdk/core"; - * const provider = new YaciProvider('', ''); - * ``` - */ -export class YaciProvider - implements IFetcher, IListener, ISubmitter, IEvaluator -{ - private readonly _axiosInstance: AxiosInstance; - private readonly _adminAxiosInstance: AxiosInstance | undefined; - - /** - * Set the URL of the instance. - * @param baseUrl The base URL of the instance. - */ - constructor( - baseUrl = "https://yaci-node.meshjs.dev/api/v1/", - adminUrl?: string, - ) { - this._axiosInstance = axios.create({ - baseURL: baseUrl, - }); - if (adminUrl) { - this._adminAxiosInstance = axios.create({ - baseURL: adminUrl, - }); - } - } - - /** - * Obtain information about a specific stake account. - * @param address - Wallet address to fetch account information - */ - async fetchAccountInfo(address: string): Promise { - const rewardAddress = address.startsWith("addr") - ? resolveRewardAddress(address) - : address; - - try { - const { data, status } = await this._axiosInstance.get( - `accounts/${rewardAddress}`, - ); - - if (status === 200) - return { - poolId: data.pool_id, - active: data.active || data.active_epoch !== null, - balance: data.controlled_amount, - rewards: data.withdrawable_amount, - withdrawals: data.withdrawals_sum, - }; - - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - private resolveScriptRef = async ( - scriptHash: string, - ): Promise => { - if (scriptHash) { - const { data, status } = await this._axiosInstance.get( - `scripts/${scriptHash}`, - ); - - if (status === 200) { - let script; - if (data.type.startsWith("plutus")) { - const plutusScript = await this.fetchPlutusScriptCBOR(scriptHash); - const normalized = normalizePlutusScript(plutusScript, "DoubleCBOR"); - script = { - version: data.type.replace("plutus", ""), - code: normalized, - }; - } else { - script = await this.fetchNativeScriptJSON(scriptHash); - } - - return toScriptRef(script).toCbor(); - } - - throw parseHttpError(data); - } - - return undefined; - }; - - private toUTxO = async ( - bfUTxO: YaciUTxO, - tx_hash: string, - ): Promise => ({ - input: { - outputIndex: bfUTxO.output_index, - txHash: tx_hash, - }, - output: { - address: bfUTxO.address, - amount: bfUTxO.amount.map((utxo) => { - // diff bf - return { ...utxo, quantity: utxo.quantity.toString() }; - }), - dataHash: bfUTxO.data_hash ?? undefined, - plutusData: bfUTxO.inline_datum ?? undefined, - scriptRef: bfUTxO.script_ref - ? bfUTxO.script_ref - : bfUTxO.reference_script_hash - ? await this.resolveScriptRef(bfUTxO.reference_script_hash) - : undefined, - scriptHash: bfUTxO.reference_script_hash, - }, - }); - - /** - * Fetches the assets for a given address. - * @param address - The address to fetch assets for - * @returns A map of asset unit to quantity - */ - async fetchAddressAssets( - address: string, - ): Promise<{ [key: string]: string }> { - const utxos = await this.fetchAddressUTxOs(address); - return utxosToAssets(utxos); - } - - /** - * UTXOs of the address. - * @param address - The address to fetch UTXO - * @param asset - UTXOs of a given asset​ - * @returns - Array of UTxOs - */ - async fetchAddressUTxOs(address: string, asset?: string): Promise { - const filter = asset !== undefined ? `/${asset}` : ""; - const url = `addresses/${address}/utxos` + filter; - - const paginateUTxOs = async ( - page = 1, - utxos: UTxO[] = [], - ): Promise => { - const { data, status } = await this._axiosInstance.get( - `${url}?page=${page}`, - ); - - if (status === 200) - return data.length > 0 - ? paginateUTxOs(page + 1, [ - ...utxos, - ...(await Promise.all( - data.map((utxo: any) => this.toUTxO(utxo, utxo.tx_hash)), - )), - ]) - : utxos; - - throw parseHttpError(data); - }; - - try { - return await paginateUTxOs(); - } catch (error) { - return []; - } - } - - /** - * Unimplemented - open for contribution - * - * Transactions for an address. The `TransactionInfo` would only return the `hash`, `inputs`, and `outputs`. - * @param address - The address to fetch transactions for - * @returns - partial TransactionInfo - */ - async fetchAddressTxs( - address: string, - option: IFetcherOptions = { maxPage: 100, order: "desc" }, - ): Promise { - // open for contribution, see blockfrost.ts for reference - throw new Error("Method not implemented."); - } - - /** - * Fetches the asset addresses for a given asset. - * @param asset - The asset to fetch addresses for - */ - async fetchAssetAddresses( - asset: string, - ): Promise<{ address: string; quantity: string }[]> { - const paginateAddresses = async ( - page = 1, - addresses: T[] = [], - ): Promise => { - const { policyId, assetName } = parseAssetUnit(asset); - const { data, status } = await this._axiosInstance.get( - `assets/${policyId}${assetName}/addresses?page=${page}`, - ); - - if (status === 200) - return data.length > 0 - ? paginateAddresses(page + 1, [...addresses, ...data]) - : addresses; - - throw parseHttpError(data); - }; - - try { - return await paginateAddresses<{ address: string; quantity: string }>(); - } catch (error) { - return []; - } - } - - /** - * Fetches the metadata for a given asset. - * @param asset - The asset to fetch metadata for - * @returns The metadata for the asset - */ - async fetchAssetMetadata(asset: string): Promise { - try { - const { policyId, assetName } = parseAssetUnit(asset); - const { data, status } = await this._axiosInstance.get( - `assets/${policyId}${assetName}`, - ); - - if (status === 200) - return { - ...data.onchain_metadata, - }; - - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Fetches the block information for a given block hash. - * @param hash The block hash to fetch from - * @returns The block information - */ - async fetchBlockInfo(hash: string): Promise { - try { - const { data, status } = await this._axiosInstance.get(`blocks/${hash}`); - - if (status === 200) - return { - confirmations: data.confirmations, - epoch: data.epoch, - epochSlot: data.epoch_slot.toString(), - fees: data.fees, - hash: data.hash, - nextBlock: data.next_block ?? "", - operationalCertificate: data.op_cert, - output: data.output ?? "0", - previousBlock: data.previous_block, - size: data.size, - slot: data.slot.toString(), - slotLeader: data.slot_leader ?? "", - time: data.time, - txCount: data.tx_count, - VRFKey: data.block_vrf, - }; - - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Fetches the list of assets for a given policy ID. - * @param policyId The policy ID to fetch assets for - * @param cursor The cursor for pagination - * @returns The list of assets and the next cursor - */ - async fetchCollectionAssets( - policyId: string, - cursor = 1, - ): Promise<{ assets: Asset[]; next: string | number | null }> { - try { - const { data, status } = await this._axiosInstance.get( - `assets/policy/${policyId}?page=${cursor}`, - ); - - if (status === 200) - return { - assets: data.map((asset: any) => ({ - unit: asset.asset, - quantity: asset.quantity, - })), - next: data.length === 100 ? cursor + 1 : null, - }; - - throw parseHttpError(data); - } catch (error) { - return { assets: [], next: null }; - } - } - - async fetchHandle(handle: string): Promise { - throw new Error("Method not implemented."); - } - - async fetchHandleAddress(handle: string): Promise { - try { - const assetName = fromUTF8(handle.replace("$", "")); - const { data, status } = await this._axiosInstance.get( - `assets/${SUPPORTED_HANDLES[1]}${assetName}/addresses`, - ); - - if (status === 200) return data[0].address; - - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Fetch the latest protocol parameters. - * @param epoch Optional - The epoch to fetch protocol parameters for - * @returns - Protocol parameters - */ - async fetchProtocolParameters(epoch = Number.NaN): Promise { - try { - const { data, status } = await this._axiosInstance.get( - `epochs/${isNaN(epoch) ? "latest" : epoch}/parameters`, - ); - - if (status === 200) - return castProtocol({ - coinsPerUtxoSize: data.coins_per_utxo_size, - collateralPercent: data.collateral_percent, - decentralisation: data.decentralisation_param, - epoch: data.epoch, - keyDeposit: data.key_deposit, - maxBlockExMem: data.max_block_ex_mem, - maxBlockExSteps: data.max_block_ex_steps, - maxBlockHeaderSize: data.max_block_header_size, - maxBlockSize: data.max_block_size, - maxCollateralInputs: data.max_collateral_inputs, - maxTxExMem: data.max_tx_ex_mem, - maxTxExSteps: data.max_tx_ex_steps, - maxTxSize: data.max_tx_size, - maxValSize: data.max_val_size, - minFeeA: data.min_fee_a, - minFeeB: data.min_fee_b, - minPoolCost: data.min_pool_cost, - poolDeposit: data.pool_deposit, - priceMem: data.price_mem, - priceStep: data.price_step, - }); - - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Fetches the transaction information for a given transaction hash. - * @param hash The transaction hash to fetch - * @returns The transaction information - */ - async fetchTxInfo(hash: string): Promise { - try { - const { data, status } = await this._axiosInstance.get(`txs/${hash}`); - - if (status === 200) - return { - block: data.block, - deposit: data.deposit, - fees: data.fees, - hash: data.hash, - index: data.index, - invalidAfter: data.invalid_hereafter ?? "", - invalidBefore: data.invalid_before ?? "", - slot: data.slot.toString(), - size: data.size, - }; - - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Get UTxOs for a given hash. - * @param hash The transaction hash - * @param index Optional - The output index for filtering post fetching - * @returns - Array of UTxOs - */ - async fetchUTxOs(hash: string, index?: number): Promise { - try { - const { data, status } = await this._axiosInstance.get( - `txs/${hash}/utxos`, - ); - if (status === 200) { - const bfOutputs = data.outputs as YaciUTxO[]; - const outputsPromises: Promise[] = []; - bfOutputs.forEach((output) => { - outputsPromises.push(this.toUTxO(output, hash)); - }); - const outputs = await Promise.all(outputsPromises); - - if (index !== undefined) { - return outputs.filter((utxo) => utxo.input.outputIndex === index); - } - - return outputs; - } - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Unimplemented - open for contribution - * - * Fetches the governance proposal information. - * @param txHash The transaction hash of the proposal - * @param certIndex The certificate index of the proposal - * @returns The governance proposal information - */ - async fetchGovernanceProposal( - txHash: string, - certIndex: number, - ): Promise { - throw new Error("Method not implemented"); - } - - async get(url: string): Promise { - try { - const { data, status } = await this._axiosInstance.get(url); - if (status === 200) { - return data; - } - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Allow you to listen to a transaction confirmation. Upon confirmation, the callback will be called. - * @param txHash - The transaction hash to listen for confirmation - * @param callback - The callback function to call when the transaction is confirmed - * @param limit - The number of blocks to wait for confirmation - */ - onTxConfirmed(txHash: string, callback: () => void, limit = 100): void { - let attempts = 0; - - const checkTx = setInterval(() => { - if (attempts >= limit) clearInterval(checkTx); - - this.fetchTxInfo(txHash) - .then((txInfo) => { - this.fetchBlockInfo(txInfo.block) - .then((blockInfo) => { - if (blockInfo?.confirmations > 0) { - clearInterval(checkTx); - callback(); - } - }) - .catch(() => { - attempts += 1; - }); - }) - .catch(() => { - attempts += 1; - }); - }, 5_000); - } - - /** - * Submit a serialized transaction to the network. - * @param tx - The serialized transaction in hex to submit - * @returns The transaction hash of the submitted transaction - */ - async submitTx(txHex: string): Promise { - try { - const headers = { "Content-Type": "text/plain" }; - const { status, data } = await this._axiosInstance.post( - "/tx/submit", - txHex, - { - headers, - }, - ); - - if (status === 202) { - return data; - } - - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Evaluates the resources required to execute the transaction - * @param tx - The transaction to evaluate - */ - async evaluateTx( - txHex: string, - additionalUtxos?: UTxO[], - additionalTxs?: string[], - ): Promise[]> { - // TODO: additionalUtxos/additionalTxs dep on utxoprc implementation - - try { - const headers = { "Content-Type": "application/cbor" }; - const { status, data } = await this._axiosInstance.post( - "utils/txs/evaluate", - txHex, - { - headers, - }, - ); - - if (status === 202 && data.result.EvaluationResult) { - const tagMap: { [key: string]: RedeemerTagType } = { - spend: "SPEND", - mint: "MINT", - certificate: "CERT", - reward: "REWARD", - }; - const result: Omit[] = []; - - Object.keys(data.result.EvaluationResult).forEach((key) => { - const [tagKey, index] = key.split(":"); - const { memory, steps } = data.result.EvaluationResult[key]; - result.push({ - tag: tagMap[tagKey!]!, - index: Number(index), - budget: { mem: memory, steps }, - }); - }); - - return result; - } - - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - async getDevnetInfo(): Promise { - try { - if (this._adminAxiosInstance === undefined) - throw parseHttpError("Admin URL not provided"); - const { status, data } = await this._adminAxiosInstance.get( - `local-cluster/api/admin/devnet`, - ); - - if (status === 200) { - return data; - } - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - async getGenesisByEra(era: string): Promise { - try { - if (this._adminAxiosInstance === undefined) - throw parseHttpError("Admin URL not provided"); - const { status, data } = await this._adminAxiosInstance.get( - `local-cluster/api/admin/devnet/genesis/${era}`, - ); - - if (status === 200) { - return data; - } - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - /** - * Topup address with ADA - * @param address - Address to topup - * @param amount - Amount to topup - */ - async addressTopup(address: string, amount: string): Promise { - try { - if (this._adminAxiosInstance === undefined) - throw parseHttpError("Admin URL not provided"); - const headers = { "Content-Type": "application/json", accept: "*/*" }; - const { status, data } = await this._adminAxiosInstance.post( - "local-cluster/api/addresses/topup", - JSON.stringify({ address: address, adaAmount: parseInt(amount) }), - { - headers, - }, - ); - - if (status === 200) { - return data; - } - throw parseHttpError(data); - } catch (error) { - throw parseHttpError(error); - } - } - - private async fetchPlutusScriptCBOR(scriptHash: string): Promise { - const { data, status } = await this._axiosInstance.get( - `scripts/${scriptHash}/cbor`, - ); - - if (status === 200) return data.cbor; - - throw parseHttpError(data); - } - - private async fetchNativeScriptJSON( - scriptHash: string, - ): Promise { - const { data, status } = await this._axiosInstance.get( - `scripts/${scriptHash}/json`, - ); - - if (status === 200) return data.json; - - throw parseHttpError(data); - } -} - -type YaciUTxO = { - output_index: number; - amount: Array<{ - unit: Unit; - quantity: number; - }>; - address: string; - data_hash?: string; - inline_datum?: string; - collateral?: boolean; - reference_script_hash?: string; - script_ref?: string; -}; diff --git a/packages/mesh-provider/test/blockfrost/evaluator.test.ts b/packages/mesh-provider/test/blockfrost/evaluator.test.ts deleted file mode 100644 index b3115c0db..000000000 --- a/packages/mesh-provider/test/blockfrost/evaluator.test.ts +++ /dev/null @@ -1,134 +0,0 @@ -import dotenv from "dotenv"; - -import { - applyCborEncoding, - DRep, - MeshTxBuilder, - resolveScriptHash, - serializeRewardAddress, -} from "@meshsdk/core"; -import { blake2b } from "@meshsdk/core-cst"; -import { BlockfrostProvider } from "@meshsdk/provider"; - -dotenv.config(); -const apiKey = process.env.BLOCKFROST_API_KEY_PREPROD; -const provider = new BlockfrostProvider(apiKey ?? "", 0); - -const successTx = - "84a70081825820859d3b4fd3a4c012b43ee1bbbc99240aec1827c3b8a74b867d10a7f4759149bc00018382583900e4cfbbc317c718f78d137b6535d8940618cc3d2ac04f1f35acf78e53a1521c2cea3cc79762d575581e47ea60b8eaa03430716cfd6140c796821a0011b0dea1581c67dd133868f14107b25772f3c5abaa1e0549f4b400b5e0e3a1136152a149000643b0546573743101a300581d7067dd133868f14107b25772f3c5abaa1e0549f4b400b5e0e3a113615201821a001ad510a1581c67dd133868f14107b25772f3c5abaa1e0549f4b400b5e0e3a1136152a149000de140546573743101028201d8185882d8799fa4446e616d6545546573743145696d6167655835697066733a2f2f516d527a6963705265757477436b4d36616f74754b6a4572464355443231334470775071364279757a4d4a617561496d656469615479706549696d6167652f6a70674b6465736372697074696f6e5348656c6c6f20776f726c64202d20434950363802ff825839003659ed2a30abb32e97589f2a01c8500ce8fc4897b868ebe42fbf4a8aa1521c2cea3cc79762d575581e47ea60b8eaa03430716cfd6140c7961a00134249021a000c830909a1581c67dd133868f14107b25772f3c5abaa1e0549f4b400b5e0e3a1136152a249000643b054657374310149000de1405465737431010b58207ae25a8a9286347cc1e0444a0de75e07432a6ed243591ef673fd837bb5235a670d82825820859d3b4fd3a4c012b43ee1bbbc99240aec1827c3b8a74b867d10a7f4759149bc00825820859d3b4fd3a4c012b43ee1bbbc99240aec1827c3b8a74b867d10a7f4759149bc050e81581ce4cfbbc317c718f78d137b6535d8940618cc3d2ac04f1f35acf78e53a206815883588101000032323232323232322232533300632323232533300a3370e9000000899b8f375c601c601000e911046d6573680014a0601000260180026018002600800429309b2b19299980319b87480000044c8c94ccc02cc03400852616375c601600260080062c60080044600a6ea80048c00cdd5000ab9a5573aaae7955cfaba157450581840100d8799f446d657368ff821a006acfc01ab2d05e00f5f6"; -const failTx = - "84a700848258203483fb2ced4fe3a8365e6a759a39d649b6c059bd04e8db6525dceef1fe7b2f25182c8258207702194883a5e3313a20bc7f4c52c05bd3b0d77e195be58d3976b36572774292182c82582077b196828fa17091d0ec94850c98d03bda0e6cd9e4373cdcd60a6b192f73fee9182e825820aaf165950213d80294a5e8f88aa31f6358c5e7c661071620715f4c3ce187f51c07018ea300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb01821a0016e360a1581c5066154a102ee037390c5236f78db23239b49c5748d3d349f3ccf04ba144555344581a02faf080028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb01821a0016e360a1581c5066154a102ee037390c5236f78db23239b49c5748d3d349f3ccf04ba144555344581a02faf080028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a3005839101e9d8eac318f4e362ce80b987e63b6e41740d08bb084f014ae6633a95ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb01821a0053a7e2a1581c5066154a102ee037390c5236f78db23239b49c5748d3d349f3ccf04ba144555344581a004c4b40028201d81843d87980825839001e4eb194e3335a0dcc4f5c5d009318167c583bb3b0879d9f718cd9e0d63a93470bd4d8bb986c02ff8a6043796b91cc397ceb29058f5c9ac01a20c46d08021a0003e8780b58208847a14577b0531c2a8ae0f7c27f2c75cc076c0864b3a641f5302a654c03b4cc0d818258203fbdf2b0b4213855dd9b87f7c94a50cf352ba6edfdded85ecb22cf9ceb75f814070e82581c1e4eb194e3335a0dcc4f5c5d009318167c583bb3b0879d9f718cd9e0581c5ca51b304b1f79d92eada8c58c513e969458dcd27ce4f5bc47823ffa128682582077b196828fa17091d0ec94850c98d03bda0e6cd9e4373cdcd60a6b192f73fee9182e825820aaf165950213d80294a5e8f88aa31f6358c5e7c661071620715f4c3ce187f51c078258207702194883a5e3313a20bc7f4c52c05bd3b0d77e195be58d3976b36572774292182c825820efe6fbbdd6b993d96883b96c572bfcaa0a4a138c83bd948dec1751d1bfda09b3008258203483fb2ced4fe3a8365e6a759a39d649b6c059bd04e8db6525dceef1fe7b2f25182c825820afd210b69469ebbb2997fd9285c6ae50833d82bcd817c6126ec05126fcdb6cad01a10584840000d879808219a9391a00d6d123840001d879808219a9391a00d6d123840002d879808219a9391a00d6d123840003d879808219a9391a00d6d123f5f6"; - -const chainedSuccessTx = - "84a700818258208aecae827277c5da5f5d0e267f4ec0d15d2aeaa51d30b653fb46535e2483d7bb00018382583900e4cfbbc317c718f78d137b6535d8940618cc3d2ac04f1f35acf78e53a1521c2cea3cc79762d575581e47ea60b8eaa03430716cfd6140c796821a0011b0dea1581c67dd133868f14107b25772f3c5abaa1e0549f4b400b5e0e3a1136152a149000643b0546573743101a300581d7067dd133868f14107b25772f3c5abaa1e0549f4b400b5e0e3a113615201821a001ad510a1581c67dd133868f14107b25772f3c5abaa1e0549f4b400b5e0e3a1136152a149000de140546573743101028201d8185882d8799fa4446e616d6545546573743145696d6167655835697066733a2f2f516d527a6963705265757477436b4d36616f74754b6a4572464355443231334470775071364279757a4d4a617561496d656469615479706549696d6167652f6a70674b6465736372697074696f6e5348656c6c6f20776f726c64202d20434950363802ff825839003659ed2a30abb32e97589f2a01c8500ce8fc4897b868ebe42fbf4a8aa1521c2cea3cc79762d575581e47ea60b8eaa03430716cfd6140c7961a00134249021a000c830909a1581c67dd133868f14107b25772f3c5abaa1e0549f4b400b5e0e3a1136152a249000643b054657374310149000de1405465737431010b58207ae25a8a9286347cc1e0444a0de75e07432a6ed243591ef673fd837bb5235a670d82825820859d3b4fd3a4c012b43ee1bbbc99240aec1827c3b8a74b867d10a7f4759149bc00825820859d3b4fd3a4c012b43ee1bbbc99240aec1827c3b8a74b867d10a7f4759149bc050e81581ce4cfbbc317c718f78d137b6535d8940618cc3d2ac04f1f35acf78e53a206815883588101000032323232323232322232533300632323232533300a3370e9000000899b8f375c601c601000e911046d6573680014a0601000260180026018002600800429309b2b19299980319b87480000044c8c94ccc02cc03400852616375c601600260080062c60080044600a6ea80048c00cdd5000ab9a5573aaae7955cfaba157450581840100d8799f446d657368ff821a006acfc01ab2d05e00f5f6"; - -describe("Blockfrost Evaluator", () => { - it("should successfully evaluate correct tx", async () => { - const res = await provider.evaluateTx(successTx); - expect(res.length).toBeGreaterThan(0); - }); - - it("should fail evaluating incorrect tx", async () => { - const res = await provider.evaluateTx(failTx).catch(() => "error"); - expect(res).toBe("error"); - }); - - it("should accept additionalTxs parameter", async () => { - const res = await provider.evaluateTx(chainedSuccessTx, [ - { - input: { - txHash: - "8aecae827277c5da5f5d0e267f4ec0d15d2aeaa51d30b653fb46535e2483d7bb", - outputIndex: 0, - }, - output: { - address: - "addr_test1qrjvlw7rzlr33audzdak2dwcjsrp3npa9tqy78e44nmcu5ap2gwze63uc7tk94t4tq0y06nqhr42qdpsw9k06c2qc7tqzjkxjr", - amount: [{ unit: "lovelace", quantity: "5000000" }], - }, - }, - ]); - expect(res.length).toBeGreaterThan(0); - }); - - it("should fail with invalid additionalTxs", async () => { - const res = await provider - .evaluateTx(chainedSuccessTx, []) - .catch(() => "error"); - expect(res).toBe("error"); - }); - - it("should succeed with with registering certificates", async () => { - const txHash = (tx: string) => { - return blake2b(32).update(Buffer.from(tx, "utf-8")).digest("hex"); - }; - - const alwaysSucceedCbor = applyCborEncoding( - "58340101002332259800a518a4d153300249011856616c696461746f722072657475726e65642066616c736500136564004ae715cd01", - ); - - const alwaysSucceedHash = resolveScriptHash(alwaysSucceedCbor, "V3"); - - const txBuilder = new MeshTxBuilder({}); - const drep: DRep = { - alwaysAbstain: null, - }; - - const txHex = await txBuilder - .voteDelegationCertificate( - drep, - serializeRewardAddress(alwaysSucceedHash, true), - ) - .certificateScript(alwaysSucceedCbor, "V3") - .certificateRedeemerValue("") - .txIn( - txHash("tx1"), - 0, - [ - { - unit: "lovelace", - quantity: "100000000", - }, - ], - "addr_test1qpvx0sacufuypa2k4sngk7q40zc5c4npl337uusdh64kv0uafhxhu32dys6pvn6wlw8dav6cmp4pmtv7cc3yel9uu0nq93swx9", - 0, - ) - .txInCollateral( - txHash("tx1"), - 0, - [ - { - unit: "lovelace", - quantity: "100000000", - }, - ], - "addr_test1qpvx0sacufuypa2k4sngk7q40zc5c4npl337uusdh64kv0uafhxhu32dys6pvn6wlw8dav6cmp4pmtv7cc3yel9uu0nq93swx9", - ) - .changeAddress( - "addr_test1qpvx0sacufuypa2k4sngk7q40zc5c4npl337uusdh64kv0uafhxhu32dys6pvn6wlw8dav6cmp4pmtv7cc3yel9uu0nq93swx9", - ) - .complete(); - - const res = await provider.evaluateTx(txHex, [ - { - input: { - txHash: txHash("tx1"), - outputIndex: 0, - }, - output: { - address: - "addr_test1qpvx0sacufuypa2k4sngk7q40zc5c4npl337uusdh64kv0uafhxhu32dys6pvn6wlw8dav6cmp4pmtv7cc3yel9uu0nq93swx9", - amount: [ - { - unit: "lovelace", - quantity: "100000000", - }, - ], - }, - }, - ]); - expect(res).toEqual([ - { tag: "CERT", index: 0, budget: { mem: 2001, steps: 380149 } }, - ]); - }); -}); diff --git a/packages/mesh-provider/test/koios/evaluator.test.ts b/packages/mesh-provider/test/koios/evaluator.test.ts deleted file mode 100644 index 7bdaccb5c..000000000 --- a/packages/mesh-provider/test/koios/evaluator.test.ts +++ /dev/null @@ -1,134 +0,0 @@ -import dotenv from "dotenv"; - -import { - applyCborEncoding, - DRep, - MeshTxBuilder, - resolveScriptHash, - serializeRewardAddress, -} from "@meshsdk/core"; -import { blake2b } from "@meshsdk/core-cst"; -import { KoiosProvider } from "@meshsdk/provider"; - -dotenv.config(); -const apiKey = process.env.KOIOS_API_KEY_PREPROD!; -const provider = new KoiosProvider("preprod", apiKey); - -const successTx = - "84a70081825820859d3b4fd3a4c012b43ee1bbbc99240aec1827c3b8a74b867d10a7f4759149bc00018382583900e4cfbbc317c718f78d137b6535d8940618cc3d2ac04f1f35acf78e53a1521c2cea3cc79762d575581e47ea60b8eaa03430716cfd6140c796821a0011b0dea1581c67dd133868f14107b25772f3c5abaa1e0549f4b400b5e0e3a1136152a149000643b0546573743101a300581d7067dd133868f14107b25772f3c5abaa1e0549f4b400b5e0e3a113615201821a001ad510a1581c67dd133868f14107b25772f3c5abaa1e0549f4b400b5e0e3a1136152a149000de140546573743101028201d8185882d8799fa4446e616d6545546573743145696d6167655835697066733a2f2f516d527a6963705265757477436b4d36616f74754b6a4572464355443231334470775071364279757a4d4a617561496d656469615479706549696d6167652f6a70674b6465736372697074696f6e5348656c6c6f20776f726c64202d20434950363802ff825839003659ed2a30abb32e97589f2a01c8500ce8fc4897b868ebe42fbf4a8aa1521c2cea3cc79762d575581e47ea60b8eaa03430716cfd6140c7961a00134249021a000c830909a1581c67dd133868f14107b25772f3c5abaa1e0549f4b400b5e0e3a1136152a249000643b054657374310149000de1405465737431010b58207ae25a8a9286347cc1e0444a0de75e07432a6ed243591ef673fd837bb5235a670d82825820859d3b4fd3a4c012b43ee1bbbc99240aec1827c3b8a74b867d10a7f4759149bc00825820859d3b4fd3a4c012b43ee1bbbc99240aec1827c3b8a74b867d10a7f4759149bc050e81581ce4cfbbc317c718f78d137b6535d8940618cc3d2ac04f1f35acf78e53a206815883588101000032323232323232322232533300632323232533300a3370e9000000899b8f375c601c601000e911046d6573680014a0601000260180026018002600800429309b2b19299980319b87480000044c8c94ccc02cc03400852616375c601600260080062c60080044600a6ea80048c00cdd5000ab9a5573aaae7955cfaba157450581840100d8799f446d657368ff821a006acfc01ab2d05e00f5f6"; -const failTx = - "84a700848258203483fb2ced4fe3a8365e6a759a39d649b6c059bd04e8db6525dceef1fe7b2f25182c8258207702194883a5e3313a20bc7f4c52c05bd3b0d77e195be58d3976b36572774292182c82582077b196828fa17091d0ec94850c98d03bda0e6cd9e4373cdcd60a6b192f73fee9182e825820aaf165950213d80294a5e8f88aa31f6358c5e7c661071620715f4c3ce187f51c07018ea300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb01821a0016e360a1581c5066154a102ee037390c5236f78db23239b49c5748d3d349f3ccf04ba144555344581a02faf080028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb01821a0016e360a1581c5066154a102ee037390c5236f78db23239b49c5748d3d349f3ccf04ba144555344581a02faf080028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a3005839101e9d8eac318f4e362ce80b987e63b6e41740d08bb084f014ae6633a95ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb01821a0053a7e2a1581c5066154a102ee037390c5236f78db23239b49c5748d3d349f3ccf04ba144555344581a004c4b40028201d81843d87980825839001e4eb194e3335a0dcc4f5c5d009318167c583bb3b0879d9f718cd9e0d63a93470bd4d8bb986c02ff8a6043796b91cc397ceb29058f5c9ac01a20c46d08021a0003e8780b58208847a14577b0531c2a8ae0f7c27f2c75cc076c0864b3a641f5302a654c03b4cc0d818258203fbdf2b0b4213855dd9b87f7c94a50cf352ba6edfdded85ecb22cf9ceb75f814070e82581c1e4eb194e3335a0dcc4f5c5d009318167c583bb3b0879d9f718cd9e0581c5ca51b304b1f79d92eada8c58c513e969458dcd27ce4f5bc47823ffa128682582077b196828fa17091d0ec94850c98d03bda0e6cd9e4373cdcd60a6b192f73fee9182e825820aaf165950213d80294a5e8f88aa31f6358c5e7c661071620715f4c3ce187f51c078258207702194883a5e3313a20bc7f4c52c05bd3b0d77e195be58d3976b36572774292182c825820efe6fbbdd6b993d96883b96c572bfcaa0a4a138c83bd948dec1751d1bfda09b3008258203483fb2ced4fe3a8365e6a759a39d649b6c059bd04e8db6525dceef1fe7b2f25182c825820afd210b69469ebbb2997fd9285c6ae50833d82bcd817c6126ec05126fcdb6cad01a10584840000d879808219a9391a00d6d123840001d879808219a9391a00d6d123840002d879808219a9391a00d6d123840003d879808219a9391a00d6d123f5f6"; - -const chainedSuccessTx = - "84a700818258208aecae827277c5da5f5d0e267f4ec0d15d2aeaa51d30b653fb46535e2483d7bb00018382583900e4cfbbc317c718f78d137b6535d8940618cc3d2ac04f1f35acf78e53a1521c2cea3cc79762d575581e47ea60b8eaa03430716cfd6140c796821a0011b0dea1581c67dd133868f14107b25772f3c5abaa1e0549f4b400b5e0e3a1136152a149000643b0546573743101a300581d7067dd133868f14107b25772f3c5abaa1e0549f4b400b5e0e3a113615201821a001ad510a1581c67dd133868f14107b25772f3c5abaa1e0549f4b400b5e0e3a1136152a149000de140546573743101028201d8185882d8799fa4446e616d6545546573743145696d6167655835697066733a2f2f516d527a6963705265757477436b4d36616f74754b6a4572464355443231334470775071364279757a4d4a617561496d656469615479706549696d6167652f6a70674b6465736372697074696f6e5348656c6c6f20776f726c64202d20434950363802ff825839003659ed2a30abb32e97589f2a01c8500ce8fc4897b868ebe42fbf4a8aa1521c2cea3cc79762d575581e47ea60b8eaa03430716cfd6140c7961a00134249021a000c830909a1581c67dd133868f14107b25772f3c5abaa1e0549f4b400b5e0e3a1136152a249000643b054657374310149000de1405465737431010b58207ae25a8a9286347cc1e0444a0de75e07432a6ed243591ef673fd837bb5235a670d82825820859d3b4fd3a4c012b43ee1bbbc99240aec1827c3b8a74b867d10a7f4759149bc00825820859d3b4fd3a4c012b43ee1bbbc99240aec1827c3b8a74b867d10a7f4759149bc050e81581ce4cfbbc317c718f78d137b6535d8940618cc3d2ac04f1f35acf78e53a206815883588101000032323232323232322232533300632323232533300a3370e9000000899b8f375c601c601000e911046d6573680014a0601000260180026018002600800429309b2b19299980319b87480000044c8c94ccc02cc03400852616375c601600260080062c60080044600a6ea80048c00cdd5000ab9a5573aaae7955cfaba157450581840100d8799f446d657368ff821a006acfc01ab2d05e00f5f6"; - -describe("Koios Evaluator", () => { - it("should successfully evaluate correct tx", async () => { - const res = await provider.evaluateTx(successTx); - expect(res.length).toBeGreaterThan(0); - }); - - it("should fail evaluating incorrect tx", async () => { - const res = await provider.evaluateTx(failTx).catch(() => "error"); - expect(res).toBe("error"); - }); - - it("should successfully evaluate tx with additionalTxs", async () => { - const res = await provider.evaluateTx(chainedSuccessTx, [ - { - input: { - txHash: - "8aecae827277c5da5f5d0e267f4ec0d15d2aeaa51d30b653fb46535e2483d7bb", - outputIndex: 0, - }, - output: { - address: - "addr_test1qrjvlw7rzlr33audzdak2dwcjsrp3npa9tqy78e44nmcu5ap2gwze63uc7tk94t4tq0y06nqhr42qdpsw9k06c2qc7tqzjkxjr", - amount: [{ unit: "lovelace", quantity: "5000000" }], - }, - }, - ]); - expect(res.length).toBeGreaterThan(0); - }); - - it("should fail with invalid additionalTxs CBOR", async () => { - const res = await provider - .evaluateTx(chainedSuccessTx, []) - .catch(() => "error"); - expect(res).toBe("error"); - }); - - it("should succeed with with registering certificates", async () => { - const txHash = (tx: string) => { - return blake2b(32).update(Buffer.from(tx, "utf-8")).digest("hex"); - }; - - const alwaysSucceedCbor = applyCborEncoding( - "58340101002332259800a518a4d153300249011856616c696461746f722072657475726e65642066616c736500136564004ae715cd01", - ); - - const alwaysSucceedHash = resolveScriptHash(alwaysSucceedCbor, "V3"); - - const txBuilder = new MeshTxBuilder({}); - const drep: DRep = { - alwaysAbstain: null, - }; - - const txHex = await txBuilder - .voteDelegationCertificate( - drep, - serializeRewardAddress(alwaysSucceedHash, true), - ) - .certificateScript(alwaysSucceedCbor, "V3") - .certificateRedeemerValue("") - .txIn( - txHash("tx1"), - 0, - [ - { - unit: "lovelace", - quantity: "100000000", - }, - ], - "addr_test1qpvx0sacufuypa2k4sngk7q40zc5c4npl337uusdh64kv0uafhxhu32dys6pvn6wlw8dav6cmp4pmtv7cc3yel9uu0nq93swx9", - 0, - ) - .txInCollateral( - txHash("tx1"), - 0, - [ - { - unit: "lovelace", - quantity: "100000000", - }, - ], - "addr_test1qpvx0sacufuypa2k4sngk7q40zc5c4npl337uusdh64kv0uafhxhu32dys6pvn6wlw8dav6cmp4pmtv7cc3yel9uu0nq93swx9", - ) - .changeAddress( - "addr_test1qpvx0sacufuypa2k4sngk7q40zc5c4npl337uusdh64kv0uafhxhu32dys6pvn6wlw8dav6cmp4pmtv7cc3yel9uu0nq93swx9", - ) - .complete(); - - const res = await provider.evaluateTx(txHex, [ - { - input: { - txHash: txHash("tx1"), - outputIndex: 0, - }, - output: { - address: - "addr_test1qpvx0sacufuypa2k4sngk7q40zc5c4npl337uusdh64kv0uafhxhu32dys6pvn6wlw8dav6cmp4pmtv7cc3yel9uu0nq93swx9", - amount: [ - { - unit: "lovelace", - quantity: "100000000", - }, - ], - }, - }, - ]); - expect(res).toEqual([ - { tag: "CERT", index: 0, budget: { mem: 2001, steps: 380149 } }, - ]); - }); -}); diff --git a/packages/mesh-provider/test/maestro/evaluator.test.ts b/packages/mesh-provider/test/maestro/evaluator.test.ts deleted file mode 100644 index dbf55b0b2..000000000 --- a/packages/mesh-provider/test/maestro/evaluator.test.ts +++ /dev/null @@ -1,134 +0,0 @@ -import dotenv from "dotenv"; - -import { - applyCborEncoding, - DRep, - MeshTxBuilder, - resolveScriptHash, - serializeRewardAddress, -} from "@meshsdk/core"; -import { blake2b } from "@meshsdk/core-cst"; -import { MaestroProvider } from "@meshsdk/provider"; - -dotenv.config(); -const apiKey = process.env.MAESTRO_API_KEY!; -const provider = new MaestroProvider({ apiKey, network: "Preprod" }); - -const successTx = - "84a70081825820859d3b4fd3a4c012b43ee1bbbc99240aec1827c3b8a74b867d10a7f4759149bc00018382583900e4cfbbc317c718f78d137b6535d8940618cc3d2ac04f1f35acf78e53a1521c2cea3cc79762d575581e47ea60b8eaa03430716cfd6140c796821a0011b0dea1581c67dd133868f14107b25772f3c5abaa1e0549f4b400b5e0e3a1136152a149000643b0546573743101a300581d7067dd133868f14107b25772f3c5abaa1e0549f4b400b5e0e3a113615201821a001ad510a1581c67dd133868f14107b25772f3c5abaa1e0549f4b400b5e0e3a1136152a149000de140546573743101028201d8185882d8799fa4446e616d6545546573743145696d6167655835697066733a2f2f516d527a6963705265757477436b4d36616f74754b6a4572464355443231334470775071364279757a4d4a617561496d656469615479706549696d6167652f6a70674b6465736372697074696f6e5348656c6c6f20776f726c64202d20434950363802ff825839003659ed2a30abb32e97589f2a01c8500ce8fc4897b868ebe42fbf4a8aa1521c2cea3cc79762d575581e47ea60b8eaa03430716cfd6140c7961a00134249021a000c830909a1581c67dd133868f14107b25772f3c5abaa1e0549f4b400b5e0e3a1136152a249000643b054657374310149000de1405465737431010b58207ae25a8a9286347cc1e0444a0de75e07432a6ed243591ef673fd837bb5235a670d82825820859d3b4fd3a4c012b43ee1bbbc99240aec1827c3b8a74b867d10a7f4759149bc00825820859d3b4fd3a4c012b43ee1bbbc99240aec1827c3b8a74b867d10a7f4759149bc050e81581ce4cfbbc317c718f78d137b6535d8940618cc3d2ac04f1f35acf78e53a206815883588101000032323232323232322232533300632323232533300a3370e9000000899b8f375c601c601000e911046d6573680014a0601000260180026018002600800429309b2b19299980319b87480000044c8c94ccc02cc03400852616375c601600260080062c60080044600a6ea80048c00cdd5000ab9a5573aaae7955cfaba157450581840100d8799f446d657368ff821a006acfc01ab2d05e00f5f6"; -const failTx = - "84a700848258203483fb2ced4fe3a8365e6a759a39d649b6c059bd04e8db6525dceef1fe7b2f25182c8258207702194883a5e3313a20bc7f4c52c05bd3b0d77e195be58d3976b36572774292182c82582077b196828fa17091d0ec94850c98d03bda0e6cd9e4373cdcd60a6b192f73fee9182e825820aaf165950213d80294a5e8f88aa31f6358c5e7c661071620715f4c3ce187f51c07018ea300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb01821a0016e360a1581c5066154a102ee037390c5236f78db23239b49c5748d3d349f3ccf04ba144555344581a02faf080028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb01821a0016e360a1581c5066154a102ee037390c5236f78db23239b49c5748d3d349f3ccf04ba144555344581a02faf080028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a3005839101e9d8eac318f4e362ce80b987e63b6e41740d08bb084f014ae6633a95ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb01821a0053a7e2a1581c5066154a102ee037390c5236f78db23239b49c5748d3d349f3ccf04ba144555344581a004c4b40028201d81843d87980825839001e4eb194e3335a0dcc4f5c5d009318167c583bb3b0879d9f718cd9e0d63a93470bd4d8bb986c02ff8a6043796b91cc397ceb29058f5c9ac01a20c46d08021a0003e8780b58208847a14577b0531c2a8ae0f7c27f2c75cc076c0864b3a641f5302a654c03b4cc0d818258203fbdf2b0b4213855dd9b87f7c94a50cf352ba6edfdded85ecb22cf9ceb75f814070e82581c1e4eb194e3335a0dcc4f5c5d009318167c583bb3b0879d9f718cd9e0581c5ca51b304b1f79d92eada8c58c513e969458dcd27ce4f5bc47823ffa128682582077b196828fa17091d0ec94850c98d03bda0e6cd9e4373cdcd60a6b192f73fee9182e825820aaf165950213d80294a5e8f88aa31f6358c5e7c661071620715f4c3ce187f51c078258207702194883a5e3313a20bc7f4c52c05bd3b0d77e195be58d3976b36572774292182c825820efe6fbbdd6b993d96883b96c572bfcaa0a4a138c83bd948dec1751d1bfda09b3008258203483fb2ced4fe3a8365e6a759a39d649b6c059bd04e8db6525dceef1fe7b2f25182c825820afd210b69469ebbb2997fd9285c6ae50833d82bcd817c6126ec05126fcdb6cad01a10584840000d879808219a9391a00d6d123840001d879808219a9391a00d6d123840002d879808219a9391a00d6d123840003d879808219a9391a00d6d123f5f6"; - -const chainedSuccessTx = - "84a700818258208aecae827277c5da5f5d0e267f4ec0d15d2aeaa51d30b653fb46535e2483d7bb00018382583900e4cfbbc317c718f78d137b6535d8940618cc3d2ac04f1f35acf78e53a1521c2cea3cc79762d575581e47ea60b8eaa03430716cfd6140c796821a0011b0dea1581c67dd133868f14107b25772f3c5abaa1e0549f4b400b5e0e3a1136152a149000643b0546573743101a300581d7067dd133868f14107b25772f3c5abaa1e0549f4b400b5e0e3a113615201821a001ad510a1581c67dd133868f14107b25772f3c5abaa1e0549f4b400b5e0e3a1136152a149000de140546573743101028201d8185882d8799fa4446e616d6545546573743145696d6167655835697066733a2f2f516d527a6963705265757477436b4d36616f74754b6a4572464355443231334470775071364279757a4d4a617561496d656469615479706549696d6167652f6a70674b6465736372697074696f6e5348656c6c6f20776f726c64202d20434950363802ff825839003659ed2a30abb32e97589f2a01c8500ce8fc4897b868ebe42fbf4a8aa1521c2cea3cc79762d575581e47ea60b8eaa03430716cfd6140c7961a00134249021a000c830909a1581c67dd133868f14107b25772f3c5abaa1e0549f4b400b5e0e3a1136152a249000643b054657374310149000de1405465737431010b58207ae25a8a9286347cc1e0444a0de75e07432a6ed243591ef673fd837bb5235a670d82825820859d3b4fd3a4c012b43ee1bbbc99240aec1827c3b8a74b867d10a7f4759149bc00825820859d3b4fd3a4c012b43ee1bbbc99240aec1827c3b8a74b867d10a7f4759149bc050e81581ce4cfbbc317c718f78d137b6535d8940618cc3d2ac04f1f35acf78e53a206815883588101000032323232323232322232533300632323232533300a3370e9000000899b8f375c601c601000e911046d6573680014a0601000260180026018002600800429309b2b19299980319b87480000044c8c94ccc02cc03400852616375c601600260080062c60080044600a6ea80048c00cdd5000ab9a5573aaae7955cfaba157450581840100d8799f446d657368ff821a006acfc01ab2d05e00f5f6"; - -describe("Maestro Evaluator", () => { - it("should successfully evaluate correct tx", async () => { - const res = await provider.evaluateTx(successTx); - expect(res.length).toBeGreaterThan(0); - }); - - it("should fail evaluating incorrect tx", async () => { - const res = await provider.evaluateTx(failTx).catch(() => "error"); - expect(res).toBe("error"); - }); - - it("should successfully evaluate tx with additionalTxs", async () => { - const res = await provider.evaluateTx(chainedSuccessTx, [ - { - input: { - txHash: - "8aecae827277c5da5f5d0e267f4ec0d15d2aeaa51d30b653fb46535e2483d7bb", - outputIndex: 0, - }, - output: { - address: - "addr_test1qrjvlw7rzlr33audzdak2dwcjsrp3npa9tqy78e44nmcu5ap2gwze63uc7tk94t4tq0y06nqhr42qdpsw9k06c2qc7tqzjkxjr", - amount: [{ unit: "lovelace", quantity: "5000000" }], - }, - }, - ]); - expect(res.length).toBeGreaterThan(0); - }); - - it("should fail with invalid additionalTxs CBOR", async () => { - const res = await provider - .evaluateTx(chainedSuccessTx, []) - .catch(() => "error"); - expect(res).toBe("error"); - }); - - it("should succeed with with registering certificates", async () => { - const txHash = (tx: string) => { - return blake2b(32).update(Buffer.from(tx, "utf-8")).digest("hex"); - }; - - const alwaysSucceedCbor = applyCborEncoding( - "58340101002332259800a518a4d153300249011856616c696461746f722072657475726e65642066616c736500136564004ae715cd01", - ); - - const alwaysSucceedHash = resolveScriptHash(alwaysSucceedCbor, "V3"); - - const txBuilder = new MeshTxBuilder({}); - const drep: DRep = { - alwaysAbstain: null, - }; - - const txHex = await txBuilder - .voteDelegationCertificate( - drep, - serializeRewardAddress(alwaysSucceedHash, true), - ) - .certificateScript(alwaysSucceedCbor, "V3") - .certificateRedeemerValue("") - .txIn( - txHash("tx1"), - 0, - [ - { - unit: "lovelace", - quantity: "100000000", - }, - ], - "addr_test1qpvx0sacufuypa2k4sngk7q40zc5c4npl337uusdh64kv0uafhxhu32dys6pvn6wlw8dav6cmp4pmtv7cc3yel9uu0nq93swx9", - 0, - ) - .txInCollateral( - txHash("tx1"), - 0, - [ - { - unit: "lovelace", - quantity: "100000000", - }, - ], - "addr_test1qpvx0sacufuypa2k4sngk7q40zc5c4npl337uusdh64kv0uafhxhu32dys6pvn6wlw8dav6cmp4pmtv7cc3yel9uu0nq93swx9", - ) - .changeAddress( - "addr_test1qpvx0sacufuypa2k4sngk7q40zc5c4npl337uusdh64kv0uafhxhu32dys6pvn6wlw8dav6cmp4pmtv7cc3yel9uu0nq93swx9", - ) - .complete(); - - const res = await provider.evaluateTx(txHex, [ - { - input: { - txHash: txHash("tx1"), - outputIndex: 0, - }, - output: { - address: - "addr_test1qpvx0sacufuypa2k4sngk7q40zc5c4npl337uusdh64kv0uafhxhu32dys6pvn6wlw8dav6cmp4pmtv7cc3yel9uu0nq93swx9", - amount: [ - { - unit: "lovelace", - quantity: "100000000", - }, - ], - }, - }, - ]); - expect(res).toEqual([ - { tag: "CERT", index: 0, budget: { mem: 2001, steps: 380149 } }, - ]); - }); -}); diff --git a/packages/mesh-provider/test/offline/fetcher.test.ts b/packages/mesh-provider/test/offline/fetcher.test.ts deleted file mode 100644 index 8ae153c20..000000000 --- a/packages/mesh-provider/test/offline/fetcher.test.ts +++ /dev/null @@ -1,1006 +0,0 @@ -import { - AccountInfo, - Asset, - AssetMetadata, - BlockInfo, - Protocol, - TransactionInfo, - UTxO, -} from "@meshsdk/common"; -import { OfflineFetcher } from "@meshsdk/provider"; - -describe("OfflineFetcher", () => { - let fetcher: OfflineFetcher; - - beforeEach(() => { - fetcher = new OfflineFetcher(); - }); - - const validBech32Address = - "addr_test1qrhsnfvaqnd8r7dm9f9c5fscyfqmqzptyrn63dzrgvfw6p7vxwdrt70qlcpeeagscasafhffqsxy36t90ldv06wqrk2qkdr4hz"; - const validBech32Address2 = - "addr_test1qql3kkt57ncf7zt5hej4un8ff79z6zra7dut08hnj9kzdv437u94wweqf3nftw8kd6mw03uv2hk7jscqyn47cm74lpwsju87pd"; - const validBase58Address = - "Ae2tdPwUPEZ4YjgvykNpoFeYUxoyhNj2kg8KfKWN2FizsSpLUPv68MpTVDo"; - const validPoolId = - "pool1v0hm27ywsufus3xl6v4jayw7rccflmll642lsf7vnmskgtvnnx7"; - const validVrfVk = - "vrf_vk1qthm27ywsufus3xl6v4jayw7rccflmll642lsf7vnmskgqgzqvzqtwha9s"; - const validTxHash = - "0443456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"; - const validBlockHash = - "abcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcd"; - const validAsset = - "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"; - const validPolicyId = - "0123456789abcdef0123456789abcdef0123456789abcdef01234567"; - const validEpoch = 100; - - const sampleAccountInfo: AccountInfo = { - active: true, - balance: "1000000", - poolId: validPoolId, - rewards: "5000", - withdrawals: "0", - }; - - const sampleUTxO: UTxO = { - input: { - txHash: validTxHash, - outputIndex: 0, - }, - output: { - address: validBech32Address, - amount: [{ unit: "lovelace", quantity: "1000000" }], - dataHash: undefined, - }, - }; - - const sampleAssetMetadata: AssetMetadata = { - name: "Sample Token", - description: "A sample token for testing", - ticker: "IDKTICKER", - url: "https://example.com", - logo: null, - decimals: 0, - unit: validAsset, - }; - - const sampleBlockInfo: BlockInfo = { - hash: validBlockHash, - time: 1638316800, - slot: "50000000", - epoch: 290, - epochSlot: "200000", - slotLeader: validPoolId, - size: 500, - txCount: 10, - output: "1000000000", - fees: "500000", - previousBlock: - "bbcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcd", - nextBlock: - "bbcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdef", - confirmations: 10, - operationalCertificate: validTxHash, - VRFKey: validVrfVk, - }; - - const sampleProtocolParameters: Protocol = { - epoch: validEpoch, - minFeeA: 44, - minFeeB: 155381, - maxBlockSize: 65536, - maxTxSize: 16384, - maxBlockHeaderSize: 1100, - keyDeposit: 2000000, - poolDeposit: 500000000, - decentralisation: 0.5, - minPoolCost: "340000000", - priceMem: 0.0577, - priceStep: 0.0000721, - maxTxExMem: "10000000", - maxTxExSteps: "10000000000", - maxBlockExMem: "50000000", - maxBlockExSteps: "40000000000", - maxValSize: 5000, - collateralPercent: 150, - maxCollateralInputs: 3, - coinsPerUtxoSize: 4310, - minFeeRefScriptCostPerByte: 1000, - }; - - const sampleTransactionInfo: TransactionInfo = { - hash: validTxHash, - block: validBlockHash, - index: 0, - fees: "500000", - deposit: "0", - size: 200, - invalidBefore: "", - invalidAfter: "", - slot: "50000000", - inputs: [ - { - ...sampleUTxO, - output: { - address: validBech32Address2, - amount: [{ unit: "lovelace", quantity: "1000000" }], - dataHash: undefined, - }, - }, - ], - outputs: [ - { - ...sampleUTxO, - output: { - address: validBech32Address2, - amount: [{ unit: "lovelace", quantity: "1000000" }], - dataHash: undefined, - }, - }, - ], - }; - - const sampleAssetAddress = { - address: validBech32Address, - quantity: "1000", - }; - - const sampleAsset: Asset = { - unit: validAsset, - quantity: "1000", - }; - - describe("addAccount", () => { - it("should add a valid Bech32 account", () => { - expect(() => - fetcher.addAccount(validBech32Address, sampleAccountInfo), - ).not.toThrow(); - }); - - it("should add a valid Base58 account", () => { - const accountInfoBase58 = { - ...sampleAccountInfo, - address: validBase58Address, - }; - expect(() => - fetcher.addAccount(validBase58Address, accountInfoBase58), - ).not.toThrow(); - }); - - it("should throw an error for invalid address", () => { - const invalidAddress = "asasdsadasd44499(("; - expect(() => - fetcher.addAccount(invalidAddress, sampleAccountInfo), - ).toThrowError( - "Invalid address: must be a valid Bech32 or Base58 address", - ); - }); - }); - - describe("fetchAccountInfo", () => { - it("should fetch account info after adding it", async () => { - fetcher.addAccount(validBech32Address, sampleAccountInfo); - const accountInfo = await fetcher.fetchAccountInfo(validBech32Address); - expect(accountInfo).toEqual(sampleAccountInfo); - }); - - it("should throw an error if account info is not found", async () => { - await expect( - fetcher.fetchAccountInfo(validBech32Address), - ).rejects.toThrowError(`Account not found: ${validBech32Address}`); - }); - }); - - describe("addUTxOs", () => { - it("should add valid UTxOs", () => { - expect(() => fetcher.addUTxOs([sampleUTxO])).not.toThrow(); - }); - - it("should throw an error for invalid UTxOs", () => { - const invalidUTxO = { - ...sampleUTxO, - input: { ...sampleUTxO.input, txHash: "invalid_hash" }, - }; - expect(() => fetcher.addUTxOs([invalidUTxO])).toThrowError( - "Invalid txHash for UTxO at index 0: must be a 64-character hexadecimal string", - ); - }); - }); - - describe("fetchAddressUTxOs", () => { - it("should fetch UTxOs for an address", async () => { - fetcher.addUTxOs([sampleUTxO]); - const utxos = await fetcher.fetchAddressUTxOs(validBech32Address); - expect(utxos).toEqual([sampleUTxO]); - }); - - it("should return an empty array if no UTxOs are found", async () => { - const utxos = await fetcher.fetchAddressUTxOs(validBech32Address); - expect(utxos).toEqual([]); - }); - }); - - describe("addAssetMetadata", () => { - it("should add valid asset metadata", () => { - expect(() => - fetcher.addAssetMetadata(validAsset, sampleAssetMetadata), - ).not.toThrow(); - }); - - it("should throw an error for invalid asset", () => { - const invalidAsset = "short_asset"; - expect(() => - fetcher.addAssetMetadata(invalidAsset, sampleAssetMetadata), - ).toThrowError( - `Invalid asset ${invalidAsset}: must be a string longer than 56 characters`, - ); - }); - }); - - describe("fetchAssetMetadata", () => { - it("should fetch asset metadata after adding it", async () => { - fetcher.addAssetMetadata(validAsset, sampleAssetMetadata); - const metadata = await fetcher.fetchAssetMetadata(validAsset); - expect(metadata).toEqual(sampleAssetMetadata); - }); - - it("should throw an error if asset metadata is not found", async () => { - await expect(fetcher.fetchAssetMetadata(validAsset)).rejects.toThrowError( - `Asset metadata not found: ${validAsset}`, - ); - }); - }); - - describe("addBlock", () => { - it("should add a valid block", () => { - expect(() => fetcher.addBlock(sampleBlockInfo)).not.toThrow(); - }); - - it("should throw an error for invalid block hash", () => { - const invalidBlockInfo = { ...sampleBlockInfo, hash: "invalid_hash" }; - expect(() => fetcher.addBlock(invalidBlockInfo)).toThrowError( - "Invalid block hash: must be a 64-character hexadecimal string", - ); - }); - }); - - describe("fetchBlockInfo", () => { - it("should fetch block info after adding it", async () => { - fetcher.addBlock(sampleBlockInfo); - const blockInfo = await fetcher.fetchBlockInfo(sampleBlockInfo.hash); - expect(blockInfo).toEqual(sampleBlockInfo); - }); - - it("should throw an error if block info is not found", async () => { - await expect( - fetcher.fetchBlockInfo(sampleBlockInfo.hash), - ).rejects.toThrowError(`Block not found: ${sampleBlockInfo.hash}`); - }); - }); - - describe("addProtocolParameters", () => { - it("should add valid protocol parameters", () => { - expect(() => - fetcher.addProtocolParameters(sampleProtocolParameters), - ).not.toThrow(); - }); - - it("should throw an error for invalid epoch", () => { - const invalidParameters = { ...sampleProtocolParameters, epoch: -1 }; - expect(() => - fetcher.addProtocolParameters(invalidParameters), - ).toThrowError("Invalid epoch: must be a non-negative integer"); - }); - }); - - describe("fetchProtocolParameters", () => { - it("should fetch protocol parameters after adding them", async () => { - fetcher.addProtocolParameters(sampleProtocolParameters); - const parameters = await fetcher.fetchProtocolParameters(validEpoch); - expect(parameters).toEqual(sampleProtocolParameters); - }); - - it("should throw an error if protocol parameters are not found", async () => { - await expect( - fetcher.fetchProtocolParameters(validEpoch), - ).rejects.toThrowError( - `Protocol parameters not found for epoch: ${validEpoch}`, - ); - }); - }); - - describe("addTransaction", () => { - it("should add a valid transaction", () => { - expect(() => fetcher.addTransaction(sampleTransactionInfo)).not.toThrow(); - }); - - it("should throw an error for invalid transaction hash", () => { - const invalidTransactionInfo = { - ...sampleTransactionInfo, - hash: "invalid_hash", - }; - expect(() => fetcher.addTransaction(invalidTransactionInfo)).toThrowError( - "Invalid transaction hash: must be a 64-character hexadecimal string", - ); - }); - }); - - describe("fetchTxInfo", () => { - it("should fetch transaction info after adding it", async () => { - fetcher.addTransaction(sampleTransactionInfo); - const txInfo = await fetcher.fetchTxInfo(sampleTransactionInfo.hash); - expect(txInfo).toEqual(sampleTransactionInfo); - }); - - it("should throw an error if transaction info is not found", async () => { - await expect( - fetcher.fetchTxInfo(sampleTransactionInfo.hash), - ).rejects.toThrowError( - `Transaction not found: ${sampleTransactionInfo.hash}`, - ); - }); - }); - - describe("addAssetAddresses", () => { - it("should add valid asset addresses", () => { - expect(() => - fetcher.addAssetAddresses(validAsset, [sampleAssetAddress]), - ).not.toThrow(); - }); - - it("should throw an error for invalid addresses", () => { - const invalidAssetAddress = { - ...sampleAssetAddress, - address: "invalid_address", - }; - expect(() => - fetcher.addAssetAddresses(validAsset, [invalidAssetAddress]), - ).toThrowError( - "Invalid 'address' field at index 0, should be bech32 string", - ); - }); - }); - - describe("fetchAssetAddresses", () => { - it("should fetch asset addresses after adding them", async () => { - fetcher.addAssetAddresses(validAsset, [sampleAssetAddress]); - const addresses = await fetcher.fetchAssetAddresses(validAsset); - expect(addresses).toEqual([sampleAssetAddress]); - }); - it("should combine addresses from UTXOs and asset addresses registry", async () => { - // Add UTXOs - const utxo1 = { - ...sampleUTxO, - output: { - address: validBech32Address, - amount: [{ unit: validAsset, quantity: "500" }], - }, - }; - const utxo2 = { - ...sampleUTxO, - output: { - address: validBase58Address, - amount: [{ unit: validAsset, quantity: "300" }], - }, - }; - fetcher.addUTxOs([utxo1, utxo2]); - - // Add asset addresses - fetcher.addAssetAddresses(validAsset, [ - { address: validBech32Address, quantity: "200" }, - { - address: - "addr_test1qp9xn9gwdjkj5l2vylwu3zrj7whkpe8xj7k0g04w93uthp7vxwdrt70qlcpeeagscasafhffqsxy36t90ldv06wqrk2qrc4l2c", - quantity: "100", - }, - ]); - - const addresses = await fetcher.fetchAssetAddresses(validAsset); - const expected = [ - { address: validBech32Address, quantity: "700" }, // 500 + 200 - { address: validBase58Address, quantity: "300" }, - { - address: - "addr_test1qp9xn9gwdjkj5l2vylwu3zrj7whkpe8xj7k0g04w93uthp7vxwdrt70qlcpeeagscasafhffqsxy36t90ldv06wqrk2qrc4l2c", - quantity: "100", - }, - ]; - - expect(addresses).toEqual(expect.arrayContaining(expected)); - }); - - it("should throw error for invalid asset", async () => { - await expect( - fetcher.fetchAssetAddresses("invalid_asset"), - ).rejects.toThrow("Invalid asset: must be a hex string"); - }); - - it("should handle case when no addresses found", async () => { - const addresses = await fetcher.fetchAssetAddresses(validAsset); - expect(addresses).toEqual([]); - }); - - it("should filter out zero quantity addresses", async () => { - const utxo = { - ...sampleUTxO, - output: { - address: validBech32Address, - amount: [{ unit: validAsset, quantity: "0" }], - }, - }; - fetcher.addUTxOs([utxo]); - - const addresses = await fetcher.fetchAssetAddresses(validAsset); - expect(addresses).toEqual([]); - }); - }); - - describe("fetchAddressAssets", () => { - it("should fetch assets from UTXOs and asset addresses", async () => { - // Add UTXOs with multiple assets - const utxo1 = { - ...sampleUTxO, - output: { - ...sampleUTxO.output, - amount: [ - { unit: "lovelace", quantity: "1000000" }, - { unit: validAsset, quantity: "500" }, - ], - }, - }; - const utxo2 = { - ...sampleUTxO, - input: { ...sampleUTxO.input, outputIndex: 1 }, - output: { - ...sampleUTxO.output, - amount: [ - { unit: "lovelace", quantity: "2000000" }, - { unit: validAsset, quantity: "300" }, - ], - }, - }; - fetcher.addUTxOs([utxo1, utxo2]); - - // Add asset addresses - fetcher.addAssetAddresses(validAsset, [ - { - address: validBech32Address, - quantity: "200", - }, - ]); - - const assets = await fetcher.fetchAddressAssets(validBech32Address); - const expected = [ - { unit: validAsset, quantity: "1000" }, // 500 + 300 + 200 - ]; - - expect(assets).toEqual(expect.arrayContaining(expected)); - }); - - it("should throw error for invalid address", async () => { - await expect( - fetcher.fetchAddressAssets("invalid_address"), - ).rejects.toThrow( - "Invalid address: must be a valid Bech32 or Base58 address", - ); - }); - - it("should return empty array if no assets found", async () => { - const assets = await fetcher.fetchAddressAssets(validBech32Address); - expect(assets).toEqual([]); - }); - }); - - describe("addCollectionAssets", () => { - it("should add valid collection assets", () => { - expect(() => fetcher.addCollectionAssets([sampleAsset])).not.toThrow(); - }); - - it("should throw an error for invalid asset units", () => { - const invalidAsset = { ...sampleAsset, unit: "short_unit" }; - expect(() => fetcher.addCollectionAssets([invalidAsset])).toThrowError( - "Invalid unit for asset at index 0: must be a string longer than 56 characters", - ); - }); - }); - - describe("fetchCollectionAssets", () => { - it("should fetch collection assets after adding them", async () => { - fetcher.addCollectionAssets([sampleAsset]); - const { assets, next } = - await fetcher.fetchCollectionAssets(validPolicyId); - expect(assets).toEqual([sampleAsset]); - expect(next).toBeUndefined(); - }); - - it("should throw an error if collection is not found", async () => { - await expect( - fetcher.fetchCollectionAssets(validPolicyId), - ).rejects.toThrowError(`Collection not found: ${validPolicyId}`); - }); - }); - - describe("toJSON and fromJSON", () => { - it("should serialize and deserialize correctly", () => { - fetcher.addAccount(validBech32Address, sampleAccountInfo); - fetcher.addUTxOs([sampleUTxO]); - fetcher.addAssetMetadata(validAsset, sampleAssetMetadata); - fetcher.addBlock(sampleBlockInfo); - fetcher.addProtocolParameters(sampleProtocolParameters); - fetcher.addTransaction(sampleTransactionInfo); - fetcher.addAssetAddresses(validAsset, [sampleAssetAddress]); - fetcher.addCollectionAssets([sampleAsset]); - - const json = fetcher.toJSON(); - const newFetcher = OfflineFetcher.fromJSON(json); - - // Test fetch methods - expect(newFetcher.fetchAccountInfo(validBech32Address)).resolves.toEqual( - sampleAccountInfo, - ); - expect(newFetcher.fetchAddressUTxOs(validBech32Address)).resolves.toEqual( - [sampleUTxO], - ); - expect(newFetcher.fetchAssetMetadata(validAsset)).resolves.toEqual( - sampleAssetMetadata, - ); - expect(newFetcher.fetchBlockInfo(sampleBlockInfo.hash)).resolves.toEqual( - sampleBlockInfo, - ); - expect(newFetcher.fetchProtocolParameters(validEpoch)).resolves.toEqual( - sampleProtocolParameters, - ); - expect( - newFetcher.fetchTxInfo(sampleTransactionInfo.hash), - ).resolves.toEqual(sampleTransactionInfo); - expect(newFetcher.fetchAssetAddresses(validAsset)).resolves.toEqual([ - sampleAssetAddress, - ]); - expect(newFetcher.fetchCollectionAssets(validPolicyId)).resolves.toEqual({ - assets: [sampleAsset], - next: undefined, - }); - }); - }); - - describe("Error handling in fetch methods", () => { - it("fetchUTxOs should throw error if no UTxOs are found for txHash", async () => { - await expect(fetcher.fetchUTxOs(validTxHash)).rejects.toThrowError( - `No UTxOs found for transaction hash: ${validTxHash}`, - ); - }); - - it("fetchHandleAddress should throw error if handle is invalid", async () => { - await expect( - fetcher.fetchHandleAddress("$invalidHandle"), - ).rejects.toThrow(); - }); - }); - - describe("Pagination Tests", () => { - const totalAssets = 45; // Total number of assets to test pagination - const pageSize = 20; // Default page size in the paginate method - - let assets: Asset[] = []; - - beforeEach(() => { - // Generate assets for pagination tests - assets = []; - for (let i = 0; i < totalAssets; i++) { - const assetUnit = validPolicyId + i.toString().padStart(16, "0"); - assets.push({ - unit: assetUnit, - quantity: "1", - }); - } - fetcher.addCollectionAssets(assets); - }); - - it("should return the first page of assets", async () => { - const { assets: fetchedAssets, next } = - await fetcher.fetchCollectionAssets(validPolicyId); - expect(fetchedAssets.length).toBe(pageSize); - expect(fetchedAssets).toEqual(assets.slice(0, pageSize)); - expect(next).toBe(pageSize); // Next cursor should be the index of the next item - }); - - it("should return the second page of assets using the next cursor", async () => { - // Fetch the first page to get the 'next' cursor - const firstPage = await fetcher.fetchCollectionAssets(validPolicyId); - const nextCursor: number | string | undefined = firstPage.next; - - // Fetch the second page using the next cursor - const secondPage = await fetcher.fetchCollectionAssets( - validPolicyId, - nextCursor, - ); - expect(secondPage.assets.length).toBe(pageSize); - expect(secondPage.assets).toEqual(assets.slice(pageSize, pageSize * 2)); - expect(secondPage.next).toBe(pageSize * 2); - }); - - it("should return the last page of assets correctly", async () => { - // Calculate the cursor for the last page - const lastPageStartIndex = Math.floor(totalAssets / pageSize) * pageSize; - - const { assets: fetchedAssets, next } = - await fetcher.fetchCollectionAssets(validPolicyId, lastPageStartIndex); - - const expectedAssets = assets.slice(lastPageStartIndex); - - expect(fetchedAssets.length).toBe(expectedAssets.length); - expect(fetchedAssets).toEqual(expectedAssets); - expect(next).toBeUndefined(); - }); - - it("should return an empty array if cursor is beyond total assets", async () => { - const beyondLastIndex = totalAssets + 10; - const { assets: fetchedAssets, next } = - await fetcher.fetchCollectionAssets(validPolicyId, beyondLastIndex); - expect(fetchedAssets.length).toBe(0); - expect(fetchedAssets).toEqual([]); - expect(next).toBeUndefined(); - }); - - it("should handle invalid cursor gracefully by treating it as zero", async () => { - const invalidCursor = "invalid_cursor"; - await expect( - fetcher.fetchCollectionAssets(validPolicyId, invalidCursor), - ).rejects.toThrow(); - }); - - it("should handle custom page sizes", async () => { - // Modify the fetcher to use a custom page size - const customPageSize = 15; - - // Monkey-patch the paginate method for this test - const originalPaginate = (fetcher as any).paginate; - (fetcher as any).paginate = function ( - items: any[], - cursor: number | string | undefined, - ) { - return originalPaginate.call(this, items, cursor, customPageSize); - }; - - const { assets: fetchedAssets, next } = - await fetcher.fetchCollectionAssets(validPolicyId); - - expect(fetchedAssets.length).toBe(customPageSize); - expect(fetchedAssets).toEqual(assets.slice(0, customPageSize)); - expect(next).toBe(customPageSize); - }); - }); - - describe("Validation Tests", () => { - describe("addAccount", () => { - it("should throw an error if 'balance' is not a string of digits", () => { - const invalidAccountInfo = { - ...sampleAccountInfo, - balance: "invalid_balance", - }; - expect(() => - fetcher.addAccount(validBech32Address, invalidAccountInfo), - ).toThrow("Invalid 'balance': must be a string of digits"); - }); - - it("should throw an error if 'rewards' is not a string of digits", () => { - const invalidAccountInfo = { ...sampleAccountInfo, rewards: "-100" }; - expect(() => - fetcher.addAccount(validBech32Address, invalidAccountInfo), - ).toThrow("Invalid 'rewards': must be a string of digits"); - }); - - it("should throw an error if 'withdrawals' is not a string of digits", () => { - const invalidAccountInfo = { ...sampleAccountInfo, withdrawals: "abc" }; - expect(() => - fetcher.addAccount(validBech32Address, invalidAccountInfo), - ).toThrow("Invalid 'withdrawals': must be a string of digits"); - }); - - it("should throw an error if 'poolId' is invalid", () => { - const invalidAccountInfo = { - ...sampleAccountInfo, - poolId: "invalid_poolId", - }; - expect(() => - fetcher.addAccount(validBech32Address, invalidAccountInfo), - ).toThrow("Invalid 'poolId': must be a valid Bech32 pool address"); - }); - }); - - describe("addUTxOs", () => { - it("should throw an error if 'outputIndex' is negative", () => { - const invalidUTxO = { - ...sampleUTxO, - input: { ...sampleUTxO.input, outputIndex: -1 }, - }; - expect(() => fetcher.addUTxOs([invalidUTxO])).toThrow( - "Invalid outputIndex for UTxO at index 0: must be a non-negative integer", - ); - }); - - it("should throw an error if 'output.amount' is empty", () => { - const invalidUTxO = { - ...sampleUTxO, - output: { ...sampleUTxO.output, amount: [] }, - }; - expect(() => fetcher.addUTxOs([invalidUTxO])).toThrow( - "Invalid amount for UTxO at index 0: must be a non-empty array of assets", - ); - }); - - it("should throw an error if 'unit' in amount is invalid", () => { - const invalidUTxO = { - ...sampleUTxO, - output: { - ...sampleUTxO.output, - amount: [{ unit: "invalid_unit", quantity: "1000" }], - }, - }; - expect(() => fetcher.addUTxOs([invalidUTxO])).toThrow( - "Invalid unit for asset at index 0 in UTxO at index 0", - ); - }); - - it("should throw an error if 'quantity' in amount is not a string of digits", () => { - const invalidUTxO = { - ...sampleUTxO, - output: { - ...sampleUTxO.output, - amount: [{ unit: "lovelace", quantity: "-1000" }], - }, - }; - expect(() => fetcher.addUTxOs([invalidUTxO])).toThrow( - "Invalid quantity for asset at index 0 in UTxO at index 0: must be a string of digits", - ); - }); - - it("should throw an error if 'dataHash' is invalid", () => { - const invalidUTxO = { - ...sampleUTxO, - output: { ...sampleUTxO.output, dataHash: "invalid_dataHash" }, - }; - expect(() => fetcher.addUTxOs([invalidUTxO])).toThrow( - "Invalid dataHash for UTxO at index 0: must be a 64-character hexadecimal string or undefined", - ); - }); - - it("should throw an error if 'plutusData' is invalid", () => { - const invalidUTxO = { - ...sampleUTxO, - output: { ...sampleUTxO.output, plutusData: "invalid_plutusData" }, - }; - expect(() => fetcher.addUTxOs([invalidUTxO])).toThrow( - "Invalid plutusData for UTxO at index 0: must be a hexadecimal string or undefined", - ); - }); - - it("should throw an error if 'scriptRef' is invalid", () => { - const invalidUTxO = { - ...sampleUTxO, - output: { ...sampleUTxO.output, scriptRef: "invalid_scriptRef" }, - }; - expect(() => fetcher.addUTxOs([invalidUTxO])).toThrow( - "Invalid scriptRef for UTxO at index 0: must be a hexadecimal string or undefined", - ); - }); - - it("should throw an error if 'scriptHash' is invalid", () => { - const invalidUTxO = { - ...sampleUTxO, - output: { ...sampleUTxO.output, scriptHash: "invalid_scriptHash" }, - }; - expect(() => fetcher.addUTxOs([invalidUTxO])).toThrow( - "Invalid scriptHash for UTxO at index 0: must be a 56-character hexadecimal string or undefined", - ); - }); - }); - - describe("addAssetMetadata", () => { - it("should throw an error if 'metadata' is not an object", () => { - expect(() => fetcher.addAssetMetadata(validAsset, null as any)).toThrow( - "Invalid metadata object", - ); - }); - }); - - describe("addTransaction", () => { - it("should throw an error if 'index' is negative", () => { - const invalidTransactionInfo = { ...sampleTransactionInfo, index: -1 }; - expect(() => fetcher.addTransaction(invalidTransactionInfo)).toThrow( - "Invalid 'index': must be a non-negative integer", - ); - }); - - it("should throw an error if 'fees' is not a string of digits", () => { - const invalidTransactionInfo = { - ...sampleTransactionInfo, - fees: "-5000", - }; - expect(() => fetcher.addTransaction(invalidTransactionInfo)).toThrow( - "Invalid 'fees': must be a string of digits", - ); - }); - - it("should throw an error if 'size' is not a positive integer", () => { - const invalidTransactionInfo = { ...sampleTransactionInfo, size: 0 }; - expect(() => fetcher.addTransaction(invalidTransactionInfo)).toThrow( - "Invalid 'size': must be a positive integer", - ); - }); - - it("should throw an error if 'deposit' is not an integer string", () => { - const invalidTransactionInfo = { - ...sampleTransactionInfo, - deposit: "invalid_deposit", - }; - expect(() => fetcher.addTransaction(invalidTransactionInfo)).toThrow( - "Invalid 'deposit': must be a string representing an integer (positive or negative)", - ); - }); - - it("should throw an error if 'invalidBefore' is invalid", () => { - const invalidTransactionInfo = { - ...sampleTransactionInfo, - invalidBefore: "abc", - }; - expect(() => fetcher.addTransaction(invalidTransactionInfo)).toThrow( - "Invalid 'invalidBefore': must be a string of digits or empty string", - ); - }); - - it("should throw an error if 'invalidAfter' is invalid", () => { - const invalidTransactionInfo = { - ...sampleTransactionInfo, - invalidAfter: "-100", - }; - expect(() => fetcher.addTransaction(invalidTransactionInfo)).toThrow( - "Invalid 'invalidAfter': must be a string of digits or empty string", - ); - }); - }); - - describe("addBlock", () => { - it("should throw an error if 'time' is negative", () => { - const invalidBlockInfo = { ...sampleBlockInfo, time: -1 }; - expect(() => fetcher.addBlock(invalidBlockInfo)).toThrow( - "Invalid 'time': must be a non-negative integer", - ); - }); - - it("should throw an error if 'epoch' is negative", () => { - const invalidBlockInfo = { ...sampleBlockInfo, epoch: -1 }; - expect(() => fetcher.addBlock(invalidBlockInfo)).toThrow( - "Invalid 'epoch': must be a non-negative integer", - ); - }); - - it("should throw an error if 'size' is not a positive integer", () => { - const invalidBlockInfo = { ...sampleBlockInfo, size: 0 }; - expect(() => fetcher.addBlock(invalidBlockInfo)).toThrow( - "Invalid 'size': must be a positive integer", - ); - }); - - it("should throw an error if 'txCount' is negative", () => { - const invalidBlockInfo = { ...sampleBlockInfo, txCount: -1 }; - expect(() => fetcher.addBlock(invalidBlockInfo)).toThrow( - "Invalid 'txCount': must be a non-negative integer", - ); - }); - - it("should throw an error if 'slotLeader' is invalid", () => { - const invalidBlockInfo = { - ...sampleBlockInfo, - slotLeader: "invalid_slotLeader", - }; - expect(() => fetcher.addBlock(invalidBlockInfo)).toThrow( - "Invalid 'slotLeader': must be a bech32 string with pool prefix", - ); - }); - - it("should throw an error if 'VRFKey' is invalid", () => { - const invalidBlockInfo = { - ...sampleBlockInfo, - VRFKey: "invalid_VRFKey", - }; - expect(() => fetcher.addBlock(invalidBlockInfo)).toThrow( - "Invalid 'VRFKey': must be a bech32 string with vrf_vk1 prefix", - ); - }); - }); - - describe("addProtocolParameters", () => { - it("should throw an error if 'minFeeA' is negative", () => { - const invalidParameters = { ...sampleProtocolParameters, minFeeA: -1 }; - expect(() => fetcher.addProtocolParameters(invalidParameters)).toThrow( - "Invalid 'minFeeA': must be a non-negative integer", - ); - }); - - it("should throw an error if 'priceMem' is negative", () => { - const invalidParameters = { - ...sampleProtocolParameters, - priceMem: -0.1, - }; - expect(() => fetcher.addProtocolParameters(invalidParameters)).toThrow( - "Invalid 'priceMem': must be non-negative", - ); - }); - - it("should throw an error if 'decentralisation' is out of bounds", () => { - const invalidParametersHigh = { - ...sampleProtocolParameters, - decentralisation: 1.1, - }; - const invalidParametersLow = { - ...sampleProtocolParameters, - decentralisation: -0.1, - }; - expect(() => - fetcher.addProtocolParameters(invalidParametersHigh), - ).toThrow("Invalid 'decentralisation': must be between 0 and 1"); - expect(() => - fetcher.addProtocolParameters(invalidParametersLow), - ).toThrow("Invalid 'decentralisation': must be between 0 and 1"); - }); - - it("should throw an error if 'maxTxExMem' is not a string of digits", () => { - const invalidParameters = { - ...sampleProtocolParameters, - maxTxExMem: "invalid_value", - }; - expect(() => fetcher.addProtocolParameters(invalidParameters)).toThrow( - "Invalid 'maxTxExMem': must be a string of digits", - ); - }); - - it("should throw an error if 'maxValSize' is negative", () => { - const invalidParameters = { - ...sampleProtocolParameters, - maxValSize: -1, - }; - expect(() => fetcher.addProtocolParameters(invalidParameters)).toThrow( - "Invalid 'maxValSize': must be a non-negative integer", - ); - }); - }); - - describe("addAssetAddresses", () => { - it("should throw an error if 'quantity' is not a string of digits", () => { - const invalidAssetAddress = { - ...sampleAssetAddress, - quantity: "-1000", - }; - expect(() => - fetcher.addAssetAddresses(validAsset, [invalidAssetAddress]), - ).toThrow( - "Invalid 'quantity' field at index 0, should be a string of digits", - ); - }); - - it("should throw an error if 'addresses' is empty", () => { - expect(() => fetcher.addAssetAddresses(validAsset, [])).toThrow( - "Invalid addresses: must be a non-empty array", - ); - }); - }); - - describe("addCollectionAssets", () => { - it("should throw an error if 'assets' is empty", () => { - expect(() => fetcher.addCollectionAssets([])).toThrow( - "Invalid assets: must be a non-empty array", - ); - }); - - it("should throw an error if 'quantity' is not a string of digits", () => { - const invalidAsset = { ...sampleAsset, quantity: "-1000" }; - expect(() => fetcher.addCollectionAssets([invalidAsset])).toThrow( - "Invalid quantity for asset at index 0: must be a string of digits", - ); - }); - }); - }); -}); diff --git a/packages/mesh-provider/test/ogmios/evaluator.test.ts b/packages/mesh-provider/test/ogmios/evaluator.test.ts deleted file mode 100644 index 2322de61d..000000000 --- a/packages/mesh-provider/test/ogmios/evaluator.test.ts +++ /dev/null @@ -1,134 +0,0 @@ -import dotenv from "dotenv"; - -import { - applyCborEncoding, - DRep, - MeshTxBuilder, - resolveScriptHash, - serializeRewardAddress, -} from "@meshsdk/core"; -import { blake2b } from "@meshsdk/core-cst"; -import { OgmiosProvider } from "@meshsdk/provider"; - -dotenv.config(); -const apiUrl = process.env.OGMIOS_API_URL!; -const provider = new OgmiosProvider(apiUrl); - -const successTx = - "84a70081825820859d3b4fd3a4c012b43ee1bbbc99240aec1827c3b8a74b867d10a7f4759149bc00018382583900e4cfbbc317c718f78d137b6535d8940618cc3d2ac04f1f35acf78e53a1521c2cea3cc79762d575581e47ea60b8eaa03430716cfd6140c796821a0011b0dea1581c67dd133868f14107b25772f3c5abaa1e0549f4b400b5e0e3a1136152a149000643b0546573743101a300581d7067dd133868f14107b25772f3c5abaa1e0549f4b400b5e0e3a113615201821a001ad510a1581c67dd133868f14107b25772f3c5abaa1e0549f4b400b5e0e3a1136152a149000de140546573743101028201d8185882d8799fa4446e616d6545546573743145696d6167655835697066733a2f2f516d527a6963705265757477436b4d36616f74754b6a4572464355443231334470775071364279757a4d4a617561496d656469615479706549696d6167652f6a70674b6465736372697074696f6e5348656c6c6f20776f726c64202d20434950363802ff825839003659ed2a30abb32e97589f2a01c8500ce8fc4897b868ebe42fbf4a8aa1521c2cea3cc79762d575581e47ea60b8eaa03430716cfd6140c7961a00134249021a000c830909a1581c67dd133868f14107b25772f3c5abaa1e0549f4b400b5e0e3a1136152a249000643b054657374310149000de1405465737431010b58207ae25a8a9286347cc1e0444a0de75e07432a6ed243591ef673fd837bb5235a670d82825820859d3b4fd3a4c012b43ee1bbbc99240aec1827c3b8a74b867d10a7f4759149bc00825820859d3b4fd3a4c012b43ee1bbbc99240aec1827c3b8a74b867d10a7f4759149bc050e81581ce4cfbbc317c718f78d137b6535d8940618cc3d2ac04f1f35acf78e53a206815883588101000032323232323232322232533300632323232533300a3370e9000000899b8f375c601c601000e911046d6573680014a0601000260180026018002600800429309b2b19299980319b87480000044c8c94ccc02cc03400852616375c601600260080062c60080044600a6ea80048c00cdd5000ab9a5573aaae7955cfaba157450581840100d8799f446d657368ff821a006acfc01ab2d05e00f5f6"; -const failTx = - "84a700848258203483fb2ced4fe3a8365e6a759a39d649b6c059bd04e8db6525dceef1fe7b2f25182c8258207702194883a5e3313a20bc7f4c52c05bd3b0d77e195be58d3976b36572774292182c82582077b196828fa17091d0ec94850c98d03bda0e6cd9e4373cdcd60a6b192f73fee9182e825820aaf165950213d80294a5e8f88aa31f6358c5e7c661071620715f4c3ce187f51c07018ea300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb01821a0016e360a1581c5066154a102ee037390c5236f78db23239b49c5748d3d349f3ccf04ba144555344581a02faf080028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb01821a0016e360a1581c5066154a102ee037390c5236f78db23239b49c5748d3d349f3ccf04ba144555344581a02faf080028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a3005839101e9d8eac318f4e362ce80b987e63b6e41740d08bb084f014ae6633a95ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb01821a0053a7e2a1581c5066154a102ee037390c5236f78db23239b49c5748d3d349f3ccf04ba144555344581a004c4b40028201d81843d87980825839001e4eb194e3335a0dcc4f5c5d009318167c583bb3b0879d9f718cd9e0d63a93470bd4d8bb986c02ff8a6043796b91cc397ceb29058f5c9ac01a20c46d08021a0003e8780b58208847a14577b0531c2a8ae0f7c27f2c75cc076c0864b3a641f5302a654c03b4cc0d818258203fbdf2b0b4213855dd9b87f7c94a50cf352ba6edfdded85ecb22cf9ceb75f814070e82581c1e4eb194e3335a0dcc4f5c5d009318167c583bb3b0879d9f718cd9e0581c5ca51b304b1f79d92eada8c58c513e969458dcd27ce4f5bc47823ffa128682582077b196828fa17091d0ec94850c98d03bda0e6cd9e4373cdcd60a6b192f73fee9182e825820aaf165950213d80294a5e8f88aa31f6358c5e7c661071620715f4c3ce187f51c078258207702194883a5e3313a20bc7f4c52c05bd3b0d77e195be58d3976b36572774292182c825820efe6fbbdd6b993d96883b96c572bfcaa0a4a138c83bd948dec1751d1bfda09b3008258203483fb2ced4fe3a8365e6a759a39d649b6c059bd04e8db6525dceef1fe7b2f25182c825820afd210b69469ebbb2997fd9285c6ae50833d82bcd817c6126ec05126fcdb6cad01a10584840000d879808219a9391a00d6d123840001d879808219a9391a00d6d123840002d879808219a9391a00d6d123840003d879808219a9391a00d6d123f5f6"; - -const chainedSuccessTx = - "84a700818258208aecae827277c5da5f5d0e267f4ec0d15d2aeaa51d30b653fb46535e2483d7bb00018382583900e4cfbbc317c718f78d137b6535d8940618cc3d2ac04f1f35acf78e53a1521c2cea3cc79762d575581e47ea60b8eaa03430716cfd6140c796821a0011b0dea1581c67dd133868f14107b25772f3c5abaa1e0549f4b400b5e0e3a1136152a149000643b0546573743101a300581d7067dd133868f14107b25772f3c5abaa1e0549f4b400b5e0e3a113615201821a001ad510a1581c67dd133868f14107b25772f3c5abaa1e0549f4b400b5e0e3a1136152a149000de140546573743101028201d8185882d8799fa4446e616d6545546573743145696d6167655835697066733a2f2f516d527a6963705265757477436b4d36616f74754b6a4572464355443231334470775071364279757a4d4a617561496d656469615479706549696d6167652f6a70674b6465736372697074696f6e5348656c6c6f20776f726c64202d20434950363802ff825839003659ed2a30abb32e97589f2a01c8500ce8fc4897b868ebe42fbf4a8aa1521c2cea3cc79762d575581e47ea60b8eaa03430716cfd6140c7961a00134249021a000c830909a1581c67dd133868f14107b25772f3c5abaa1e0549f4b400b5e0e3a1136152a249000643b054657374310149000de1405465737431010b58207ae25a8a9286347cc1e0444a0de75e07432a6ed243591ef673fd837bb5235a670d82825820859d3b4fd3a4c012b43ee1bbbc99240aec1827c3b8a74b867d10a7f4759149bc00825820859d3b4fd3a4c012b43ee1bbbc99240aec1827c3b8a74b867d10a7f4759149bc050e81581ce4cfbbc317c718f78d137b6535d8940618cc3d2ac04f1f35acf78e53a206815883588101000032323232323232322232533300632323232533300a3370e9000000899b8f375c601c601000e911046d6573680014a0601000260180026018002600800429309b2b19299980319b87480000044c8c94ccc02cc03400852616375c601600260080062c60080044600a6ea80048c00cdd5000ab9a5573aaae7955cfaba157450581840100d8799f446d657368ff821a006acfc01ab2d05e00f5f6"; - -describe("Ogmios Evaluator", () => { - it("should successfully evaluate correct tx", async () => { - const res = await provider.evaluateTx(successTx); - expect(res.length).toBeGreaterThan(0); - }); - - it("should fail evaluating incorrect tx", async () => { - const res = await provider.evaluateTx(failTx).catch(() => "error"); - expect(res).toBe("error"); - }); - - it("should successfully evaluate tx with additionalTxs", async () => { - const res = await provider.evaluateTx(chainedSuccessTx, [ - { - input: { - txHash: - "8aecae827277c5da5f5d0e267f4ec0d15d2aeaa51d30b653fb46535e2483d7bb", - outputIndex: 0, - }, - output: { - address: - "addr_test1qrjvlw7rzlr33audzdak2dwcjsrp3npa9tqy78e44nmcu5ap2gwze63uc7tk94t4tq0y06nqhr42qdpsw9k06c2qc7tqzjkxjr", - amount: [{ unit: "lovelace", quantity: "5000000" }], - }, - }, - ]); - expect(res.length).toBeGreaterThan(0); - }); - - it("should fail with invalid additionalTxs CBOR", async () => { - const res = await provider - .evaluateTx(chainedSuccessTx, []) - .catch(() => "error"); - expect(res).toBe("error"); - }); - - it("should succeed with with registering certificates", async () => { - const txHash = (tx: string) => { - return blake2b(32).update(Buffer.from(tx, "utf-8")).digest("hex"); - }; - - const alwaysSucceedCbor = applyCborEncoding( - "58340101002332259800a518a4d153300249011856616c696461746f722072657475726e65642066616c736500136564004ae715cd01", - ); - - const alwaysSucceedHash = resolveScriptHash(alwaysSucceedCbor, "V3"); - - const txBuilder = new MeshTxBuilder({}); - const drep: DRep = { - alwaysAbstain: null, - }; - - const txHex = await txBuilder - .voteDelegationCertificate( - drep, - serializeRewardAddress(alwaysSucceedHash, true), - ) - .certificateScript(alwaysSucceedCbor, "V3") - .certificateRedeemerValue("") - .txIn( - txHash("tx1"), - 0, - [ - { - unit: "lovelace", - quantity: "100000000", - }, - ], - "addr_test1qpvx0sacufuypa2k4sngk7q40zc5c4npl337uusdh64kv0uafhxhu32dys6pvn6wlw8dav6cmp4pmtv7cc3yel9uu0nq93swx9", - 0, - ) - .txInCollateral( - txHash("tx1"), - 0, - [ - { - unit: "lovelace", - quantity: "100000000", - }, - ], - "addr_test1qpvx0sacufuypa2k4sngk7q40zc5c4npl337uusdh64kv0uafhxhu32dys6pvn6wlw8dav6cmp4pmtv7cc3yel9uu0nq93swx9", - ) - .changeAddress( - "addr_test1qpvx0sacufuypa2k4sngk7q40zc5c4npl337uusdh64kv0uafhxhu32dys6pvn6wlw8dav6cmp4pmtv7cc3yel9uu0nq93swx9", - ) - .complete(); - - const res = await provider.evaluateTx(txHex, [ - { - input: { - txHash: txHash("tx1"), - outputIndex: 0, - }, - output: { - address: - "addr_test1qpvx0sacufuypa2k4sngk7q40zc5c4npl337uusdh64kv0uafhxhu32dys6pvn6wlw8dav6cmp4pmtv7cc3yel9uu0nq93swx9", - amount: [ - { - unit: "lovelace", - quantity: "100000000", - }, - ], - }, - }, - ]); - expect(res).toEqual([ - { tag: "CERT", index: 0, budget: { mem: 2001, steps: 380149 } }, - ]); - }); -}); diff --git a/packages/mesh-provider/test/yaci/evaluator.test.ts b/packages/mesh-provider/test/yaci/evaluator.test.ts deleted file mode 100644 index b09f47a9f..000000000 --- a/packages/mesh-provider/test/yaci/evaluator.test.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { YaciProvider } from "@meshsdk/provider"; - -const provider = new YaciProvider("https://yaci-node.meshjs.dev/api/v1/"); - -const successTx = - "84a8008382582035755c9ef371ae7526ceec952f1f1f493cf78db58c56194476f073f1f23de86f0082582035755c9ef371ae7526ceec952f1f1f493cf78db58c56194476f073f1f23de86f05825820388a21cbf10f2561cbd1ad0bdaff4ae04d8de395f1807ade751b805af5255b7000018482581d70181d8e3366e0faad724a550d6a47091c360d8672a825b1e109de50971a003d0900a300581d706a4e7ffda7984c9b2584f48b36a1d32c2a08f63b4fccdbf30ec165ed011a007a1200028201d81843d87980a300581d70c79bf33029834051af43402e0470e97e648aaae22d2c5a21b22c716a011a007a1200028201d81843d879808258390004845038ee499ee8bc0afe56f688f27b2dd76f230d3698a9afcc1b66e0464447c1f51adaefe1ebfb0dd485a349a70479ced1d198cbdf7fe71a38e3745f021a0021c93305a2581df0de95e908f59cea48b9d41753fb2cfebb9c938bfedd1a33473959553100581df051b03b91deb93f215ac1c3d7f9f27f494b35e6ba58f0de388ab0ece2000b582093a2b3a7e7e8c70880356c718db93cb59e90ef8139769ce280c075ab4d8ea29d0d818258204752fc2b7feb3ab73757672dea72c7e08e89f17011532ddc20cccebe14db5d50000e82581c04845038ee499ee8bc0afe56f688f27b2dd76f230d3698a9afcc1b66581c5867c3b8e27840f556ac268b781578b14c5661fc63ee720dbeab663f1281825820c73928d5935dc37b624c82ed531391cabc6daf822870b36d56f26e51c60d52b900a3008282582089f4b576f05f5aad99bce0bdd51afe48529772f7561bb2ac9d84a4afbda1ecd658404d403d0dc49cc84eea5b4b5ed601bd1b55d0028b0f6e392ddb532f92976403c15f4f04f542c2d00b9206017bc03c950925aec591645f2b82c43613bf0612bc0f825820c32dfdb461dd016e8fdd9b6d424a77439eab8f8c644a804b013b6cefa2454f955840a46d03cb794f05b50a9bcaa33d5dd057ddde784ed496e1a4f475f009cfb9135d4512bc960ea0484f0eaf3b8727ce65d80d19af1b619e2b35c8dae6176b48e80d0584840000d87980821993041a00c82190840002d87980821a006acfc01ab2d05e0084030040821a006acfc01ab2d05e0084030140821a006acfc01ab2d05e00078459032759032401010033333323232323232322322322322322322533300c323232323253323301230013013375400426464646464a66602e66e1d20000011533301a301937540102a0042c2a66602e600c0022a66603460326ea8020540085854ccc05ccdc3a40080022a66603460326ea8020540085854ccc05ccdc3a400c0022a66603460326ea8020540085858c05cdd5003899191929919980c99b87480000104cc008dd59801980d9baa00c30013301d375202a97ae01533301930080041330023756600660366ea8030c004cc074dd4809a5eb8054ccc064cdc3a40080082660046eacc00cc06cdd500618009980e9ba90114bd7009919299980d99198008009bac3021302230223022302200322533302000114a0264a66603c66e3cdd7181180100e0a511330030030013023001100114a064a66603c002294054ccc078c0840044c8c8c94ccc078cdc79bae30230030141533301e3371e002038266e1c009200114a02940dd7181118118011bad302130223022001375860400022940c8cc004004dd5981000111299980f8008a5eb804c8ccc888c8cc00400400c894ccc094004400c4c8cc09cdd3998139ba90063302730240013302730250014bd7019801801981480118138009bae301e0013756603e0026600600660460046042002603e603e603e603e60366ea8030dd2a400444646600200200644a66603c00229404c94ccc070cdd7802180e98108010a5113300300300130210012301c301d301d301d301d301d301d0013016375400c60326034004603000260286ea8008dc3a40042c602a602c004602800260280046024002601c6ea800452613656375c0026eb8004dd70009bae001375c002ae6955ceaab9e5573eae815d0aba24c011e581c04845038ee499ee8bc0afe56f688f27b2dd76f230d3698a9afcc1b66004c011e581cde95e908f59cea48b9d41753fb2cfebb9c938bfedd1a334739595531004c011e581cde95e908f59cea48b9d41753fb2cfebb9c938bfedd1a334739595531004c011e581cdbfdd77e5eb1cc06e8f9f5e7ddcbeeb022a845005cb62bb4b8d9dccf004c011e581ce3c95136dd345eaf45f9256459a3ec8d8169b4e2d855d127b97eb9d2000159032759032401010033333323232323232322322322322322322533300c323232323253323301230013013375400426464646464a66602e66e1d20000011533301a301937540102a0042c2a66602e600c0022a66603460326ea8020540085854ccc05ccdc3a40080022a66603460326ea8020540085854ccc05ccdc3a400c0022a66603460326ea8020540085858c05cdd5003899191929919980c99b87480000104cc008dd59801980d9baa00c30013301d375202a97ae01533301930080041330023756600660366ea8030c004cc074dd4809a5eb8054ccc064cdc3a40080082660046eacc00cc06cdd500618009980e9ba90114bd7009919299980d99198008009bac3021302230223022302200322533302000114a0264a66603c66e3cdd7181180100e0a511330030030013023001100114a064a66603c002294054ccc078c0840044c8c8c94ccc078cdc79bae30230030141533301e3371e002038266e1c009200114a02940dd7181118118011bad302130223022001375860400022940c8cc004004dd5981000111299980f8008a5eb804c8ccc888c8cc00400400c894ccc094004400c4c8cc09cdd3998139ba90063302730240013302730250014bd7019801801981480118138009bae301e0013756603e0026600600660460046042002603e603e603e603e60366ea8030dd2a400444646600200200644a66603c00229404c94ccc070cdd7802180e98108010a5113300300300130210012301c301d301d301d301d301d301d0013016375400c60326034004603000260286ea8008dc3a40042c602a602c004602800260280046024002601c6ea800452613656375c0026eb8004dd70009bae001375c002ae6955ceaab9e5573eae815d0aba24c011e581c5867c3b8e27840f556ac268b781578b14c5661fc63ee720dbeab663f004c011e581c51b03b91deb93f215ac1c3d7f9f27f494b35e6ba58f0de388ab0ece2004c011e581c51b03b91deb93f215ac1c3d7f9f27f494b35e6ba58f0de388ab0ece2004c011e581cdbfdd77e5eb1cc06e8f9f5e7ddcbeeb022a845005cb62bb4b8d9dccf004c011e581ce3c95136dd345eaf45f9256459a3ec8d8169b4e2d855d127b97eb9d200015903db5903d8010100333232323232323223223225333006323232323232323232325333010300330113754002264646464646464646464a66603a6040004264a666036601c60386ea80204c8c8c8c94ccc088c0940084cc01400c4c8c94ccc084c0500044c8c94ccc098c0a40084c8c94ccc094c0600044c8c94ccc0a8c0b40084cc0340045401058c0ac004c09cdd50018a999812980b8008991919191919299981718188010a8040b1bad302f001302f002375a605a002605a0046eb4c0ac004c09cdd50018b18129baa00215004163027001302337540062a66604260260022a66604860466ea800c540085858c084dd500109919800800998121ba901c33024375201697ae022533302400114a2264a66604464646600200203044a66605000229404c94ccc098cdc79bae302b00200414a226600600600260560026eb8c09c0084cc00c00c00452818138008b181180098118011810800980e9baa008162232533301d301000113232533302230250021500416375c6046002603e6ea800c54ccc074c03c0044c8c94ccc088c0940085401058dd71811800980f9baa00316301d37540042c6eb8c078004c078008dd7180e000980e0011bae301a001301a00230180013018002375c602c00260246ea800458c8c94ccc044c010c048dd5000899299980919b8748010c04cdd50008980b980a1baa0011630163017301730133754600460266ea8c058c04cdd50008b19198008009bac301600622533301500114c0103d87a80001323253323301530073253330163008301737540022900009bad301b3018375400264a66602c6010602e6ea80045300103d87a8000132330010013756603860326ea8008894ccc06c004530103d87a8000132323232533301c33722911000021533301c3371e9101000021300833020375000297ae014c0103d87a8000133006006003375a603a0066eb8c06c008c07c008c074004c8cc004004dd59803980c1baa30073018375400844a666034002298103d87a8000132323232533301b337220320042a66603666e3c0640084c01ccc07cdd3000a5eb80530103d87a8000133006006003375660380066eb8c068008c078008c0700044c004cc06400d2f5c06e95200013300400400130190023017001230153016001370e90011b8748000dd618089809180918091809180918091809000980898069baa3010300d375400c601e6020004601c002601c004601800260106ea800452613656375c0026eb80055cd2ab9d5573caae7d5d02ba1574498011e581c9f5bf63f233e4c289338487c93b53f28c1d18743e40cd9a3af6b18a8004c011e581c04845038ee499ee8bc0afe56f688f27b2dd76f230d3698a9afcc1b6600015903db5903d8010100333232323232323223223225333006323232323232323232325333010300330113754002264646464646464646464a66603a6040004264a666036601c60386ea80204c8c8c8c94ccc088c0940084cc01400c4c8c94ccc084c0500044c8c94ccc098c0a40084c8c94ccc094c0600044c8c94ccc0a8c0b40084cc0340045401058c0ac004c09cdd50018a999812980b8008991919191919299981718188010a8040b1bad302f001302f002375a605a002605a0046eb4c0ac004c09cdd50018b18129baa00215004163027001302337540062a66604260260022a66604860466ea800c540085858c084dd500109919800800998121ba901c33024375201697ae022533302400114a2264a66604464646600200203044a66605000229404c94ccc098cdc79bae302b00200414a226600600600260560026eb8c09c0084cc00c00c00452818138008b181180098118011810800980e9baa008162232533301d301000113232533302230250021500416375c6046002603e6ea800c54ccc074c03c0044c8c94ccc088c0940085401058dd71811800980f9baa00316301d37540042c6eb8c078004c078008dd7180e000980e0011bae301a001301a00230180013018002375c602c00260246ea800458c8c94ccc044c010c048dd5000899299980919b8748010c04cdd50008980b980a1baa0011630163017301730133754600460266ea8c058c04cdd50008b19198008009bac301600622533301500114c0103d87a80001323253323301530073253330163008301737540022900009bad301b3018375400264a66602c6010602e6ea80045300103d87a8000132330010013756603860326ea8008894ccc06c004530103d87a8000132323232533301c33722911000021533301c3371e9101000021300833020375000297ae014c0103d87a8000133006006003375a603a0066eb8c06c008c07c008c074004c8cc004004dd59803980c1baa30073018375400844a666034002298103d87a8000132323232533301b337220320042a66603666e3c0640084c01ccc07cdd3000a5eb80530103d87a8000133006006003375660380066eb8c068008c078008c0700044c004cc06400d2f5c06e95200013300400400130190023017001230153016001370e90011b8748000dd618089809180918091809180918091809000980898069baa3010300d375400c601e6020004601c002601c004601800260106ea800452613656375c0026eb80055cd2ab9d5573caae7d5d02ba1574498011e581c9f5bf63f233e4c289338487c93b53f28c1d18743e40cd9a3af6b18a8004c011e581c5867c3b8e27840f556ac268b781578b14c5661fc63ee720dbeab663f0001f5f6"; -// const failTx = -// "84a700848258203483fb2ced4fe3a8365e6a759a39d649b6c059bd04e8db6525dceef1fe7b2f25182c8258207702194883a5e3313a20bc7f4c52c05bd3b0d77e195be58d3976b36572774292182c82582077b196828fa17091d0ec94850c98d03bda0e6cd9e4373cdcd60a6b192f73fee9182e825820aaf165950213d80294a5e8f88aa31f6358c5e7c661071620715f4c3ce187f51c07018ea300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb01821a0016e360a1581c5066154a102ee037390c5236f78db23239b49c5748d3d349f3ccf04ba144555344581a02faf080028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb01821a0016e360a1581c5066154a102ee037390c5236f78db23239b49c5748d3d349f3ccf04ba144555344581a02faf080028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a300583910cb55816770a83383463164b8b28609cefb26e73b2a7d361c3194b5335ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb011a004c4b40028201d81843d87980a3005839101e9d8eac318f4e362ce80b987e63b6e41740d08bb084f014ae6633a95ca749261aa3b17aa2cd4b026bc6566c4b14421d6083edce64ffe5cb01821a0053a7e2a1581c5066154a102ee037390c5236f78db23239b49c5748d3d349f3ccf04ba144555344581a004c4b40028201d81843d87980825839001e4eb194e3335a0dcc4f5c5d009318167c583bb3b0879d9f718cd9e0d63a93470bd4d8bb986c02ff8a6043796b91cc397ceb29058f5c9ac01a20c46d08021a0003e8780b58208847a14577b0531c2a8ae0f7c27f2c75cc076c0864b3a641f5302a654c03b4cc0d818258203fbdf2b0b4213855dd9b87f7c94a50cf352ba6edfdded85ecb22cf9ceb75f814070e82581c1e4eb194e3335a0dcc4f5c5d009318167c583bb3b0879d9f718cd9e0581c5ca51b304b1f79d92eada8c58c513e969458dcd27ce4f5bc47823ffa128682582077b196828fa17091d0ec94850c98d03bda0e6cd9e4373cdcd60a6b192f73fee9182e825820aaf165950213d80294a5e8f88aa31f6358c5e7c661071620715f4c3ce187f51c078258207702194883a5e3313a20bc7f4c52c05bd3b0d77e195be58d3976b36572774292182c825820efe6fbbdd6b993d96883b96c572bfcaa0a4a138c83bd948dec1751d1bfda09b3008258203483fb2ced4fe3a8365e6a759a39d649b6c059bd04e8db6525dceef1fe7b2f25182c825820afd210b69469ebbb2997fd9285c6ae50833d82bcd817c6126ec05126fcdb6cad01a10584840000d879808219a9391a00d6d123840001d879808219a9391a00d6d123840002d879808219a9391a00d6d123840003d879808219a9391a00d6d123f5f6"; - -describe("Yavi Evaluator", () => { - it("should successfully evaluate correct tx", async () => { - // const res = await provider.evaluateTx(successTx); - // console.log("res", res); - // expect(res.length).toBeGreaterThan(0); - expect(1).toBe(1); - }); - // it("should fail evaluating incorrect tx", async () => { - // const res = await provider.evaluateTx(failTx).catch(() => "error"); - // expect(res).toBe("error"); - // }); -}); diff --git a/packages/mesh-provider/tsconfig.json b/packages/mesh-provider/tsconfig.json deleted file mode 100644 index 52cb195b4..000000000 --- a/packages/mesh-provider/tsconfig.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": "@meshsdk/configs/typescript/base.json", - "include": ["src/**/*"], - "exclude": ["dist", "node_modules"] -} diff --git a/packages/mesh-react/.eslintrc.js b/packages/mesh-react/.eslintrc.js deleted file mode 100644 index 8dd386782..000000000 --- a/packages/mesh-react/.eslintrc.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - extends: ["@meshsdk/configs/eslint/react.js"], -}; diff --git a/packages/mesh-react/README.md b/packages/mesh-react/README.md deleted file mode 100644 index 2ee41d5e3..000000000 --- a/packages/mesh-react/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# mesh-react - -React component library - [meshjs.dev/react](https://meshjs.dev/react) - -[meshjs.dev](https://meshjs.dev/) diff --git a/packages/mesh-react/jest.config.ts b/packages/mesh-react/jest.config.ts deleted file mode 100644 index 9229656e9..000000000 --- a/packages/mesh-react/jest.config.ts +++ /dev/null @@ -1,20 +0,0 @@ -import type { Config } from "jest"; - -const jestConfig: Config = { - clearMocks: true, - maxWorkers: 1, - testEnvironment: "node", - testMatch: ["**/packages/**/*.test.ts"], - setupFiles: ["dotenv/config"], - preset: "ts-jest", - moduleNameMapper: { - "^(\\.{1,2}/.*)\\.js$": "$1", - }, - transform: { - "^.+\\.[jt]s?$": "ts-jest", - }, - transformIgnorePatterns: ["/node_modules/(?!@meshsdk/.*)"], - passWithNoTests: true, -}; - -export default jestConfig; diff --git a/packages/mesh-react/package.json b/packages/mesh-react/package.json deleted file mode 100644 index b709750dd..000000000 --- a/packages/mesh-react/package.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "name": "@meshsdk/react", - "version": "1.9.0-beta.98", - "description": "React component library - https://meshjs.dev/react", - "main": "./dist/index.cjs", - "browser": "./dist/index.js", - "module": "./dist/index.js", - "types": "./dist/index.d.ts", - "type": "module", - "exports": { - "./styles.css": "./dist/index.css", - ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.js", - "require": "./dist/index.cjs" - } - }, - "files": [ - "dist/**" - ], - "scripts": { - "build:mesh_old": "tsup src/index.ts --format esm,cjs --cjsInterop --dts && tailwindcss -i ./src/styles.css -o ./dist/index.css", - "build:mesh": "tsup && tailwindcss -i ./src/styles.css -o ./dist/index.css", - "dev": "concurrently \"tsup src/index.ts --format esm,cjs --watch --dts\" \"tailwindcss -i ./src/styles.css -o ./dist/index.css --watch\"", - "clean": "rm -rf .turbo && rm -rf dist && rm -rf node_modules", - "format": "prettier --check . --ignore-path ../../.gitignore", - "lint": "eslint", - "pack": "npm pack --pack-destination=./dist", - "type-check": "tsc --noEmit" - }, - "dependencies": { - "@meshsdk/common": "1.9.0-beta.98", - "@meshsdk/transaction": "1.9.0-beta.98", - "@meshsdk/wallet": "1.9.0-beta.98", - "@utxos/sdk": "0.1.0", - "@radix-ui/react-dialog": "^1.1.2", - "@radix-ui/react-dropdown-menu": "^2.1.2", - "@radix-ui/react-icons": "^1.3.2", - "@radix-ui/react-label": "^2.1.1", - "@radix-ui/react-tooltip": "^1.1.4", - "class-variance-authority": "^0.7.1", - "tailwind-merge": "^2.6.0", - "tailwindcss-animate": "^1.0.7" - }, - "devDependencies": { - "@meshsdk/configs": "*", - "@types/react": "^18.2.61", - "autoprefixer": "^10.4.18", - "concurrently": "^8.0.1", - "postcss": "^8.4.35", - "tailwindcss": "^3.4.1", - "typescript": "latest", - "tsup": "^8.0.2", - "libsodium-wrappers-sumo": "0.7.15" - }, - "peerDependencies": { - "react": ">=16.0.0 <20.0.0 || >=16.0.0-rc <20.0.0-rc || >=19.0.0-rc", - "react-dom": ">=16.0.0 <20.0.0 || >=16.0.0-rc <20.0.0-rc || >=19.0.0-rc" - }, - "overrides": { - "ip": "npm:@webpod/ip@latest" - }, - "prettier": "@meshsdk/configs/prettier", - "publishConfig": { - "access": "public" - }, - "license": "Apache-2.0", - "keywords": [ - "cardano", - "ada", - "web3", - "blockchain", - "sdk" - ] -} diff --git a/packages/mesh-react/postcss.config.js b/packages/mesh-react/postcss.config.js deleted file mode 100644 index 07aa434b2..000000000 --- a/packages/mesh-react/postcss.config.js +++ /dev/null @@ -1,9 +0,0 @@ -// If you want to use other PostCSS plugins, see the following: -// https://tailwindcss.com/docs/using-with-preprocessors - -module.exports = { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -}; diff --git a/packages/mesh-react/src/cardano-wallet-dropdown/checkmark.tsx b/packages/mesh-react/src/cardano-wallet-dropdown/checkmark.tsx deleted file mode 100644 index 1f3e3e13f..000000000 --- a/packages/mesh-react/src/cardano-wallet-dropdown/checkmark.tsx +++ /dev/null @@ -1,10 +0,0 @@ -export const CheckMark = () => ( - - - -); diff --git a/packages/mesh-react/src/cardano-wallet-dropdown/chevron-down.tsx b/packages/mesh-react/src/cardano-wallet-dropdown/chevron-down.tsx deleted file mode 100644 index ccc892e01..000000000 --- a/packages/mesh-react/src/cardano-wallet-dropdown/chevron-down.tsx +++ /dev/null @@ -1,17 +0,0 @@ -export const ChevronDown = () => ( - -); diff --git a/packages/mesh-react/src/cardano-wallet-dropdown/index.tsx b/packages/mesh-react/src/cardano-wallet-dropdown/index.tsx deleted file mode 100644 index 127bc46ea..000000000 --- a/packages/mesh-react/src/cardano-wallet-dropdown/index.tsx +++ /dev/null @@ -1,103 +0,0 @@ -import { useEffect, useState } from "react"; - -import ButtonDropdown from "../common/button-dropdown"; -import { useWallet, useWalletList } from "../hooks"; -import { MenuItem } from "./menu-item"; -import { WalletBalance } from "./wallet-balance"; - -interface ButtonProps { - label?: string; - onConnected?: () => void; - isDark?: boolean; - persist?: boolean; -} - -export const CardanoWallet = ({ - label = "Connect Wallet", - onConnected = undefined, - isDark = false, - persist = false, -}: ButtonProps) => { - const [isDarkMode, setIsDarkMode] = useState(false); - const [hideMenuList, setHideMenuList] = useState(true); - - const { connect, connecting, connected, disconnect, name } = useWallet(); - const wallets = useWalletList(); - - useEffect(() => { - if (connected && onConnected) { - onConnected(); - } - }, [connected, onConnected]); - - useEffect(() => { - setIsDarkMode(isDark); - }, [isDark]); - - return ( -
setHideMenuList(false)} - onMouseLeave={() => setHideMenuList(true)} - style={{ width: "min-content", zIndex: 50 }} - > - - wallet.id === name)} - /> - -
- {!connected && wallets.length > 0 ? ( - <> - {wallets.map((wallet, index) => ( - { - connect(wallet.id, persist); - setHideMenuList(!hideMenuList); - }} - active={name === wallet.id} - /> - ))} - - {/* { - connectLocalWallet(); - setHideMenuList(!hideMenuList); - }} - active={false} - /> */} - - ) : wallets.length === 0 ? ( - No Wallet Found - ) : ( - <> - - - )} -
-
- ); -}; diff --git a/packages/mesh-react/src/cardano-wallet-dropdown/menu-item.tsx b/packages/mesh-react/src/cardano-wallet-dropdown/menu-item.tsx deleted file mode 100644 index ed47d84ad..000000000 --- a/packages/mesh-react/src/cardano-wallet-dropdown/menu-item.tsx +++ /dev/null @@ -1,34 +0,0 @@ -export function MenuItem({ - icon, - label, - action, - active, -}: { - icon?: string; - label: string; - action: () => void; - active: boolean; -}) { - return ( -
- {icon && ( - {`${label} - )} - - {label - .split(" ") - .map((word: string) => { - return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase(); - }) - .join(" ")} - -
- ); -} diff --git a/packages/mesh-react/src/cardano-wallet-dropdown/wallet-balance.tsx b/packages/mesh-react/src/cardano-wallet-dropdown/wallet-balance.tsx deleted file mode 100644 index fb2197085..000000000 --- a/packages/mesh-react/src/cardano-wallet-dropdown/wallet-balance.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import { Wallet } from "@meshsdk/common"; - -import { useLovelace } from "../hooks"; -import { ChevronDown } from "./chevron-down"; - -export const WalletBalance = ({ - connected, - connecting, - label, - wallet, -}: { - connected: boolean; - connecting: boolean; - label: string; - wallet: Wallet | undefined; -}) => { - const lovelace = useLovelace(); - - return connected && lovelace && wallet?.icon ? ( - <> - {`${wallet.name} - ₳ {parseInt((parseInt(lovelace, 10) / 1_000_000).toString(), 10)}. - - {lovelace.substring(lovelace.length - 6)} - - - ) : connected && wallet?.icon ? ( - <> - {`${wallet.name} - - ) : connecting ? ( - <>Connecting... - ) : ( - <> - {label} - - ); -}; diff --git a/packages/mesh-react/src/cardano-wallet/connected-button.tsx b/packages/mesh-react/src/cardano-wallet/connected-button.tsx deleted file mode 100644 index 7c0b932cc..000000000 --- a/packages/mesh-react/src/cardano-wallet/connected-button.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import { Button } from "../common/button"; -import { - DropdownMenu, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuLabel, - DropdownMenuSeparator, - DropdownMenuTrigger, -} from "../common/dropdown-menu"; -import { useWallet } from "../hooks"; - -export default function ConnectedButton() { - const { name, disconnect, address } = useWallet(); - - return ( - - - - - - Wallet - { - navigator.clipboard.writeText(address); - }} - > - Copy Address - - {name == "utxos" && ( - { - window.open("https://utxos.dev/wallet", "_blank"); - }} - > - Open Web3 Wallet - - )} - - { - disconnect(); - }} - > - Disconnect - - - - ); -} diff --git a/packages/mesh-react/src/cardano-wallet/data.ts b/packages/mesh-react/src/cardano-wallet/data.ts deleted file mode 100644 index 9e725d091..000000000 --- a/packages/mesh-react/src/cardano-wallet/data.ts +++ /dev/null @@ -1,18 +0,0 @@ -export const screens = { - main: { - title: "Connect Wallet", - subtitle: undefined as string | undefined, - }, - burner: { - title: "Burner Wallet", - subtitle: - "Instantly create a new burner wallet. No seed phrase required, keys are generated on your device.", - }, - webauthn: { - title: "Passkey", - subtitle: - "Derive self-custody wallet on Chrome, Safari, or Firefox browsers on Android, iOS, macOS, and Windows devices, or using password managers.", - }, -} as const; - -export type ScreenKey = keyof typeof screens; diff --git a/packages/mesh-react/src/cardano-wallet/index.tsx b/packages/mesh-react/src/cardano-wallet/index.tsx deleted file mode 100644 index 10da7910e..000000000 --- a/packages/mesh-react/src/cardano-wallet/index.tsx +++ /dev/null @@ -1,175 +0,0 @@ -import { useEffect, useState } from "react"; - -import { IFetcher, ISubmitter } from "@meshsdk/common"; -import { EnableWeb3WalletOptions } from "@utxos/sdk"; - -import { Button } from "../common/button"; -import { - Dialog, - DialogContent, - DialogDescription, - DialogFooter, - DialogHeader, - DialogTitle, - DialogTrigger, -} from "../common/dialog"; -import IconChevronRight from "../common/icons/icon-chevron-right"; -import { useWallet } from "../hooks"; -import ConnectedButton from "./connected-button"; -import { screens, ScreenKey } from "./data"; -import ScreenBurner from "./screen-burner"; -import ScreenMain from "./screen-main"; -import ScreenWebauthn from "./screen-webauthn"; - -interface ButtonProps { - label?: string; - onConnected?: () => void; - isDark?: boolean; - persist?: boolean; - injectFn?: () => Promise; - burnerWallet?: { - networkId: 0 | 1; - provider: IFetcher & ISubmitter; - }; - webauthn?: { - networkId: 0 | 1; - provider: IFetcher & ISubmitter; - url: string; - }; - showDownload?: boolean; - web3Services?: EnableWeb3WalletOptions; -} - -export const CardanoWallet = ({ - label = "Connect Wallet", - onConnected = undefined, - isDark = false, - persist = false, - injectFn = undefined, - burnerWallet = undefined, - webauthn = undefined, - showDownload = true, - web3Services = undefined, -}: ButtonProps) => { - const [open, setOpen] = useState(false); - const [screen, setScreen] = useState("main"); - const { wallet, connected, setPersist, setWeb3Services } = useWallet(); - - useEffect(() => { - setPersist(persist); - if (web3Services) setWeb3Services(web3Services); - }, [persist, web3Services, setPersist, setWeb3Services]); - - useEffect(() => { - if (connected) { - if (onConnected) onConnected(); - } - }, [connected, wallet]); - - return ( - -
- {!connected ? ( - - - - ) : ( - - )} -
- - event.preventDefault()} - > -
- - {screen == "main" && ( - - )} - {screen == "burner" && burnerWallet && ( - - )} - {screen == "webauthn" && webauthn && ( - - )} -
- -
- ); -}; - -function Header({ - screen, - setScreen, -}: { - screen: ScreenKey; - setScreen: (screen: ScreenKey) => void; -}) { - const screenData = screens[screen]; - return ( - - - {screen !== "main" ? ( - - ) : ( - - )} - {screenData.title} - - - - {screenData.subtitle && screenData.subtitle} - - - ); -} - -function Footer() { - return ( - - - Powered by - - - - Mesh SDK - - - ); -} diff --git a/packages/mesh-react/src/cardano-wallet/screen-burner.tsx b/packages/mesh-react/src/cardano-wallet/screen-burner.tsx deleted file mode 100644 index cfb910e9e..000000000 --- a/packages/mesh-react/src/cardano-wallet/screen-burner.tsx +++ /dev/null @@ -1,100 +0,0 @@ -import { useEffect, useState } from "react"; - -import { IFetcher, ISubmitter } from "@meshsdk/common"; -import { MeshWallet } from "@meshsdk/wallet"; - -import { Button } from "../common/button"; -import { useWallet } from "../hooks"; -import { screens } from "./data"; - -const localstoragekey = "mesh-burnerwallet"; - -export default function ScreenBurner({ - networkId, - provider, - setOpen, -}: { - networkId: 0 | 1; - provider: IFetcher & ISubmitter; - setOpen: (open: boolean) => void; -}) { - const [loading, setLoading] = useState(false); - const [hasKeyInStorage, setHasKeyInStorage] = useState(false); - const { setWallet } = useWallet(); - - function getKeyFromStorage() { - return localStorage.getItem(localstoragekey); - } - - useEffect(() => { - const key = getKeyFromStorage(); - if (key) { - setHasKeyInStorage(true); - } - }, []); - - function createWallet(key: string) { - setTimeout(() => { - const wallet = new MeshWallet({ - networkId: networkId, - fetcher: provider, - submitter: provider, - key: { - type: "root", - bech32: key as string, - }, - }); - - if (!hasKeyInStorage) { - localStorage.setItem(localstoragekey, key); - } - - setWallet(wallet, screens.burner.title); - setLoading(false); - setOpen(false); - }, 500); - } - - function handleRestoreWallet() { - setLoading(true); - const key = getKeyFromStorage(); - createWallet(key as string); - } - - function handleCreateWallet() { - setLoading(true); - const key = MeshWallet.brew(true) as string; - createWallet(key as string); - } - - return ( -
- {loading ? ( - <>Setting up wallet... - ) : ( - <> - {hasKeyInStorage && ( - - )} - - - )} -
- ); -} diff --git a/packages/mesh-react/src/cardano-wallet/screen-main.tsx b/packages/mesh-react/src/cardano-wallet/screen-main.tsx deleted file mode 100644 index 80bcebe4c..000000000 --- a/packages/mesh-react/src/cardano-wallet/screen-main.tsx +++ /dev/null @@ -1,91 +0,0 @@ -import { EnableWeb3WalletOptions } from "@utxos/sdk"; - -import IconBookDashed from "../common/icons/icon-book-dashed"; -import IconDownload from "../common/icons/icon-download"; -import IconFingerprint from "../common/icons/icon-fingerprint"; -import { TooltipProvider } from "../common/tooltip"; -import { useWallet, useWalletList } from "../hooks"; -import { screens, ScreenKey } from "./data"; -import WalletIcon from "./wallet-icon"; -import Web3Services from "./web3-services"; - -export default function ScreenMain({ - injectFn, - setOpen, - setScreen, - persist, - burnerWallet, - webauthn, - showDownload, - web3Services, -}: { - injectFn?: () => Promise; - setOpen: (open: boolean) => void; - setScreen: (screen: ScreenKey) => void; - persist: boolean; - burnerWallet: boolean; - webauthn: boolean; - showDownload: boolean; - web3Services?: EnableWeb3WalletOptions; -}) { - const wallets = useWalletList({ injectFn }); - const { connect } = useWallet(); - - return ( - -
- {wallets.map((wallet, index) => ( - { - connect(wallet.id, persist); - setOpen(false); - }} - /> - ))} - - {web3Services && ( - - )} - - {webauthn && ( - { - setScreen("webauthn"); - }} - /> - )} - {burnerWallet && ( - { - setScreen("burner"); - }} - /> - )} - - {showDownload && ( - { - window.open( - "https://developers.cardano.org/showcase/?tags=wallet", - "_blank", - ); - }} - /> - )} -
-
- ); -} diff --git a/packages/mesh-react/src/cardano-wallet/screen-webauthn.tsx b/packages/mesh-react/src/cardano-wallet/screen-webauthn.tsx deleted file mode 100644 index 15320c6ad..000000000 --- a/packages/mesh-react/src/cardano-wallet/screen-webauthn.tsx +++ /dev/null @@ -1,100 +0,0 @@ -import { useState } from "react"; - -import { IFetcher, ISubmitter } from "@meshsdk/common"; -import { connect, MeshWallet } from "@meshsdk/wallet"; - -import { Button } from "../common/button"; -import { Input } from "../common/input"; -import { Label } from "../common/label"; -import { useWallet } from "../hooks"; -import { screens } from "./data"; - -export default function ScreenWebauthn({ - url, - networkId, - provider, - setOpen, -}: { - url: string; - networkId: 0 | 1; - provider: IFetcher & ISubmitter; - setOpen: (open: boolean) => void; -}) { - const [loading, setLoading] = useState(false); - const [userName, setUserName] = useState(""); - const [password, setPassword] = useState(""); - const { setWallet } = useWallet(); - - function createWallet(root: string) { - setTimeout(() => { - const wallet = new MeshWallet({ - networkId: networkId, - fetcher: provider, - submitter: provider, - key: { - type: "root", - bech32: root, - }, - }); - setWallet(wallet, screens.webauthn.title); - setLoading(false); - setOpen(false); - }, 500); - } - - async function handleConnect() { - setLoading(true); - const res = await connect({ username: userName, password, serverUrl: url }); - if (res.success && res.wallet) { - createWallet(res.wallet.bech32PrivateKey); - } - } - - return ( -
- {loading ? ( - <>Connecting wallet... - ) : ( - <> -
-
- - setUserName(e.target.value)} - /> -

- Unique to the application you are connecting. -

-
-
-
- -
- setPassword(e.target.value)} - /> -

- Additional security to derive your wallet. -

-
- -
- - )} -
- ); -} diff --git a/packages/mesh-react/src/cardano-wallet/wallet-icon.tsx b/packages/mesh-react/src/cardano-wallet/wallet-icon.tsx deleted file mode 100644 index 42a5e47fa..000000000 --- a/packages/mesh-react/src/cardano-wallet/wallet-icon.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import { - Tooltip, - TooltipContent, - TooltipProvider, - TooltipTrigger, -} from "../common/tooltip"; - -export default function WalletIcon({ - icon, - name, - action, - iconReactNode, - loading = false, -}: { - icon?: string; - name: string; - action: () => void; - iconReactNode?: React.ReactNode; - loading?: boolean; -}) { - return ( - - - - - -

{name}

-
-
- ); -} diff --git a/packages/mesh-react/src/cardano-wallet/web3-services.tsx b/packages/mesh-react/src/cardano-wallet/web3-services.tsx deleted file mode 100644 index 1f2bd4b7e..000000000 --- a/packages/mesh-react/src/cardano-wallet/web3-services.tsx +++ /dev/null @@ -1,77 +0,0 @@ -import { useState } from "react"; - -import { - EnableWeb3WalletOptions, - UserControlledWalletDirectTo, - Web3Wallet, -} from "@utxos/sdk"; - -import IconDiscord from "../common/icons/icon-discord"; -import IconGoogle from "../common/icons/icon-google"; -import IconTwitter from "../common/icons/icon-twitter"; -import { useWallet } from "../hooks"; -import WalletIcon from "./wallet-icon"; - -export default function Web3Services({ - options, - setOpen, - persist, -}: { - options: EnableWeb3WalletOptions; - setOpen: (open: boolean) => void; - persist: boolean; -}) { - const { setWallet, setWeb3UserData } = useWallet(); - const [loading, setLoading] = useState(false); - - async function loadWallet(directTo: UserControlledWalletDirectTo) { - setLoading(true); - const _options: EnableWeb3WalletOptions = { - networkId: 0, - fetcher: options.fetcher, - submitter: options.submitter, - appUrl: options.appUrl, - projectId: options.projectId, - directTo: directTo, - }; - const wallet = await Web3Wallet.enable(_options); - const user = wallet.getUser(); - - setWeb3UserData(user); - setWallet( - wallet.cardano!, - "utxos", - persist - ? { - walletAddress: await wallet.cardano.getChangeAddress(), - user: user, - } - : undefined, - ); - setLoading(false); - setOpen(false); - } - - return ( - <> - loadWallet("google")} - loading={loading} - /> - loadWallet("discord")} - loading={loading} - /> - loadWallet("twitter")} - loading={loading} - /> - - ); -} diff --git a/packages/mesh-react/src/common/button-dropdown.tsx b/packages/mesh-react/src/common/button-dropdown.tsx deleted file mode 100644 index 7bc7f9c74..000000000 --- a/packages/mesh-react/src/common/button-dropdown.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import React from "react"; - -export default function ButtonDropdown({ - children, - isDarkMode = false, - hideMenuList = false, - setHideMenuList, - onMouseEnter, - onMouseLeave, -}: { - children: React.ReactNode; - isDarkMode?: boolean; - hideMenuList?: boolean; - setHideMenuList?: (hideMenuList: boolean) => void; - onMouseEnter?: () => void; - onMouseLeave?: () => void; -}) { - return ( - - ); -} diff --git a/packages/mesh-react/src/common/button.tsx b/packages/mesh-react/src/common/button.tsx deleted file mode 100644 index 888a2ee3f..000000000 --- a/packages/mesh-react/src/common/button.tsx +++ /dev/null @@ -1,59 +0,0 @@ -import type { VariantProps } from "class-variance-authority"; -import * as React from "react"; -import { Slot } from "@radix-ui/react-slot"; -import { cva } from "class-variance-authority"; - -import { cn } from "./cn"; - -const buttonVariants = cva( - "mesh-inline-flex mesh-items-center mesh-justify-center mesh-whitespace-nowrap mesh-rounded-md mesh-text-sm mesh-font-medium mesh-transition-colors focus-visible:mesh-outline-none focus-visible:mesh-ring-1 focus-visible:mesh-ring-zinc-950 disabled:mesh-pointer-events-none disabled:mesh-opacity-50 dark:focus-visible:mesh-ring-zinc-300 dark:mesh-text-white", - { - variants: { - variant: { - default: - "mesh-bg-zinc-900 mesh-text-zinc-50 mesh-shadow hover:mesh-bg-zinc-900/90 dark:mesh-bg-zinc-50 dark:mesh-text-zinc-900 dark:hover:mesh-bg-zinc-50/90", - destructive: - "mesh-bg-red-500 mesh-text-zinc-50 mesh-shadow-sm hover:mesh-bg-red-500/90 dark:mesh-bg-red-900 dark:mesh-text-zinc-50 dark:hover:mesh-bg-red-900/90", - outline: - "mesh-border mesh-border-zinc-200 mesh-bg-white mesh-shadow-sm hover:mesh-bg-zinc-100 hover:mesh-text-zinc-900 dark:mesh-border-zinc-800 dark:mesh-bg-zinc-950 dark:hover:mesh-bg-zinc-800 dark:hover:mesh-text-zinc-50", - secondary: - "mesh-bg-zinc-100 mesh-text-zinc-900 mesh-shadow-sm hover:mesh-bg-zinc-100/80 dark:mesh-bg-zinc-800 dark:mesh-text-zinc-50 dark:hover:mesh-bg-zinc-800/80", - ghost: - "hover:mesh-bg-zinc-100 hover:mesh-text-zinc-900 dark:hover:mesh-bg-zinc-800 dark:hover:mesh-text-zinc-50", - link: "mesh-text-zinc-900 mesh-underline-offset-4 hover:mesh-underline dark:mesh-text-zinc-50", - }, - size: { - default: "mesh-h-9 mesh-px-4 mesh-py-2", - sm: "mesh-h-8 mesh-rounded-md mesh-px-3 mesh-text-xs", - lg: "mesh-h-10 mesh-rounded-md mesh-px-8", - icon: "mesh-h-9 mesh-w-9", - }, - }, - defaultVariants: { - variant: "default", - size: "default", - }, - }, -); - -export interface ButtonProps - extends React.ButtonHTMLAttributes, - VariantProps { - asChild?: boolean; -} - -const Button = React.forwardRef( - ({ className, variant, size, asChild = false, ...props }, ref) => { - const Comp = asChild ? Slot : "button"; - return ( - - ); - }, -); -Button.displayName = "Button"; - -export { Button, buttonVariants }; diff --git a/packages/mesh-react/src/common/cn.ts b/packages/mesh-react/src/common/cn.ts deleted file mode 100644 index 88283f013..000000000 --- a/packages/mesh-react/src/common/cn.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { ClassValue } from "clsx"; -import { clsx } from "clsx"; -import { twMerge } from "tailwind-merge"; - -export function cn(...inputs: ClassValue[]) { - return twMerge(clsx(inputs)); -} diff --git a/packages/mesh-react/src/common/dialog.tsx b/packages/mesh-react/src/common/dialog.tsx deleted file mode 100644 index 44402669a..000000000 --- a/packages/mesh-react/src/common/dialog.tsx +++ /dev/null @@ -1,120 +0,0 @@ -import * as React from "react"; -import * as DialogPrimitive from "@radix-ui/react-dialog"; -import { Cross2Icon } from "@radix-ui/react-icons"; - -import { cn } from "./cn"; - -const Dialog = DialogPrimitive.Root; - -const DialogTrigger = DialogPrimitive.Trigger; - -const DialogPortal = DialogPrimitive.Portal; - -const DialogClose = DialogPrimitive.Close; - -const DialogOverlay = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); -DialogOverlay.displayName = DialogPrimitive.Overlay.displayName; - -const DialogContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( - - - - {children} - - - Close - - - -)); -DialogContent.displayName = DialogPrimitive.Content.displayName; - -const DialogHeader = ({ - className, - ...props -}: React.HTMLAttributes) => ( -
-); -DialogHeader.displayName = "DialogHeader"; - -const DialogFooter = ({ - className, - ...props -}: React.HTMLAttributes) => ( -
-); -DialogFooter.displayName = "DialogFooter"; - -const DialogTitle = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); -DialogTitle.displayName = DialogPrimitive.Title.displayName; - -const DialogDescription = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); -DialogDescription.displayName = DialogPrimitive.Description.displayName; - -export { - Dialog, - DialogPortal, - DialogOverlay, - DialogTrigger, - DialogClose, - DialogContent, - DialogHeader, - DialogFooter, - DialogTitle, - DialogDescription, -}; diff --git a/packages/mesh-react/src/common/dropdown-menu.tsx b/packages/mesh-react/src/common/dropdown-menu.tsx deleted file mode 100644 index 8cfc262b6..000000000 --- a/packages/mesh-react/src/common/dropdown-menu.tsx +++ /dev/null @@ -1,209 +0,0 @@ -import * as React from "react"; -import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu"; -import { - CheckIcon, - ChevronRightIcon, - DotFilledIcon, -} from "@radix-ui/react-icons"; - -import { cn } from "./cn"; - -const DropdownMenu = DropdownMenuPrimitive.Root; - -const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger; - -const DropdownMenuGroup = DropdownMenuPrimitive.Group; - -const DropdownMenuPortal = DropdownMenuPrimitive.Portal; - -const DropdownMenuSub = DropdownMenuPrimitive.Sub; - -const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup; - -const DropdownMenuSubTrigger = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean; - } ->(({ className, inset, children, ...props }, ref) => ( - - {children} - - -)); -DropdownMenuSubTrigger.displayName = - DropdownMenuPrimitive.SubTrigger.displayName; - -const DropdownMenuSubContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); -DropdownMenuSubContent.displayName = - DropdownMenuPrimitive.SubContent.displayName; - -const DropdownMenuContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, sideOffset = 4, ...props }, ref) => ( - - - -)); -DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName; - -const DropdownMenuItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean; - } ->(({ className, inset, ...props }, ref) => ( - -)); -DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName; - -const DropdownMenuCheckboxItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, checked, ...props }, ref) => ( - - - - - - - {children} - -)); -DropdownMenuCheckboxItem.displayName = - DropdownMenuPrimitive.CheckboxItem.displayName; - -const DropdownMenuRadioItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( - - - - - - - {children} - -)); -DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName; - -const DropdownMenuLabel = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & { - inset?: boolean; - } ->(({ className, inset, ...props }, ref) => ( - -)); -DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName; - -const DropdownMenuSeparator = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); -DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName; - -const DropdownMenuShortcut = ({ - className, - ...props -}: React.HTMLAttributes) => { - return ( - - ); -}; -DropdownMenuShortcut.displayName = "DropdownMenuShortcut"; - -export { - DropdownMenu, - DropdownMenuTrigger, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuCheckboxItem, - DropdownMenuRadioItem, - DropdownMenuLabel, - DropdownMenuSeparator, - DropdownMenuShortcut, - DropdownMenuGroup, - DropdownMenuPortal, - DropdownMenuSub, - DropdownMenuSubContent, - DropdownMenuSubTrigger, - DropdownMenuRadioGroup, -}; diff --git a/packages/mesh-react/src/common/icons/icon-book-dashed.tsx b/packages/mesh-react/src/common/icons/icon-book-dashed.tsx deleted file mode 100644 index 185604ac0..000000000 --- a/packages/mesh-react/src/common/icons/icon-book-dashed.tsx +++ /dev/null @@ -1,34 +0,0 @@ -export default function IconBookDashed() { - return ( - - - - - - - - - - - - - - ); -} diff --git a/packages/mesh-react/src/common/icons/icon-chevron-right.tsx b/packages/mesh-react/src/common/icons/icon-chevron-right.tsx deleted file mode 100644 index 513880f3b..000000000 --- a/packages/mesh-react/src/common/icons/icon-chevron-right.tsx +++ /dev/null @@ -1,24 +0,0 @@ -export default function IconChevronRight() { - return ( - - - - ); -} diff --git a/packages/mesh-react/src/common/icons/icon-discord.tsx b/packages/mesh-react/src/common/icons/icon-discord.tsx deleted file mode 100644 index 0d5c41a26..000000000 --- a/packages/mesh-react/src/common/icons/icon-discord.tsx +++ /dev/null @@ -1,17 +0,0 @@ -export default function IconDiscord() { - return ( - - ); -} diff --git a/packages/mesh-react/src/common/icons/icon-download.tsx b/packages/mesh-react/src/common/icons/icon-download.tsx deleted file mode 100644 index e64161f2b..000000000 --- a/packages/mesh-react/src/common/icons/icon-download.tsx +++ /dev/null @@ -1,25 +0,0 @@ -export default function IconDownload() { - return ( - - - - - - ); -} diff --git a/packages/mesh-react/src/common/icons/icon-fingerprint.tsx b/packages/mesh-react/src/common/icons/icon-fingerprint.tsx deleted file mode 100644 index dae5b3290..000000000 --- a/packages/mesh-react/src/common/icons/icon-fingerprint.tsx +++ /dev/null @@ -1,32 +0,0 @@ -export default function IconFingerprint() { - return ( - - - - - - - - - - - - ); -} diff --git a/packages/mesh-react/src/common/icons/icon-google.tsx b/packages/mesh-react/src/common/icons/icon-google.tsx deleted file mode 100644 index a53867625..000000000 --- a/packages/mesh-react/src/common/icons/icon-google.tsx +++ /dev/null @@ -1,30 +0,0 @@ -export default function IconGoogle() { - return ( - - - - - - - ); -} diff --git a/packages/mesh-react/src/common/icons/icon-plus.tsx b/packages/mesh-react/src/common/icons/icon-plus.tsx deleted file mode 100644 index 3edadba06..000000000 --- a/packages/mesh-react/src/common/icons/icon-plus.tsx +++ /dev/null @@ -1,24 +0,0 @@ -export default function IconPlus() { - return ( - - - - - ); -} diff --git a/packages/mesh-react/src/common/icons/icon-twitter.tsx b/packages/mesh-react/src/common/icons/icon-twitter.tsx deleted file mode 100644 index b0c2c9ccf..000000000 --- a/packages/mesh-react/src/common/icons/icon-twitter.tsx +++ /dev/null @@ -1,15 +0,0 @@ -export default function IconTwitter() { - return ( - - - - ); -} diff --git a/packages/mesh-react/src/common/input.tsx b/packages/mesh-react/src/common/input.tsx deleted file mode 100644 index ee2ee5965..000000000 --- a/packages/mesh-react/src/common/input.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import * as React from "react"; - -import { cn } from "./cn"; - -export interface InputProps - extends React.InputHTMLAttributes {} - -const Input = React.forwardRef( - ({ className, type, ...props }, ref) => { - return ( - - ); - }, -); -Input.displayName = "Input"; - -export { Input }; diff --git a/packages/mesh-react/src/common/label.tsx b/packages/mesh-react/src/common/label.tsx deleted file mode 100644 index f3de2ce8c..000000000 --- a/packages/mesh-react/src/common/label.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import type { VariantProps } from "class-variance-authority"; -import * as React from "react"; -import * as LabelPrimitive from "@radix-ui/react-label"; -import { cva } from "class-variance-authority"; - -import { cn } from "./cn"; - -const labelVariants = cva( - "mesh-text-sm mesh-font-medium mesh-leading-none peer-disabled:mesh-cursor-not-allowed peer-disabled:mesh-opacity-70", -); - -const Label = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef & - VariantProps ->(({ className, ...props }, ref) => ( - -)); -Label.displayName = LabelPrimitive.Root.displayName; - -export { Label }; diff --git a/packages/mesh-react/src/common/tooltip.tsx b/packages/mesh-react/src/common/tooltip.tsx deleted file mode 100644 index 363172b92..000000000 --- a/packages/mesh-react/src/common/tooltip.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import * as React from "react"; -import * as TooltipPrimitive from "@radix-ui/react-tooltip"; - -import { cn } from "./cn"; - -const TooltipProvider = TooltipPrimitive.Provider; - -const Tooltip = TooltipPrimitive.Root; - -const TooltipTrigger = TooltipPrimitive.Trigger; - -const TooltipContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, sideOffset = 4, ...props }, ref) => ( - -)); -TooltipContent.displayName = TooltipPrimitive.Content.displayName; - -export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }; diff --git a/packages/mesh-react/src/contexts/WalletContext.ts b/packages/mesh-react/src/contexts/WalletContext.ts deleted file mode 100644 index 24d2e95f5..000000000 --- a/packages/mesh-react/src/contexts/WalletContext.ts +++ /dev/null @@ -1,203 +0,0 @@ -import { createContext, useCallback, useEffect, useState } from "react"; - -import { IWallet } from "@meshsdk/common"; -import { BrowserWallet } from "@meshsdk/wallet"; -import { EnableWeb3WalletOptions, UserSocialData } from "@utxos/sdk"; - -interface WalletContext { - hasConnectedWallet: boolean; - connectedWalletInstance: IWallet; - connectedWalletName: string | undefined; - connectingWallet: boolean; - connectWallet: (walletName: string, persist?: boolean) => Promise; - disconnect: () => void; - setWallet: ( - walletInstance: IWallet, - walletName: string, - persist?: { - [key: string]: any; - }, - ) => void; - setPersist: (persist: boolean) => void; - setWeb3Services: (web3Services: EnableWeb3WalletOptions | undefined) => void; - web3UserData: UserSocialData | undefined; - setWeb3UserData: (web3UserData: UserSocialData | undefined) => void; - error?: unknown; - address: string; - state: WalletState; -} - -export enum WalletState { - NOT_CONNECTED = "NOT_CONNECTED", - CONNECTING = "CONNECTING", - CONNECTED = "CONNECTED", -} - -const INITIAL_STATE = { - walletName: undefined, - walletInstance: {} as IWallet, -}; - -const localstoragePersist = "mesh-wallet-persist"; - -export const useWalletStore = () => { - const [error, setError] = useState(undefined); - const [state, setState] = useState(WalletState.NOT_CONNECTED); - const [connectingWallet, setConnectingWallet] = useState(false); - const [persistSession, setPersistSession] = useState(false); - const [address, setAddress] = useState(""); - const [connectedWalletInstance, setConnectedWalletInstance] = - useState(INITIAL_STATE.walletInstance); - const [connectedWalletName, setConnectedWalletName] = useState< - string | undefined - >(INITIAL_STATE.walletName); - const [web3Services, setWeb3Services] = useState< - EnableWeb3WalletOptions | undefined - >(undefined); - const [web3UserData, setWeb3UserData] = useState( - undefined, - ); - const connectWallet = useCallback( - async (walletName: string, persist?: boolean) => { - setConnectingWallet(true); - setState(WalletState.CONNECTING); - - try { - const extensions = BrowserWallet.getSupportedExtensions(walletName); - const walletInstance = await BrowserWallet.enable( - walletName, - extensions, - ); - setConnectedWalletInstance(walletInstance); - setConnectedWalletName(walletName); - setError(undefined); - - // if persist, set localstorage - if (persist) { - localStorage.setItem( - localstoragePersist, - JSON.stringify({ walletName }), - ); - } - setState(WalletState.CONNECTED); - } catch (error) { - setError(error); - setState(WalletState.NOT_CONNECTED); - setConnectedWalletName(INITIAL_STATE.walletName); - setConnectedWalletInstance(INITIAL_STATE.walletInstance); - } - - setConnectingWallet(false); - }, - [], - ); - - const disconnect = useCallback(() => { - setConnectedWalletName(INITIAL_STATE.walletName); - setConnectedWalletInstance(INITIAL_STATE.walletInstance); - setState(WalletState.NOT_CONNECTED); - localStorage.removeItem(localstoragePersist); - }, []); - - const setWallet = useCallback( - async ( - walletInstance: IWallet, - walletName: string, - persist?: { [key: string]: any }, - ) => { - setConnectedWalletInstance(walletInstance); - setConnectedWalletName(walletName); - setState(WalletState.CONNECTED); - - if (persist) { - localStorage.setItem( - localstoragePersist, - JSON.stringify({ walletName, ...persist }), - ); - } - }, - [], - ); - - const setPersist = useCallback((persist: boolean) => { - setPersistSession(persist); - }, []); - - // after connected - useEffect(() => { - async function load() { - if ( - Object.keys(connectedWalletInstance).length > 0 && - address.length === 0 - ) { - let address = (await connectedWalletInstance.getUnusedAddresses())[0]; - if (!address) - address = await connectedWalletInstance.getChangeAddress(); - setAddress(address); - } - } - load(); - }, [connectedWalletInstance]); - - // if persist - useEffect(() => { - const persistData = localStorage.getItem(localstoragePersist); - if (persistSession && persistData) { - try { - const persist = JSON.parse(persistData); - - // Validate required field exists - if (!persist || typeof persist.walletName !== "string") { - throw new Error("Invalid persist data structure"); - } - - // Web3Wallet session restoration requires re-authentication - // as the API now requires keyHashes instead of just an address - if (persist.walletName === "utxos") { - // Clear the persist data since we can't restore web3 wallet sessions - // Users will need to re-authenticate with web3 services - localStorage.removeItem(localstoragePersist); - } else { - connectWallet(persist.walletName); - } - } catch (error) { - // Clear corrupted persist data to prevent repeated failures - console.error("Failed to restore wallet session:", error); - localStorage.removeItem(localstoragePersist); - } - } - }, [persistSession, connectWallet]); - - return { - hasConnectedWallet: INITIAL_STATE.walletName !== connectedWalletName, - connectedWalletInstance, - connectedWalletName, - connectingWallet, - connectWallet, - disconnect, - setWallet, - setPersist, - setWeb3Services, - web3UserData, - setWeb3UserData, - error, - address, - state, - }; -}; - -export const WalletContext = createContext({ - hasConnectedWallet: false, - connectedWalletInstance: INITIAL_STATE.walletInstance, - connectedWalletName: INITIAL_STATE.walletName, - connectingWallet: false, - connectWallet: async () => {}, - disconnect: () => {}, - setWallet: async () => {}, - setPersist: () => {}, - setWeb3Services: () => {}, - web3UserData: undefined, - setWeb3UserData: () => {}, - address: "", - state: WalletState.NOT_CONNECTED, -}); diff --git a/packages/mesh-react/src/contexts/index.tsx b/packages/mesh-react/src/contexts/index.tsx deleted file mode 100644 index 6061e273a..000000000 --- a/packages/mesh-react/src/contexts/index.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import { useWalletStore, WalletContext } from "./WalletContext"; - -export { WalletContext } from "./WalletContext"; - -interface Props { - children: React.ReactNode; -} - -export const MeshProvider: React.FC = ({ children }) => { - const store = useWalletStore(); - return ( - - <>{children} - - ); -}; diff --git a/packages/mesh-react/src/hooks/index.ts b/packages/mesh-react/src/hooks/index.ts deleted file mode 100644 index 9b47c8382..000000000 --- a/packages/mesh-react/src/hooks/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -export * from "./useAddress"; -export * from "./useAssets"; -export * from "./useWalletList"; -export * from "./useLovelace"; -export * from "./useNetwork"; -export * from "./useRewardAddress"; -export * from "./useWallet"; -export * from "./useWalletSubmit"; diff --git a/packages/mesh-react/src/hooks/useAddress.ts b/packages/mesh-react/src/hooks/useAddress.ts deleted file mode 100644 index 1c9ae95fd..000000000 --- a/packages/mesh-react/src/hooks/useAddress.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { useContext, useEffect, useState } from "react"; - -import { WalletContext } from "../contexts"; - -export const useAddress = (accountId = 0) => { - const [address, setAddress] = useState(); - const { hasConnectedWallet, connectedWalletInstance } = - useContext(WalletContext); - - useEffect(() => { - if (hasConnectedWallet) { - connectedWalletInstance.getUsedAddresses().then((addresses) => { - if (addresses[accountId]) { - setAddress(addresses[accountId]); - } - }); - } - }, [accountId, hasConnectedWallet, connectedWalletInstance]); - - return address; -}; diff --git a/packages/mesh-react/src/hooks/useAssets.ts b/packages/mesh-react/src/hooks/useAssets.ts deleted file mode 100644 index 1dcf71e07..000000000 --- a/packages/mesh-react/src/hooks/useAssets.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { useContext, useEffect, useState } from "react"; - -import type { Asset } from "@meshsdk/common"; - -import { WalletContext } from "../contexts"; - -export const useAssets = () => { - const [assets, setAssets] = useState(); - const { hasConnectedWallet, connectedWalletInstance } = - useContext(WalletContext); - - useEffect(() => { - if (hasConnectedWallet) { - connectedWalletInstance.getAssets().then(setAssets); - } - }, [hasConnectedWallet, connectedWalletInstance]); - - return assets; -}; diff --git a/packages/mesh-react/src/hooks/useLovelace.ts b/packages/mesh-react/src/hooks/useLovelace.ts deleted file mode 100644 index 56fa107a1..000000000 --- a/packages/mesh-react/src/hooks/useLovelace.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { useContext, useEffect, useMemo, useRef, useState } from "react"; - -import { WalletContext } from "../contexts"; - -export const useLovelace = () => { - const [lovelace, setLovelace] = useState(); - const { hasConnectedWallet, connectedWalletInstance } = - useContext(WalletContext); - const hasFetchedLovelace = useRef(false); - - useEffect(() => { - async function getLovelace() { - if (hasConnectedWallet && !hasFetchedLovelace.current) { - setLovelace(await connectedWalletInstance.getLovelace()); - hasFetchedLovelace.current = true; - } - } - getLovelace(); - }, [hasConnectedWallet, connectedWalletInstance]); - - const _lovelace = useMemo(() => { - return lovelace; - }, [lovelace]); - - return _lovelace; -}; diff --git a/packages/mesh-react/src/hooks/useNetwork.ts b/packages/mesh-react/src/hooks/useNetwork.ts deleted file mode 100644 index d1d6a0dfc..000000000 --- a/packages/mesh-react/src/hooks/useNetwork.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { useContext, useEffect, useState } from "react"; - -import { WalletContext } from "../contexts"; - -export const useNetwork = () => { - const [networkId, setNetworkId] = useState(); - const { hasConnectedWallet, connectedWalletInstance } = - useContext(WalletContext); - - useEffect(() => { - if (hasConnectedWallet) { - connectedWalletInstance.getNetworkId().then(setNetworkId); - } else { - setNetworkId(undefined); - } - }, [hasConnectedWallet, connectedWalletInstance]); - - return networkId; -}; diff --git a/packages/mesh-react/src/hooks/useRewardAddress.ts b/packages/mesh-react/src/hooks/useRewardAddress.ts deleted file mode 100644 index 182cc9263..000000000 --- a/packages/mesh-react/src/hooks/useRewardAddress.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { useContext, useEffect, useState } from "react"; - -import { WalletContext } from "../contexts"; - -export const useRewardAddress = (accountId = 0) => { - const [rewardAddress, setRewardAddress] = useState(); - const { hasConnectedWallet, connectedWalletInstance } = - useContext(WalletContext); - - useEffect(() => { - if (hasConnectedWallet) { - connectedWalletInstance.getRewardAddresses().then((addresses) => { - if (addresses[accountId]) { - setRewardAddress(addresses[accountId]); - } - }); - } - }, [accountId, hasConnectedWallet, connectedWalletInstance]); - - return rewardAddress; -}; diff --git a/packages/mesh-react/src/hooks/useWallet.ts b/packages/mesh-react/src/hooks/useWallet.ts deleted file mode 100644 index 86151bb13..000000000 --- a/packages/mesh-react/src/hooks/useWallet.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { useContext } from "react"; - -import { WalletContext } from "../contexts"; - -export const useWallet = () => { - const { - hasConnectedWallet, - connectedWalletName, - connectedWalletInstance, - connectingWallet, - connectWallet, - disconnect, - setWallet, - setPersist, - setWeb3Services, - web3UserData, - setWeb3UserData, - error, - address, - state, - } = useContext(WalletContext); - - if (connectWallet === undefined || disconnect === undefined) { - throw new Error( - "Can't call useWallet outside of the WalletProvider context", - ); - } - - return { - name: connectedWalletName, - connecting: connectingWallet, - connected: hasConnectedWallet, - wallet: connectedWalletInstance, - connect: connectWallet, - disconnect, - setWallet, - setPersist, - setWeb3Services, - web3UserData, - setWeb3UserData, - error, - address, - state, - }; -}; diff --git a/packages/mesh-react/src/hooks/useWalletList.ts b/packages/mesh-react/src/hooks/useWalletList.ts deleted file mode 100644 index 00994aa1b..000000000 --- a/packages/mesh-react/src/hooks/useWalletList.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { useEffect, useState } from "react"; - -import type { Wallet } from "@meshsdk/common"; -import { BrowserWallet } from "@meshsdk/wallet"; - -export const useWalletList = ({ - injectFn = undefined, -}: { - injectFn?: () => Promise; -} = {}) => { - const [wallets, setWallets] = useState([]); - useEffect(() => { - async function get() { - setWallets(await BrowserWallet.getAvailableWallets({ injectFn })); - } - get(); - }, []); - - return wallets; -}; diff --git a/packages/mesh-react/src/hooks/useWalletSubmit.ts b/packages/mesh-react/src/hooks/useWalletSubmit.ts deleted file mode 100644 index 7c9bf1681..000000000 --- a/packages/mesh-react/src/hooks/useWalletSubmit.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { useCallback, useContext, useState } from "react"; - -import { WalletContext } from "../contexts"; - -export const useWalletSubmit = () => { - const [error, setError] = useState(); - const [result, setResult] = useState(); - const [submitting, setSubmitting] = useState(false); - - const { hasConnectedWallet, connectedWalletInstance } = - useContext(WalletContext); - - const submitTx = useCallback(async (signedTx: string) => { - setSubmitting(true); - setError(undefined); - setResult(undefined); - - try { - if (!hasConnectedWallet) { - throw new Error( - "Please make sure to connect a wallet before calling useWalletSubmit", - ); - } - - const txHash = await connectedWalletInstance.submitTx(signedTx); - setResult(txHash); - } catch (error) { - setError(error); - } finally { - setSubmitting(false); - } - }, [hasConnectedWallet, connectedWalletInstance]); - - return { - error, - result, - submitting, - submitTx, - }; -}; diff --git a/packages/mesh-react/src/index.ts b/packages/mesh-react/src/index.ts deleted file mode 100644 index b1d4adfeb..000000000 --- a/packages/mesh-react/src/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * from "./cardano-wallet"; -export * from "./contexts"; -export * from "./hooks"; -export * from "./mesh-badge"; -// export * from "./stake-button"; diff --git a/packages/mesh-react/src/mesh-badge/index.tsx b/packages/mesh-react/src/mesh-badge/index.tsx deleted file mode 100644 index b3c4a89d6..000000000 --- a/packages/mesh-react/src/mesh-badge/index.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import { MeshLogo } from "./mesh-logo"; - -export const MeshBadge = ({ isDark = false }) => ( - - - Mesh - -); diff --git a/packages/mesh-react/src/mesh-badge/mesh-logo.tsx b/packages/mesh-react/src/mesh-badge/mesh-logo.tsx deleted file mode 100644 index 0af0411e0..000000000 --- a/packages/mesh-react/src/mesh-badge/mesh-logo.tsx +++ /dev/null @@ -1,10 +0,0 @@ -export const MeshLogo = () => ( - - - -); diff --git a/packages/mesh-react/src/stake-button/index.tsx b/packages/mesh-react/src/stake-button/index.tsx deleted file mode 100644 index a2c0b96ec..000000000 --- a/packages/mesh-react/src/stake-button/index.tsx +++ /dev/null @@ -1,151 +0,0 @@ -// import { useEffect, useState } from "react"; - -// import { AccountInfo } from "@meshsdk/common"; -// import { Transaction } from "@meshsdk/transaction"; - -// import { CardanoWallet } from "../cardano-wallet-dropdown"; -// import ButtonDropdown from "../common/button-dropdown"; -// import { useRewardAddress, useWallet } from "../hooks"; - -// interface ButtonProps { -// label?: string; -// isDark?: boolean; -// poolId: string; -// onCheck: (rewardAddress: string) => Promise; -// onDelegated?: () => void; -// } - -// export const StakeButton = ({ -// label = "Stake your ADA", -// isDark = false, -// poolId, -// onCheck, -// onDelegated = undefined, -// }: ButtonProps) => { -// const [isDarkMode, setIsDarkMode] = useState(false); -// const { connected } = useWallet(); - -// useEffect(() => { -// setIsDarkMode(isDark); -// }, [isDark]); - -// return ( -// <> -// {connected ? ( -// -// -// -// ) : ( -// -// )} -// -// ); -// }; - -// const Delegate = ({ -// poolId, -// onCheck, -// onDelegated, -// }: { -// poolId: string; -// onCheck: (rewardAddress: string) => Promise; -// onDelegated?: () => void; -// }) => { -// const { wallet } = useWallet(); -// const rewardAddress = useRewardAddress(); -// const [_, setError] = useState(); -// const [checking, setChecking] = useState(false); -// const [accountInfo, setAccountInfo] = useState(); -// const [processing, setProcessing] = useState(false); -// const [done, setDone] = useState(false); - -// const checkAccountStatus = async () => { -// try { -// setChecking(true); - -// if (rewardAddress) { -// const info = await onCheck(rewardAddress); -// setAccountInfo(info); -// } - -// setChecking(false); -// } catch (error) { -// setError(error); -// } -// }; - -// const registerAddress = async () => { -// setProcessing(true); -// setDone(false); -// try { -// if (rewardAddress) { -// const tx = new Transaction({ initiator: wallet }) -// .registerStake(rewardAddress) -// .delegateStake(rewardAddress, poolId); - -// const unsignedTx = await tx.build(); -// const signedTx = await wallet.signTx(unsignedTx); -// await wallet.submitTx(signedTx); - -// if (onDelegated) { -// onDelegated(); -// } -// setDone(true); -// } -// } catch (error) { -// setError(error); -// } -// setProcessing(false); -// }; - -// const delegateStake = async () => { -// setProcessing(true); -// setDone(false); -// try { -// if (rewardAddress) { -// const tx = new Transaction({ initiator: wallet }) -// .delegateStake(rewardAddress, poolId); - -// const unsignedTx = await tx.build(); -// const signedTx = await wallet.signTx(unsignedTx); -// await wallet.submitTx(signedTx); - -// if (onDelegated) { -// onDelegated(); -// } -// setDone(true); -// } -// } catch (error) { -// setError(error); -// } -// setProcessing(false); -// }; - -// useEffect(() => { -// checkAccountStatus(); -// }, [rewardAddress]); - -// if (checking) { -// return Checking...; -// } -// if (processing) { -// return Loading...; -// } -// if (done) { -// return Stake Delegated; -// } - -// if (accountInfo?.active) { -// return accountInfo.poolId === poolId ? ( -// Stake Delegated -// ) : ( -// Begin Staking -// ); -// } - -// return Begin Staking; -// }; diff --git a/packages/mesh-react/src/styles.css b/packages/mesh-react/src/styles.css deleted file mode 100644 index b5c61c956..000000000 --- a/packages/mesh-react/src/styles.css +++ /dev/null @@ -1,3 +0,0 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; diff --git a/packages/mesh-react/tailwind.config.ts b/packages/mesh-react/tailwind.config.ts deleted file mode 100644 index 177382e1d..000000000 --- a/packages/mesh-react/tailwind.config.ts +++ /dev/null @@ -1,42 +0,0 @@ -import type { Config } from "tailwindcss"; - -import sharedConfig from "@meshsdk/configs/tailwind/tailwind.config"; - -const config: Pick< - Config, - "prefix" | "presets" | "content" | "theme" | "plugins" | "darkMode" -> = { - content: ["./src/**/*.tsx", "./src/common/**/*.tsx"], - darkMode: "class", - prefix: "mesh-", - presets: [sharedConfig], - theme: { - extend: { - keyframes: { - "accordion-down": { - from: { - height: "0", - }, - to: { - height: "var(--radix-accordion-content-height)", - }, - }, - "accordion-up": { - from: { - height: "var(--radix-accordion-content-height)", - }, - to: { - height: "0", - }, - }, - }, - animation: { - "accordion-down": "accordion-down 0.2s ease-out", - "accordion-up": "accordion-up 0.2s ease-out", - }, - }, - }, - plugins: [require("tailwindcss-animate")], -}; - -export default config; diff --git a/packages/mesh-react/tsconfig.json b/packages/mesh-react/tsconfig.json deleted file mode 100644 index 26b4b6dd3..000000000 --- a/packages/mesh-react/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "@meshsdk/configs/typescript/base.json", - "include": ["src/**/*"], - "exclude": ["node_modules", "dist"], - "compilerOptions": { - "jsx": "react-jsx" - } -} diff --git a/packages/mesh-react/tsup.config.ts b/packages/mesh-react/tsup.config.ts deleted file mode 100644 index c2afaca56..000000000 --- a/packages/mesh-react/tsup.config.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { defineConfig } from "tsup"; - -export default defineConfig({ - entry: ["src/index.ts"], - format: ["esm", "cjs"], - dts: true, - skipNodeModulesBundle: true, -}); diff --git a/packages/mesh-svelte/README.md b/packages/mesh-svelte/README.md deleted file mode 100644 index a0d1fada3..000000000 --- a/packages/mesh-svelte/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# mesh-svelte - -Svelte component library - [meshjs.dev/svelte](https://meshjs.dev/svelte) - -[meshjs.dev](https://meshjs.dev/) diff --git a/packages/mesh-svelte/jest.config.ts b/packages/mesh-svelte/jest.config.ts deleted file mode 100644 index 9229656e9..000000000 --- a/packages/mesh-svelte/jest.config.ts +++ /dev/null @@ -1,20 +0,0 @@ -import type { Config } from "jest"; - -const jestConfig: Config = { - clearMocks: true, - maxWorkers: 1, - testEnvironment: "node", - testMatch: ["**/packages/**/*.test.ts"], - setupFiles: ["dotenv/config"], - preset: "ts-jest", - moduleNameMapper: { - "^(\\.{1,2}/.*)\\.js$": "$1", - }, - transform: { - "^.+\\.[jt]s?$": "ts-jest", - }, - transformIgnorePatterns: ["/node_modules/(?!@meshsdk/.*)"], - passWithNoTests: true, -}; - -export default jestConfig; diff --git a/packages/mesh-svelte/package.json b/packages/mesh-svelte/package.json deleted file mode 100644 index 755c3344f..000000000 --- a/packages/mesh-svelte/package.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "name": "@meshsdk/svelte", - "version": "1.9.0-beta.98", - "description": "Svelte component library - https://meshjs.dev/svelte", - "type": "module", - "exports": { - "./styles.css": "./dist/index.css", - ".": { - "types": "./dist/index.d.ts", - "svelte": "./dist/index.js", - "default": "./dist/index.js" - } - }, - "files": [ - "dist" - ], - "scripts": { - "build:mesh": "svelte-kit sync && svelte-package && tailwindcss -i ./src/styles.css -o ./dist/index.css && publint", - "dev:tsup": "tsup src/index.ts --format esm,js --watch --dts", - "clean": "rm -rf .turbo && rm -rf dist && rm -rf node_modules", - "format": "prettier --write . --ignore-path ../../.gitignore", - "lint": "eslint", - "pack": "npm pack --pack-destination=./dist", - "type-check": "tsc --noEmit", - "package": "svelte-kit sync && svelte-package && publint", - "dev": "vite dev" - }, - "dependencies": { - "@meshsdk/core": "1.9.0-beta.98", - "bits-ui": "1.0.0-next.65" - }, - "devDependencies": { - "@meshsdk/configs": "*", - "@sveltejs/adapter-auto": "^7.0.0", - "@sveltejs/kit": "^2.0.0", - "@sveltejs/package": "2.3.7", - "publint": "^0.2.0", - "@sveltejs/vite-plugin-svelte": "^6.2.1", - "autoprefixer": "^10.4.20", - "svelte": "^5.43.6", - "svelte-check": "^4.0.0", - "tailwindcss": "^3.4.9", - "typescript": "^5.0.0", - "vite": "^7.2.2", - "vite-plugin-node-polyfills": "^0.24.0", - "vite-plugin-top-level-await": "^1.4.4", - "vite-plugin-wasm": "^3.3.0" - }, - "overrides": { - "libsodium-wrappers-sumo": "0.7.15" - }, - "peerDependencies": { - "svelte": "^5.0.0" - }, - "prettier": "@meshsdk/configs/prettier", - "publishConfig": { - "access": "public" - }, - "license": "Apache-2.0", - "keywords": [ - "cardano", - "ada", - "web3", - "blockchain", - "sdk" - ] -} diff --git a/packages/mesh-svelte/postcss.config.js b/packages/mesh-svelte/postcss.config.js deleted file mode 100644 index cc7364004..000000000 --- a/packages/mesh-svelte/postcss.config.js +++ /dev/null @@ -1,9 +0,0 @@ -// If you want to use other PostCSS plugins, see the following: -// https://tailwindcss.com/docs/using-with-preprocessors - -export default { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -}; diff --git a/packages/mesh-svelte/src/app.d.ts b/packages/mesh-svelte/src/app.d.ts deleted file mode 100644 index 520c4217a..000000000 --- a/packages/mesh-svelte/src/app.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -// See https://svelte.dev/docs/kit/types#app.d.ts -// for information about these interfaces -declare global { - namespace App { - // interface Error {} - // interface Locals {} - // interface PageData {} - // interface PageState {} - // interface Platform {} - } -} - -export {}; diff --git a/packages/mesh-svelte/src/app.html b/packages/mesh-svelte/src/app.html deleted file mode 100644 index 84ffad166..000000000 --- a/packages/mesh-svelte/src/app.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - %sveltekit.head% - - -
%sveltekit.body%
- - diff --git a/packages/mesh-svelte/src/index.ts b/packages/mesh-svelte/src/index.ts deleted file mode 100644 index 8cd5167d1..000000000 --- a/packages/mesh-svelte/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./lib"; diff --git a/packages/mesh-svelte/src/lib/cardano-wallet-dropdown/component/cardano-wallet-dropdown-button.svelte b/packages/mesh-svelte/src/lib/cardano-wallet-dropdown/component/cardano-wallet-dropdown-button.svelte deleted file mode 100644 index 133d6286e..000000000 --- a/packages/mesh-svelte/src/lib/cardano-wallet-dropdown/component/cardano-wallet-dropdown-button.svelte +++ /dev/null @@ -1,132 +0,0 @@ - - -
(hideMenuList = false)} - onmouseleave={() => (hideMenuList = true)} - class="mesh-z-50 mesh-w-min" -> - -
- {#if BrowserWalletState.wallet === undefined && availableWallets.length > 0} - {#each availableWallets as enabledWallet} - {@render menuItem( - enabledWallet.icon, - () => connect(enabledWallet), - enabledWallet.name, - )} - {/each} - {:else if BrowserWalletState.wallet === undefined && availableWallets.length === 0} - No Wallet Found - {:else if BrowserWalletState.wallet} - {@render menuItem(undefined, () => disconnect(), "Disconnect")} - {/if} -
-
-{#snippet menuItem(icon: string | undefined, onclick: () => void, name: string)} - -{/snippet} diff --git a/packages/mesh-svelte/src/lib/cardano-wallet-dropdown/component/index.ts b/packages/mesh-svelte/src/lib/cardano-wallet-dropdown/component/index.ts deleted file mode 100644 index fbc35f2a7..000000000 --- a/packages/mesh-svelte/src/lib/cardano-wallet-dropdown/component/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import Root from "./cardano-wallet-dropdown-button.svelte"; - -export { Root as CardanoWalletDropdown }; diff --git a/packages/mesh-svelte/src/lib/cardano-wallet-dropdown/index.ts b/packages/mesh-svelte/src/lib/cardano-wallet-dropdown/index.ts deleted file mode 100644 index bd395e54f..000000000 --- a/packages/mesh-svelte/src/lib/cardano-wallet-dropdown/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./component"; diff --git a/packages/mesh-svelte/src/lib/cardano-wallet/component/cardano-wallet.svelte b/packages/mesh-svelte/src/lib/cardano-wallet/component/cardano-wallet.svelte deleted file mode 100644 index 27769e3f5..000000000 --- a/packages/mesh-svelte/src/lib/cardano-wallet/component/cardano-wallet.svelte +++ /dev/null @@ -1,116 +0,0 @@ - - - - {#if BrowserWalletState.connecting} - Connecting... - {:else if BrowserWalletState.wallet === undefined} - - {label} - - {:else if BrowserWalletState.wallet && BrowserWalletState.wallet && lovelaceBalance} - - {:else if BrowserWalletState.wallet && BrowserWalletState.wallet && lovelaceBalance === undefined} - Loading... - {/if} - - - - Create API key - - - Securely Connect your Cardano Wallet. - -
- {#each availableWallets as wallet} - {wallet.name { - connect(wallet); - dialogOpen = false; - }} - /> - {/each} -
- -
- Close -
-
-
-
-
diff --git a/packages/mesh-svelte/src/lib/cardano-wallet/component/index.ts b/packages/mesh-svelte/src/lib/cardano-wallet/component/index.ts deleted file mode 100644 index 7bbd7b148..000000000 --- a/packages/mesh-svelte/src/lib/cardano-wallet/component/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import Root from "./cardano-wallet.svelte"; - -export { Root as CardanoWallet }; diff --git a/packages/mesh-svelte/src/lib/cardano-wallet/index.ts b/packages/mesh-svelte/src/lib/cardano-wallet/index.ts deleted file mode 100644 index bd395e54f..000000000 --- a/packages/mesh-svelte/src/lib/cardano-wallet/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./component"; diff --git a/packages/mesh-svelte/src/lib/common/index.ts b/packages/mesh-svelte/src/lib/common/index.ts deleted file mode 100644 index eea524d65..000000000 --- a/packages/mesh-svelte/src/lib/common/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./types"; diff --git a/packages/mesh-svelte/src/lib/common/types.ts b/packages/mesh-svelte/src/lib/common/types.ts deleted file mode 100644 index e1ad9af62..000000000 --- a/packages/mesh-svelte/src/lib/common/types.ts +++ /dev/null @@ -1,6 +0,0 @@ -export type CardanoWalletButtonProps = { - label?: string; - onConnected?: Function; - isDark?: boolean; - extensions?: number[]; -}; diff --git a/packages/mesh-svelte/src/lib/index.ts b/packages/mesh-svelte/src/lib/index.ts deleted file mode 100644 index 3f3b26d9a..000000000 --- a/packages/mesh-svelte/src/lib/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from "./cardano-wallet-dropdown"; -export * from "./cardano-wallet"; -export * from "./state"; diff --git a/packages/mesh-svelte/src/lib/state/browser-wallet-state.svelte.ts b/packages/mesh-svelte/src/lib/state/browser-wallet-state.svelte.ts deleted file mode 100644 index 82c5729a2..000000000 --- a/packages/mesh-svelte/src/lib/state/browser-wallet-state.svelte.ts +++ /dev/null @@ -1,55 +0,0 @@ -import type { Wallet } from "@meshsdk/core"; -import { BrowserWallet } from "@meshsdk/core"; - -let wallet: BrowserWallet | undefined = $state(); -let name: string | undefined = $state(); -let icon: string | undefined = $state(); -let connecting: boolean = $state(false); -let connected: boolean = $state(false); - -export const BrowserWalletState = { - get wallet() { - return wallet; - }, - get name() { - return name; - }, - get icon() { - return icon; - }, - get connected() { - return connected; - }, - get connecting() { - return connecting; - }, - get connect() { - return connect; - }, - get disconnect() { - return disconnect; - }, -}; - -export async function connect(w: Wallet) { - connecting = true; - try { - wallet = await BrowserWallet.enable(w.id); - name = w.name - .split(" ") - .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()) - .join(" "); - icon = w.icon; - } catch (e) { - console.error(`error while connecting wallet ${w.name}: ${e}`); - } - connecting = false; - connected = true; -} - -export function disconnect() { - wallet = undefined; - name = undefined; - icon = undefined; - connected = false; -} diff --git a/packages/mesh-svelte/src/lib/state/index.ts b/packages/mesh-svelte/src/lib/state/index.ts deleted file mode 100644 index 394e685ba..000000000 --- a/packages/mesh-svelte/src/lib/state/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "../state/browser-wallet-state.svelte"; diff --git a/packages/mesh-svelte/src/styles.css b/packages/mesh-svelte/src/styles.css deleted file mode 100644 index 76fcadcc0..000000000 --- a/packages/mesh-svelte/src/styles.css +++ /dev/null @@ -1,3 +0,0 @@ -@import "tailwindcss/base"; -@import "tailwindcss/components"; -@import "tailwindcss/utilities"; diff --git a/packages/mesh-svelte/svelte.config.js b/packages/mesh-svelte/svelte.config.js deleted file mode 100644 index a8bb58ace..000000000 --- a/packages/mesh-svelte/svelte.config.js +++ /dev/null @@ -1,18 +0,0 @@ -import adapter from "@sveltejs/adapter-auto"; -import { vitePreprocess } from "@sveltejs/vite-plugin-svelte"; - -/** @type {import('@sveltejs/kit').Config} */ -const config = { - // Consult https://svelte.dev/docs/kit/integrations - // for more information about preprocessors - preprocess: vitePreprocess(), - - kit: { - // adapter-auto only supports some environments, see https://svelte.dev/docs/kit/adapter-auto for a list. - // If your environment is not supported, or you settled on a specific environment, switch out the adapter. - // See https://svelte.dev/docs/kit/adapters for more information about adapters. - adapter: adapter(), - }, -}; - -export default config; diff --git a/packages/mesh-svelte/tailwind.config.ts b/packages/mesh-svelte/tailwind.config.ts deleted file mode 100644 index f06df1222..000000000 --- a/packages/mesh-svelte/tailwind.config.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { Config } from "tailwindcss"; - -import sharedConfig from "@meshsdk/configs/tailwind/tailwind.config"; - -const config: Pick = { - content: ["./src/**/*.{html,js,svelte,ts}"], - prefix: "mesh-", - presets: [sharedConfig], -}; - -export default config; diff --git a/packages/mesh-svelte/tsconfig.json b/packages/mesh-svelte/tsconfig.json deleted file mode 100644 index 43447105a..000000000 --- a/packages/mesh-svelte/tsconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "extends": "./.svelte-kit/tsconfig.json", - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true, - "skipLibCheck": true, - "sourceMap": true, - "strict": true, - "moduleResolution": "bundler" - } -} diff --git a/packages/mesh-svelte/vite.config.ts b/packages/mesh-svelte/vite.config.ts deleted file mode 100644 index c6771d269..000000000 --- a/packages/mesh-svelte/vite.config.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { sveltekit } from "@sveltejs/kit/vite"; -import { defineConfig } from "vite"; -import { nodePolyfills } from "vite-plugin-node-polyfills"; -import topLevelAwait from "vite-plugin-top-level-await"; -import wasm from "vite-plugin-wasm"; - -export default defineConfig({ - esbuild: { - target: "es2022", - }, - build: { - target: "es2022", - }, - optimizeDeps: { - esbuildOptions: { - target: "es2022", - }, - }, - plugins: [ - sveltekit(), - wasm(), - topLevelAwait(), - nodePolyfills({ - globals: { Buffer: true, global: true }, - protocolImports: true, - }), - ], -}); diff --git a/packages/midnight-contracts-wizard/.npmignore b/packages/midnight-contracts-wizard/.npmignore deleted file mode 100644 index 81a887999..000000000 --- a/packages/midnight-contracts-wizard/.npmignore +++ /dev/null @@ -1,27 +0,0 @@ -# Source files -src/ - -# Development files -jest.config.ts -tsconfig.json -tsconfig.spec.json - -# Test files -test/ -**/*.test.ts -**/*.spec.ts - -# Documentation -INSTRUCTIONS.md - -# Build artifacts -coverage/ -.nyc_output/ - -# IDE files -.vscode/ -.idea/ - -# OS files -.DS_Store -Thumbs.db diff --git a/packages/midnight-contracts-wizard/LICENSE b/packages/midnight-contracts-wizard/LICENSE deleted file mode 100644 index 27ba53f42..000000000 --- a/packages/midnight-contracts-wizard/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - -Copyright 2023 MeshJS - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/packages/midnight-contracts-wizard/README.md b/packages/midnight-contracts-wizard/README.md deleted file mode 100644 index d6ae2ff40..000000000 --- a/packages/midnight-contracts-wizard/README.md +++ /dev/null @@ -1,67 +0,0 @@ -# Midnight Contracts Wizard - -A CLI tool to create new Midnight contracts projects with selected smart contracts. - -## Installation - -```bash -npm install @meshsdk/midnight-contracts-wizard -``` - -## Usage - -```bash -npx @meshsdk/midnight-contracts-wizard -``` - -## Features - -- **Interactive CLI** - Select which contracts to include -- **Multiple Contract Types** - Tokenization, Staking, Identity, Oracle, Lending & Borrowing -- **Complete Setup** - Generates package.json, tsconfig, and build scripts -- **Ready to Use** - All necessary files for compilation and build -- **Self-Contained** - All contract templates included, no external dependencies - -## Available Contracts - -### Tokenization Contract - -- Complete project tokenization system with ZK privacy investment (7 ZK circuits) - -### Staking Contract - -- Privacy-focused staking system with rewards and lock periods (8 ZK circuits) - -### Identity Contracts - -- Complete identity management system with cryptographic libraries (1 ZK circuit) - -### Oracle Contract - -- Decentralized oracle system with privacy-preserving data feeds (7 ZK circuits) - -### Lending & Borrowing Contract - -- Privacy-preserving decentralized lending protocol (7 ZK circuits) - -## Generated Project Structure - -``` -my-project/ -├── src/ -│ ├── [selected-contracts]/ -│ │ └── *.compact -│ └── managed/ # Compiled contracts -├── dist/ # Distribution -├── package.json -├── tsconfig.json -├── tsconfig.build.json -└── README.md -``` - ---- - -
-

Powered by MeshJS Team

-

Built with ❤️ on Midnight Network

-
diff --git a/packages/midnight-contracts-wizard/contracts/identity/CryptoLibrary.compact b/packages/midnight-contracts-wizard/contracts/identity/CryptoLibrary.compact deleted file mode 100644 index d6bccb7c6..000000000 --- a/packages/midnight-contracts-wizard/contracts/identity/CryptoLibrary.compact +++ /dev/null @@ -1,244 +0,0 @@ -pragma language_version >= 0.16.0; - -module CryptoLibrary { - import CompactStandardLibrary; - - /** - * @dev Point to bytes conversion - * @notice Converts a curve point to a 32-byte hash representation - * @param p The curve point to convert - * @return A 32-byte hash of the curve point - */ - circuit curvePointToBytes(p: CurvePoint): Bytes<32> { - return persistentHash(p); - } - -/** - * @dev 96-byte structure - * @notice Represents a 96-byte value split into three 32-byte segments - * @param b0 First 32-byte segment - * @param b1 Second 32-byte segment - * @param b2 Third 32-byte segment - */ -struct Bytes96 { - b0: Bytes<32>; - b1: Bytes<32>; - b2: Bytes<32>; -} - -/** - * @dev 64-byte structure - * @notice Represents a 64-byte value split into two 32-byte segments - * @param b0 First 32-byte segment - * @param b1 Second 32-byte segment - */ -struct Bytes64 { - b0: Bytes<32>; - b1: Bytes<32>; -} - -/** - * @dev Digital signature structure - * @notice Represents a cryptographic signature for credential verification - * @param pk Public key curve point of the signer - * @param R Random curve point used in signature generation - * @param s Scalar field element completing the signature - */ -export struct Signature { - pk: CurvePoint; - R: CurvePoint; - s: Field; -} - -/** - * @dev Credential subject structure - * @notice Represents a credential subject as defined in the W3C Verifiable Credentials Data Model - * @see - * @param id The subject's identifier (Midnight wallet public key) - * @param firstName The subject's first name (hashed to 32 bytes) - * @param lastName The subject's last name (hashed to 32 bytes) - * @param nationalIdentifier The subject's national identifier (hashed to 32 bytes) - * @param birthTimestamp The subject's birth timestamp in Unix time - */ -export struct CredentialSubject { - id: Bytes<32>; - firstName: Bytes<32>; - lastName: Bytes<32>; - nationalIdentifier: Bytes<32>; - birthTimestamp: Uint<64>; -} - -/** - * @dev Signed credential subject structure - * @notice Represents a credential subject with an issuer's digital signature for verification - * @param subject The credential subject data (identity information) - * @param signature The issuer's digital signature over the credential subject - */ -export struct SignedCredentialSubject { - subject: CredentialSubject; - signature: Signature; -} - -/** - * @dev Subject hash circuit - * @notice Computes a persistent hash of a credential subject for canonical representation - * @param credentialSubject The credential subject to hash - * @return A 32-byte persistent hash of the credential subject - */ -export pure circuit subjectHash(credentialSubject: CredentialSubject): Bytes<32> { - return persistentHash(credentialSubject); -} - -/** - * @dev Derive public key circuit - * @notice Derives a public key curve point from a private key using elliptic curve multiplication - * @param skBytes The 32-byte private key - * @return The corresponding public key as a curve point - */ -export pure circuit derivePk(skBytes: Bytes<32>): CurvePoint { - const sk: Field = 0; //transientHash>(skBytes); - const pk: CurvePoint = ecMulGenerator(sk); - return pk; -} - -/** - * @dev Sign message circuit (original implementation) - * @notice Creates a digital signature over a message using a private key and deterministic nonce - * @param msg The 32-byte message to sign - * @param skBytes The 32-byte private key - * @return A Signature structure containing the public key, random point R, and scalar s - */ -/* -// Original way to sign - export pure circuit sign(msg: Bytes<32>, skBytes: Bytes<32>): Signature { - // Convert skBytes to Field - const sk: Field = transientHash>(skBytes); - // Compute public key: pk = sk * B - const pk: CurvePoint = ecMulGenerator(sk); - - // Derive nonce k deterministically: k = H(skBytes || msg) - const nonceInput: Bytes64 = Bytes64 { b0: skBytes, b1: msg }; - const k: Field = transientHash(nonceInput); // Hash to scalar - - // Compute R = k * B - const R: CurvePoint = ecMulGenerator(k); - - // Compute challenge: c = H(R || pk || msg) - const rBytes: Bytes<32> = curvePointToBytes(R); - const pkBytes: Bytes<32> = curvePointToBytes(pk); - const cBytes: Bytes96 = Bytes96 { - b0: rBytes, - b1: pkBytes, - b2: msg - }; - const c: Field = transientHash(cBytes); - - // Compute signature: s = k + c * sk - const s: Field = k + (c * sk); - - return Signature { pk: pk, R: R, s: s }; -} -*/ - -/** - * @dev Sign message circuit (workaround implementation) - * @notice Creates a digital signature using hardcoded field constants as a temporary workaround - * @param msg The 32-byte message to sign - * @param skBytes The 32-byte private key (currently unused due to workaround) - * @return A Signature structure containing the public key, random point R, and scalar s - * @custom:warning This is a temporary workaround using constant values. Not suitable for production use. - * @custom:issue Awaiting resolution from Midnight team for proper field derivation from bytes - */ -// Workaround way to sign using a Field 2 (not resolved by Midnight team yet) -export pure circuit sign(msg: Bytes<32>, skBytes: Bytes<32>): Signature { - // Use a small, valid constant for demonstration - const sk: Field = 2; // Instead of deriving from skBytes - const pk: CurvePoint = ecMulGenerator(sk); - - // Use another small, valid constant for the nonce - const k: Field = 3; // Instead of deriving from hash - const R: CurvePoint = ecMulGenerator(k); - - const rBytes: Bytes<32> = curvePointToBytes(R); - const pkBytes: Bytes<32> = curvePointToBytes(pk); - const cBytes: Bytes96 = Bytes96 { - b0: rBytes, - b1: pkBytes, - b2: msg - }; - const c: Field = transientHash(cBytes); - - const s: Field = k + (c * sk); - - return Signature { pk: pk, R: R, s: s }; -} - -/** - * @dev Verify signature circuit - * @notice Verifies a digital signature by checking the Schnorr signature equation: s*G = R + c*pk - * @param msg The 32-byte message that was signed - * @param signature The signature structure containing pk, R, and s - * @custom:throws Assertion error if signature verification fails - */ -// Original way to verify the signature -export pure circuit verifySignature(msg: Bytes<32>, signature: Signature): [] { - const {pk, R, s} = signature; - // Compute challenge: c = H(R || pk || msg) - const rBytes: Bytes<32> = curvePointToBytes(R); - const pkBytes: Bytes<32> = curvePointToBytes(pk); - const cBytes: Bytes96 = Bytes96 { - b0: rBytes, - b1: pkBytes, - b2: msg - }; - const c: Field = transientHash(cBytes); - - // Left-hand side: s * B - const lhs: CurvePoint = ecMulGenerator(s); - - // Right-hand side: R + c * pk - const cPk: CurvePoint = ecMul(pk, c); - const rhs: CurvePoint = ecAdd(R, cPk); - - // Enforce verification equation - assert(lhs == rhs, "Signature verification failed"); -} - - /** - * @dev Verify signature circuit (workaround implementation) - * @notice Verifies a digital signature using a hardcoded scalar constant as a temporary workaround - * @param msg The 32-byte message that was signed - * @param signature The signature structure containing pk, R, and s (s component currently unused) - * @custom:warning This is a temporary workaround using a constant value. Not suitable for production use. - * @custom:issue Awaiting resolution from Midnight team for proper signature verification - * @custom:throws Assertion error if signature verification fails - */ -/* - // Workaround way to verify the signature (not resolved by Midnight team yet) - export pure circuit verifySignature(msg: Bytes<32>, signature: Signature): [] { - const {pk, R} = signature; - // Use a constant Field value for demonstration - const s: Field = 2; - - // Compute challenge: c = H(R || pk || msg) - const rBytes: Bytes<32> = curvePointToBytes(R); - const pkBytes: Bytes<32> = curvePointToBytes(pk); - const cBytes: Bytes96 = Bytes96 { - b0: rBytes, - b1: pkBytes, - b2: msg - }; - const c: Field = transientHash(cBytes); - - // Left-hand side: s * B - const lhs: CurvePoint = ecMulGenerator(s); - - // Right-hand side: R + c * pk - const cPk: CurvePoint = ecMul(pk, c); - const rhs: CurvePoint = ecAdd(R, cPk); - - // Enforce verification equation - assert(lhs == rhs, "Signature verification failed"); - } - */ -} diff --git a/packages/midnight-contracts-wizard/contracts/identity/IdentityLibrary.compact b/packages/midnight-contracts-wizard/contracts/identity/IdentityLibrary.compact deleted file mode 100644 index 2b00446b5..000000000 --- a/packages/midnight-contracts-wizard/contracts/identity/IdentityLibrary.compact +++ /dev/null @@ -1,25 +0,0 @@ -pragma language_version >= 0.16.0; - -import CompactStandardLibrary; -import "../identity/CryptoLibrary"; - -/** - * @dev Exported types and functions - * @notice Makes cryptographic primitives and identity types available to external consumers - * - CoinInfo: Coin information structure for token handling - * - Signature: Digital signature type for credential verification - * - CredentialSubject: Structure representing credential subject data - * - SignedCredentialSubject: Credential subject with issuer signature - * - sign: Function to create digital signatures - * - verifySignature: Function to verify digital signatures - * - derivePk: Function to derive public key from private key - * - subjectHash: Function to hash credential subject data - */ -export { CoinInfo } -export { Signature } -export { CredentialSubject } -export { SignedCredentialSubject } -export { sign } -export { verifySignature } -export { derivePk } -export { subjectHash } \ No newline at end of file diff --git a/packages/midnight-contracts-wizard/contracts/identity/registry.compact b/packages/midnight-contracts-wizard/contracts/identity/registry.compact deleted file mode 100644 index 1c95afd29..000000000 --- a/packages/midnight-contracts-wizard/contracts/identity/registry.compact +++ /dev/null @@ -1,31 +0,0 @@ -pragma language_version >= 0.16.0; - -import CompactStandardLibrary; - -/** - * @dev Exported types - * @notice Makes CurvePoint available to external consumers for signature verification - */ -export { CurvePoint } - -/** - * @dev Wallet public key - * @notice Stores the user's Zswap coin public key for receiving payments - */ -export ledger walletPublicKey: ZswapCoinPublicKey; - -/** - * @dev Signing public key - * @notice Stores the user's signing public key for credential verification - */ -export ledger signingPublicKey: CurvePoint; - -/** - * @dev Register user circuit - * @notice Allows users to register their wallet and signing public keys on-chain - * @param signingKey The user's public signing key for credential verification - */ -export circuit register(signingKey: CurvePoint): [] { - walletPublicKey = ownPublicKey(); - signingPublicKey = disclose(signingKey); -} \ No newline at end of file diff --git a/packages/midnight-contracts-wizard/contracts/lending-borrowing/lending-borrowing.compact b/packages/midnight-contracts-wizard/contracts/lending-borrowing/lending-borrowing.compact deleted file mode 100644 index d5331f4a6..000000000 --- a/packages/midnight-contracts-wizard/contracts/lending-borrowing/lending-borrowing.compact +++ /dev/null @@ -1,491 +0,0 @@ -pragma language_version >= 0.16.0; - -import CompactStandardLibrary; - -/** - * @dev Total borrowed by asset - * @notice Maps asset types (coin colors) to the total amount currently borrowed from the lending pool - */ -export ledger totalBorrowedByAsset: Map, Uint<128>>; - -/** - * @dev Total supplied by asset - * @notice Maps asset types (coin colors) to the total amount currently supplied to the lending pool - */ -export ledger totalSuppliedByAsset: Map, Uint<128>>; - -/** - * @dev Supply positions registry - * @notice Merkle tree storing anonymous supply position commitments for lenders - * @custom:privacy Allows lenders to prove their supply positions without revealing identity - */ -export ledger supplyPositions: MerkleTree<100, Bytes<32>>; - -/** - * @dev Collateral positions registry - * @notice Merkle tree storing anonymous collateral position commitments for borrowers - * @custom:privacy Allows borrowers to prove their collateral positions without revealing identity - */ -export ledger collateralPositions: MerkleTree<100, Bytes<32>>; - -/** - * @dev Lending pool - * @notice Maps asset types (coin colors) to their qualified coin information for lending operations - * @custom:usage Stores available liquidity that can be borrowed by users - */ -export ledger lendingPool: Map, QualifiedCoinInfo>; - -/** - * @dev Collateral pool - * @notice Maps position commitments to their qualified coin information for collateral management - * @custom:usage Stores collateral deposited by borrowers to secure their loans - */ -export ledger collateralPool: Map, QualifiedCoinInfo>; - -/** - * @dev Interest rate model - * @notice Maps asset types (coin colors) to their current interest rates in basis points - * @custom:usage Used to determine borrowing costs and lending yields based on pool utilization - */ -export ledger interestRateModel: Map, Uint<64>>; - -/** - * @dev Current interest rate - * @notice Stores the current global interest rate in basis points - * @custom:usage Used to calculate interest accrual for supply and borrow positions - */ -export ledger interestRate: Uint<64>; - -/** - * @dev Collateral position structure - * @notice Represents a user's collateral position with privacy-preserving commitments - * @param userCommitment Anonymous user identifier (commitment hash) - * @param collateralCommitment Commitment to the collateral amount (keeps amount private) - * @param debtCommitment Commitment to the debt amount (keeps amount private) - * @param assetType Type of collateral asset (coin color) - * @param timestamp Unix timestamp when the position was created - */ -struct CollateralPosition { - userCommitment: Bytes<32>; - collateralCommitment: Bytes<32>; - debtCommitment: Bytes<32>; - assetType: Bytes<32>; - timestamp: Uint<64>; -} - -/** - * @dev Supply position structure - * @notice Represents a user's supply position with privacy-preserving commitments - * @param userCommitment Anonymous user identifier (commitment hash) - * @param supplyCommitment Commitment to the supply amount (keeps amount private) - * @param assetType Type of asset supplied (coin color) - * @param timestamp Unix timestamp when the position was created - */ -struct SupplyPosition { - userCommitment: Bytes<32>; - supplyCommitment: Bytes<32>; - assetType: Bytes<32>; - timestamp: Uint<64>; -} - -/** - * @dev Verify collateral ownership witness - * @notice Proves that the user owns the collateral being deposited - * @param amount The collateral amount to verify ownership for - * @return Boolean indicating whether the user owns the specified collateral amount - */ -witness verifyCollateralOwnership(amount: Uint<128>): Boolean; - -/** - * @dev Verify health factor witness - * @notice Proves that a position maintains the required collateral ratio privately - * @param collateralProof The commitment to the collateral position - * @param borrowAmount The amount being borrowed or already borrowed - * @param price The oracle price for collateral valuation - * @return Boolean indicating whether the health factor requirement is met - */ -witness verifyHealthFactor(collateralProof: Bytes<32>, borrowAmount: Uint<128>, price: Uint<128>): Boolean; - -/** - * @dev Verify liquidation eligibility witness - * @notice Proves that a position is undercollateralized and eligible for liquidation - * @param liquidationProof The proof that the position is undercollateralized - * @return Boolean indicating whether the position can be liquidated - */ -witness verifyLiquidationEligibility(liquidationProof: Bytes<32>): Boolean; - -/** - * @dev Calculate liquidation bonus witness - * @notice Computes the liquidation bonus (incentive) for liquidators - * @param repaymentAmount The amount being repaid by the liquidator - * @return The liquidation bonus amount to be awarded to the liquidator - */ -witness calculateLiquidationBonus(repaymentAmount: Uint<128>): Uint<128>; - -/** - * @dev Update or remove position witness - * @notice Updates or removes a collateral position after liquidation - * @param positionCommitment The commitment to the position being updated or removed - * @return Empty tuple (no return value) - */ -witness updateOrRemovePosition(positionCommitment: Bytes<32>): []; - -/** - * @dev Update debt commitment witness - * @notice Updates the debt commitment after a repayment or borrowing operation - * @param positionCommitment The commitment to the position being updated - * @param repaymentAmount The amount being repaid (reduces debt) or borrowed (increases debt) - * @return The new debt commitment hash - */ -witness updateDebtCommitment(positionCommitment: Bytes<32>, repaymentAmount: Uint<128>): Bytes<32>; - -/** - * @dev Mark position repaid witness - * @notice Marks a position as fully repaid, allowing collateral withdrawal - * @param positionCommitment The commitment to the position being marked as repaid - * @return Empty tuple (no return value) - */ -witness markPositionRepaid(positionCommitment: Bytes<32>): []; - -/** - * @dev Update collateral commitment witness - * @notice Updates the collateral commitment after a withdrawal operation - * @param positionCommitment The commitment to the position being updated - * @param withdrawAmount The amount being withdrawn from collateral - * @return The new collateral commitment hash - */ -witness updateCollateralCommitment(positionCommitment: Bytes<32>, withdrawAmount: Uint<128>): Bytes<32>; - -/** - * @dev Generate user commitment witness - * @notice Creates an anonymous user identifier from a secret key - * @param secretKey The user's secret key - * @return A commitment hash representing the user anonymously - */ -witness generateUserCommitment(secretKey: Bytes<32>): Bytes<32>; - -/** - * @dev Calculate utilization rate witness - * @notice Computes the pool utilization rate as (borrowed / supplied) * 10000 - * @param totalBorrowed Total amount currently borrowed from the pool - * @param totalSupplied Total amount currently supplied to the pool - * @return The utilization rate in basis points (0-10000) - */ -witness calculateUtilizationRate(totalBorrowed: Uint<128>, totalSupplied: Uint<128>): Uint<64>; - -/** - * @dev Apply interest rate model witness - * @notice Calculates the interest rate based on the utilization rate using the protocol's rate model - * @param utilizationRate The current pool utilization rate in basis points - * @return The calculated interest rate in basis points - */ -witness applyInterestRateModel(utilizationRate: Uint<64>): Uint<64>; - -/** - * @dev Get secret key witness - * @notice Provides the caller's secret key for commitment generation and ownership verification - * @return The caller's 32-byte secret key - */ -witness getSecretKey(): Bytes<32>; - -/** - * @dev Get randomness witness - * @notice Provides random bytes for commitment generation to ensure uniqueness - * @return A 32-byte random value for cryptographic commitments - */ -witness getRandomness(): Bytes<32>; - -/** - * @dev Get current time witness - * @notice Provides the current timestamp for recording position creation and updates - * @return The current Unix timestamp in seconds - */ -witness getCurrentTime(): Uint<64>; - -/** - * @dev Verify position ownership witness - * @notice Proves that the caller owns the specified position - * @param positionCommitment The commitment to the position being verified - * @return Boolean indicating whether the caller owns the position - */ -witness verifyPositionOwnership(positionCommitment: Bytes<32>): Boolean; - -/** - * @dev Verify health factor after withdrawal witness - * @notice Proves that a position maintains the required collateral ratio after a withdrawal - * @param positionCommitment The commitment to the position being verified - * @param withdrawAmount The amount to be withdrawn from collateral - * @return Boolean indicating whether the health factor remains sufficient after withdrawal - */ -witness verifyHealthFactorAfterWithdrawal(positionCommitment: Bytes<32>, withdrawAmount: Uint<128>): Boolean; - -/** - * @dev Find collateral position witness - * @notice Provides the Merkle tree path for a collateral position's authorization proof - * @param positionCommitment The commitment to the collateral position - * @return The Merkle tree path proving the position exists in the collateral positions tree - */ -witness findCollateralPosition(positionCommitment: Bytes<32>): MerkleTreePath<100, Bytes<32>>; - -/** - * @dev Find supply position witness - * @notice Provides the Merkle tree path for a supply position's authorization proof - * @param userCommitment The user's commitment hash - * @return The Merkle tree path proving the position exists in the supply positions tree - */ -witness findSupplyPosition(userCommitment: Bytes<32>): MerkleTreePath<100, Bytes<32>>; - -/** - * @dev Reduce debt commitment witness - * @notice Updates the debt commitment after a repayment, reducing the debt amount - * @param positionCommitment The commitment to the position being updated - * @param repaymentAmount The amount being repaid to reduce the debt - * @return The new debt commitment hash after reduction - */ -witness reduceDebtCommitment(positionCommitment: Bytes<32>, repaymentAmount: Uint<128>): Bytes<32>; - -/** - * @dev Get private oracle data witness - * @notice Provides oracle data privately for zero-knowledge proof generation - * @param dataKey The identifier for the oracle data feed - * @return The oracle data value (kept private) - */ -witness getPrivateOracleData(dataKey: Bytes<32>): Uint<128>; - -/** - * @dev Get current debt witness - * @notice Retrieves the current debt amount for a position - * @param positionCommitment The commitment to the position - * @return The current debt amount - */ -witness getCurrentDebt(positionCommitment: Bytes<32>): Uint<128>; - -/** - * @dev Deposit collateral circuit - * @notice Allows users to deposit collateral anonymously with ZK proof of ownership - * @param collateralCoin The coin to deposit as collateral - * @param collateralAmount The amount being deposited (kept private) - */ -export circuit depositCollateral( - collateralCoin: CoinInfo, - collateralAmount: Uint<128> -): [] { - // Verify coin ownership and amount privately - assert(verifyCollateralOwnership(collateralAmount), "Invalid collateral"); - - // Receive the collateral - receive(disclose(collateralCoin)); - - // Create anonymous position commitment - const userCommit = generateUserCommitment(disclose(getSecretKey())); - const collateralCommit = persistentCommit>(disclose(collateralAmount), disclose(getRandomness())); - - // Store position anonymously in Merkle tree with explicit disclosure - const position = CollateralPosition { - userCommitment: userCommit, - collateralCommitment: collateralCommit, - debtCommitment: persistentCommit>(0 as Uint<128>, disclose(getRandomness())), - assetType: disclose(collateralCoin.color), - timestamp: disclose(getCurrentTime()) - }; - - collateralPositions.insert(disclose(userCommit)); -} - -/** - * @dev Borrow circuit - * @notice Allows users to borrow against collateral while proving health factor privately - * @param borrowAmount The amount to borrow (kept private) - * @param collateralProof ZK proof of sufficient collateral - * @param priceKey Oracle price feed identifier - */ -export circuit borrow( - borrowAmount: Uint<128>, - collateralProof: Bytes<32>, - priceKey: Bytes<32> -): [] { - // Verify user has sufficient collateral using ZK proof - const path = disclose(findCollateralPosition(collateralProof)); - assert(collateralPositions.checkRoot(merkleTreePathRoot<100, Bytes<32>>(path)), - "Invalid collateral position"); - - // Get oracle price privately - const price = getPrivateOracleData(disclose(priceKey)); - - // Verify health factor privately - assert(verifyHealthFactor(collateralProof, disclose(borrowAmount), price), - "Insufficient collateral ratio"); - - // Update debt commitment - const newDebtCommit = updateDebtCommitment(collateralProof, disclose(borrowAmount)); - - // Send borrowed funds to user - const sendResult = send( - lendingPool.lookup(disclose(priceKey)), // Now returns QualifiedCoinInfo - left(ownPublicKey()), - disclose(borrowAmount) - ); - - // Update lending pool balance with change - sendResult.change.is_some ? - lendingPool.insertCoin(disclose(priceKey), sendResult.change.value, right(kernel.self())) : - lendingPool.remove(disclose(priceKey)); -} - -/** - * @dev Liquidate position circuit - * @notice Allows liquidators to liquidate undercollateralized positions with ZK proof - * @param positionCommitment The commitment to the position being liquidated - * @param liquidationProof ZK proof that position is undercollateralized - * @param repaymentCoin Coin to repay the debt - */ -export circuit liquidatePosition( - positionCommitment: Bytes<32>, - liquidationProof: Bytes<32>, - repaymentCoin: CoinInfo -): [] { - // Verify position exists - const path = disclose(findCollateralPosition(positionCommitment)); - assert(collateralPositions.checkRoot(merkleTreePathRoot<100, Bytes<32>>(path)), - "Position not found"); - - // Verify position is undercollateralized using ZK proof - assert(verifyLiquidationEligibility(liquidationProof), - "Position is not eligible for liquidation"); - - // Receive repayment - receive(disclose(repaymentCoin)); - - // Calculate liquidation bonus (e.g., 5%) - const liquidationBonus = calculateLiquidationBonus(disclose(repaymentCoin.value)); - - // Transfer collateral to liquidator (with explicit disclosure) - const collateralToTransfer = (disclose(repaymentCoin.value) + liquidationBonus) as Uint<128>; - - const sendResult = send( - collateralPool.lookup(disclose(positionCommitment)), - left(ownPublicKey()), - disclose(collateralToTransfer) // Add disclose() here - ); - - // Update or remove position - updateOrRemovePosition(positionCommitment); -} - -/** - * @dev Repay debt circuit - * @notice Allows users to repay their debt partially or fully - * @param positionCommitment The commitment to the user's position - * @param repaymentCoin The coin used for repayment - * @param repaymentAmount The amount being repaid (kept private) - */ -export circuit repayDebt( - positionCommitment: Bytes<32>, - repaymentCoin: CoinInfo, - repaymentAmount: Uint<128> -): [] { - // Verify position ownership - const path = disclose(findCollateralPosition(positionCommitment)); - assert(collateralPositions.checkRoot(merkleTreePathRoot<100, Bytes<32>>(path)), - "Position not found"); - - // Verify user owns this position - assert(verifyPositionOwnership(positionCommitment), "Not position owner"); - - // Receive repayment - receive(disclose(repaymentCoin)); - - // Get current debt amount via witness - const currentDebt = getCurrentDebt(positionCommitment); - - // Calculate new debt - const newDebt = currentDebt - disclose(repaymentAmount); - - // Update debt commitment - const newDebtCommit = persistentCommit>(newDebt, disclose(getRandomness())); - - // If fully repaid, allow collateral withdrawal - if (newDebt == 0 as Uint<128>) { - // Mark position as repaid, allowing collateral withdrawal - markPositionRepaid(positionCommitment); - } -} - -/** - * @dev Withdraw collateral circuit - * @notice Allows users to withdraw collateral while maintaining health factor - * @param positionCommitment The commitment to the user's position - * @param withdrawAmount The amount to withdraw (kept private) - */ -export circuit withdrawCollateral( - positionCommitment: Bytes<32>, - withdrawAmount: Uint<128> -): [] { - // Verify position ownership - assert(verifyPositionOwnership(positionCommitment), "Not position owner"); - - // Verify withdrawal maintains health factor - assert(verifyHealthFactorAfterWithdrawal(positionCommitment, disclose(withdrawAmount)), - "Withdrawal would violate health factor"); - - // Send collateral to user - const sendResult = send( - collateralPool.lookup(disclose(positionCommitment)), - left(ownPublicKey()), - disclose(withdrawAmount) - ); - - // Update collateral commitment - updateCollateralCommitment(positionCommitment, disclose(withdrawAmount)); -} - -/** - * @dev Supply to lending pool circuit - * @notice Allows users to supply assets to earn interest - * @param supplyCoin The coin to supply to the pool - * @param supplyAmount The amount being supplied - */ -export circuit supplyToPool( - supplyCoin: CoinInfo, - supplyAmount: Uint<128> -): [] { - // Receive supply - receive(disclose(supplyCoin)); - - // Create supply position commitment - const userCommit = generateUserCommitment(disclose(getSecretKey())); - const supplyCommit = persistentCommit>(disclose(supplyAmount), disclose(getRandomness())); - - // Store supply position - const supplyPosition = SupplyPosition { - userCommitment: userCommit, - supplyCommitment: supplyCommit, - assetType: disclose(supplyCoin.color), - timestamp: disclose(getCurrentTime()) - }; - - supplyPositions.insert(disclose(userCommit)); - - // Update total supplied (cast to Uint<128>) - const currentTotal = totalSuppliedByAsset.lookup(disclose(supplyCoin.color)); - totalSuppliedByAsset.insert(disclose(supplyCoin.color), (currentTotal + disclose(supplyAmount)) as Uint<128>); -} - -/** - * @dev Calculate interest rate circuit - * @notice Computes the current interest rate based on pool utilization - * @param assetType The asset type (coin color) to calculate interest rate for - * @return The current interest rate in basis points - */ -export circuit calculateInterestRate(assetType: Bytes<32>): Uint<64> { - const totalBorrowed = totalBorrowedByAsset.lookup(disclose(assetType)); - const totalSupplied = totalSuppliedByAsset.lookup(disclose(assetType)); - - // Calculate utilization rate using witness function - const utilizationRate = calculateUtilizationRate(totalBorrowed, totalSupplied); - - // Apply interest rate model - const interestRate = applyInterestRateModel(disclose(utilizationRate)); - - return disclose(interestRate); -} \ No newline at end of file diff --git a/packages/midnight-contracts-wizard/contracts/oracle/oracle.compact b/packages/midnight-contracts-wizard/contracts/oracle/oracle.compact deleted file mode 100644 index c84f0bbfa..000000000 --- a/packages/midnight-contracts-wizard/contracts/oracle/oracle.compact +++ /dev/null @@ -1,278 +0,0 @@ -pragma language_version >= 0.16.0; - -import CompactStandardLibrary; - -/** - * @dev Trusted oracle operator registry - * @notice Merkle tree storing authorized oracle operator commitments for privacy-preserving authorization - */ -export ledger authorizedOperators: MerkleTree<100, Bytes<32>>; - -/** - * @dev Oracle address - * @notice Stores the address of the trusted oracle for signature verification - */ -export ledger oracleAddress: Uint<32>; - -/** - * @dev Oracle data value - * @notice Stores the current value updated by the oracle - */ -export ledger dataValue: Uint<64>; - -/** - * @dev Oracle feeds registry - * @notice Maps data keys to their latest oracle data points with metadata - */ -export ledger oracleFeeds: Map, OracleDataPoint>; - -/** - * @dev Authorized auditors registry - * @notice Merkle tree storing authorized auditor commitments for compliance and oversight - */ -export ledger authorizedAuditors: MerkleTree<100, Bytes<32>>; - -/** - * @dev Contract owner - * @notice Stores the contract owner's public key for administrative functions - */ -export ledger owner: Bytes<32>; - -/** - * @dev Oracle data point structure - * @notice Represents a single oracle data submission with value, timestamp, and operator metadata - * @param value The oracle data value (e.g., price, rate, or other metric) - * @param timestamp Unix timestamp when the data was submitted - * @param operator Commitment hash of the operator who submitted the data - */ -struct OracleDataPoint { - value: Uint<128>; - timestamp: Uint<64>; - operator: Bytes<32>; -} - -/** - * @dev Constructor - * @notice Initializes the oracle contract with the trusted oracle address - * @param oracle The address of the trusted oracle for signature verification - */ -constructor(oracle: Uint<32>) { - oracleAddress = disclose(oracle); - dataValue = 0; // Initialize with a default value -} - -/** - * @dev Verify signature witness - * @notice Verifies a digital signature against data and oracle address - * @param signature The 64-byte signature to verify - * @param data The 32-byte data that was signed - * @param oracleAddress The oracle's address for verification - * @return Boolean indicating whether the signature is valid - */ -witness verifySignature(signature: Bytes<64>, data: Bytes<32>, oracleAddress: Uint<32>): Boolean; - -/** - * @dev Hash data witness - * @notice Computes a hash of the provided value for signature verification - * @param newValue The value to hash - * @return A 32-byte hash of the input value - */ -witness hashData(newValue: Uint<64>): Bytes<32>; - -/** - * @dev Get private oracle data witness - * @notice Provides oracle data privately for zero-knowledge proof generation - * @param dataKey The identifier for the data feed - * @return The oracle data value (kept private) - */ -witness getPrivateOracleData(dataKey: Bytes<32>): Uint<128>; - -/** - * @dev Validate data freshness witness - * @notice Checks if oracle data is recent enough for use - * @param dataKey The data feed identifier - * @param maxAge Maximum acceptable age in seconds - * @return Boolean indicating whether the data is fresh enough - */ -witness validateDataFreshness(dataKey: Bytes<32>, maxAge: Uint<64>): Boolean; - -/** - * @dev Find operator witness - * @notice Provides the Merkle tree path for an operator's authorization proof - * @param operatorCommitment The operator's commitment hash - * @return The Merkle tree path proving the operator is authorized - */ -witness findOperator(operatorCommitment: Bytes<32>): MerkleTreePath<100, Bytes<32>>; - -/** - * @dev Get current time witness - * @notice Provides the current timestamp for recording updates and freshness checks - * @return The current Unix timestamp in seconds - */ -witness getCurrentTime(): Uint<64>; - -/** - * @dev Find auditor witness - * @notice Provides the Merkle tree path for an auditor's authorization proof - * @param auditorCommitment The auditor's commitment hash - * @return The Merkle tree path proving the auditor is authorized - */ -witness findAuditor(auditorCommitment: Bytes<32>): MerkleTreePath<100, Bytes<32>>; - -/** - * @dev Get secret key witness - * @notice Provides the caller's secret key for owner verification - * @return The caller's 32-byte secret key - */ -witness getSecretKey(): Bytes<32>; - -/** - * @dev Register oracle operator circuit - * @notice Allows the contract owner to register a new authorized oracle operator - * @param operatorCommitment Hash commitment of the operator's credentials - */ -export circuit registerOperator(operatorCommitment: Bytes<32>): [] { - // Verify caller is contract owner - const callerPk = persistentHash>(disclose(getSecretKey())); - assert(owner == callerPk, "Only owner can register operators"); - - authorizedOperators.insert(disclose(operatorCommitment)); -} - -/** - * @dev Submit oracle data circuit - * @notice Allows authorized operators to submit oracle data with cryptographic proof of authorization - * @param dataKey Identifier for the data feed (e.g., price pair, metric name) - * @param dataValue The oracle data value to store - * @param timestamp Unix timestamp when the data was observed - * @param operatorProof The operator's commitment hash for authorization verification - */ -export circuit submitOracleData( - dataKey: Bytes<32>, - dataValue: Uint<128>, - timestamp: Uint<64>, - operatorProof: Bytes<32> -): [] { - // Verify operator is authorized using Merkle proof - const path = disclose(findOperator(operatorProof)); - assert(authorizedOperators.checkRoot(merkleTreePathRoot<100, Bytes<32>>(path)), - "Unauthorized oracle operator"); - - // Create the OracleDataPoint struct - const dataPoint = OracleDataPoint { - value: disclose(dataValue), - timestamp: disclose(timestamp), - operator: disclose(operatorProof) - }; - - // Insert the complete struct into the map - oracleFeeds.insert(disclose(dataKey), dataPoint); -} - -/** - * @dev Get oracle data circuit - * @notice Retrieves the current oracle data value with freshness validation - * @param dataKey The identifier for the data feed to retrieve - * @param maxAge Maximum acceptable age in seconds for the data to be considered valid - * @return The current oracle data value if it passes freshness checks - */ -export circuit getOracleData(dataKey: Bytes<32>, maxAge: Uint<64>): Uint<128> { - assert(oracleFeeds.member(disclose(dataKey)), "Oracle data not found"); - - const dataPoint = oracleFeeds.lookup(disclose(dataKey)); - - // Verify data freshness - const currentTime = disclose(getCurrentTime()); - assert(currentTime - dataPoint.timestamp <= disclose(maxAge), "Oracle data is stale"); - - // Return only the value - return dataPoint.value; -} - -/** - * @dev Verify oracle condition circuit - * @notice Proves that oracle data meets a threshold condition without revealing the actual value - * @param dataKey The identifier for the data feed to verify - * @param threshold The threshold value to compare against - * @return Boolean indicating whether the oracle value meets or exceeds the threshold - */ -export circuit verifyOracleCondition( - dataKey: Bytes<32>, - threshold: Uint<128> -): Boolean { - const oracleValue = getPrivateOracleData(disclose(dataKey)); - return disclose(oracleValue) >= disclose(threshold); -} - -/** - * @dev Check collateral ratio circuit - * @notice Verifies that collateral value meets the required ratio (150%) without revealing exact amounts - * @param collateralAmount The amount of collateral held (kept private) - * @param debtAmount The amount of debt owed (kept private) - * @param priceKey The identifier for the price feed to use in valuation - * @return Boolean indicating whether the collateral ratio requirement is met - */ -export circuit checkCollateralRatio( - collateralAmount: Uint<128>, - debtAmount: Uint<128>, - priceKey: Bytes<32> -): Boolean { - const price = getPrivateOracleData(disclose(priceKey)); - - // Calculate collateral value and required collateral (150% ratio) - const collateralValue = (disclose(collateralAmount) as Field) * (disclose(price) as Field); - const requiredCollateral = (disclose(debtAmount) as Field) * (150 as Field); - - return (collateralValue as Uint<128>) >= (requiredCollateral as Uint<128>); -} - -/** - * @dev Register auditor circuit - * @notice Allows the contract owner to register a new authorized auditor for compliance oversight - * @param auditorCommitment Hash commitment of the auditor's credentials - */ -export circuit registerAuditor(auditorCommitment: Bytes<32>): [] { - // Verify caller is contract owner - const callerPk = persistentHash>(disclose(getSecretKey())); - assert(owner == callerPk, "Only owner can register auditors"); - - authorizedAuditors.insert(disclose(auditorCommitment)); -} - -/** - * @dev Disclose oracle data to auditor circuit - * @notice Allows authorized auditors to access oracle data for compliance and oversight purposes - * @param dataKey The identifier for the data feed to disclose - * @param auditorKey The auditor's public key or commitment hash - * @return The complete oracle data point including value, timestamp, and operator information - */ -export circuit discloseToAuditor( - dataKey: Bytes<32>, - auditorKey: Bytes<32> -): OracleDataPoint { - // Verify auditor is authorized using Merkle proof - const path = disclose(findAuditor(disclose(auditorKey))); - assert(authorizedAuditors.checkRoot(merkleTreePathRoot<100, Bytes<32>>(path)), - "Unauthorized auditor"); - - // Verify the data exists - assert(oracleFeeds.member(disclose(dataKey)), "Oracle data not found"); - - // Retrieve and return the oracle data - const dataPoint = oracleFeeds.lookup(disclose(dataKey)); - return dataPoint; -} - -/** - * @dev Update oracle value circuit - * @notice Allows a trusted oracle to update the data value with cryptographic signature verification - * @param newValue The new oracle data value to store - * @param signature The oracle's 64-byte signature over the combined data and value - * @param data The 32-byte data context (e.g., data feed identifier) for the update - */ -export circuit updateValue(newValue: Uint<64>, signature: Bytes<64>, data: Bytes<32>): [] { - // Hash both the data context and new value for signature verification - const message = persistentHash<[Bytes<32>, Uint<64>]>([disclose(data), disclose(newValue)]); - assert(verifySignature(disclose(signature), message, oracleAddress), "Invalid signature"); - dataValue = disclose(newValue); -} diff --git a/packages/midnight-contracts-wizard/contracts/staking/staking.compact b/packages/midnight-contracts-wizard/contracts/staking/staking.compact deleted file mode 100644 index ef32d6216..000000000 --- a/packages/midnight-contracts-wizard/contracts/staking/staking.compact +++ /dev/null @@ -1,332 +0,0 @@ -pragma language_version >= 0.16.0; - -import CompactStandardLibrary; - -// ======================= -// Enums -// ======================= - -/** - * @dev Staking status for users - * @notice Defines the possible states a user can be in regarding their staking position - * - NotStaked: User has no active stake - * - Staked: User has an active stake that can be unstaked - * - Locked: User's stake is locked and cannot be unstaked until the lock period expires - */ -enum StakingStatus { - NotStaked, - Staked, - Locked -} - -// ======================= -// Ledger State (Public) -// ======================= - -/** - * @dev Total staked supply - * @notice Tracks the total amount of tokens currently staked in the contract - */ -export ledger totalStakedSupply: Uint<64>; - -/** - * @dev Lock period - * @notice Minimum duration (in time units) that tokens must remain staked - */ -export ledger lockPeriod: Uint<64>; - -/** - * @dev Contract owner - * @notice Address of the contract owner who can perform administrative functions - */ -export ledger ownerId: Uint<32>; - -/** - * @dev Transaction counter - * @notice Increments with each state-changing operation to prevent replay attacks - */ -export ledger nonce: Counter; - -/** - * @dev Stake start time - * @notice Stores the timestamp when staking began (public) - */ -export ledger stakeStartTime: Uint<64>; - -/** - * @dev Reward rate value - * @notice Stores the current reward rate for staking calculations - */ -export ledger rewardRateValue: Uint<64>; - -/** - * @dev Staked balances - * @notice Maps each user ID to their total staked token amount - */ -export ledger stakedBalances: Map, Uint<64>>; - -/** - * @dev Reward balances - * @notice Maps each user ID to their accumulated rewards that can be claimed - */ -export ledger rewardBalances: Map, Uint<64>>; - -/** - * @dev User staking status - * @notice Maps each user ID to their current staking status (NotStaked, Staked, or Locked) - */ -export ledger userStatus: Map, StakingStatus>; - - -// ======================= -// Witness State (Private) -// ======================= - -/** - * @dev Private stake start time - * @notice Provides the private stake start time for ZK proof generation - */ -witness getStakeStartTime(): Uint<64>; - -/** - * @dev Private reward rate - * @notice Provides the private reward rate for ZK proof generation - */ -witness getRewardRate(): Uint<64>; - -/** - * @dev Private balance - * @notice Provides the private balance for ZK proof generation - */ -witness getBalance(): Uint<64>; - -// ======================= -// Constructor -// ======================= - -/** - * @dev Constructor - * @notice Initializes the staking contract with the owner ID, lock period, and reward rate - * @param initialOwnerId The address of the contract owner who can perform administrative functions - * @param initialLockPeriod The minimum duration (in time units) that tokens must remain staked - * @param initialRewardRate The initial reward rate for staking calculations - */ -constructor(initialOwnerId: Uint<32>, initialLockPeriod: Uint<64>, initialRewardRate: Uint<64>) { - totalStakedSupply = 0; - lockPeriod = disclose(initialLockPeriod); - ownerId = disclose(initialOwnerId); - rewardRateValue = disclose(initialRewardRate); -} - -// ======================= -// Witness Functions (For ZK Proofs) -// ======================= - -/** - * @dev Private check to ensure lock-up period has passed - * @notice Verifies if the lock-up period has passed for a given user - * @param stakerId The ID of the staker to check - * @param currentTime The current timestamp to compare against - * @return Boolean indicating whether the lock-up period has passed - */ -witness checkLockPeriod(stakerId: Uint<32>, currentTime: Uint<64>): Boolean; - -/** - * @dev Private calculation of accrued rewards - * @notice Calculates the accrued rewards for a given user based on their stake and time - * @param stakerId The ID of the staker - * @param currentTime The current timestamp for reward calculation - * @return The amount of accrued rewards - */ -witness calculateRewards(stakerId: Uint<32>, currentTime: Uint<64>): Uint<64>; - -/** - * @dev Private verification of sufficient funds for staking - * @notice Verifies if the user has sufficient funds to stake the requested amount - * @param stakerId The ID of the staker - * @param amount The amount to be staked - * @return Boolean indicating whether the user has sufficient funds - */ -witness verifyStakeAmount(stakerId: Uint<32>, amount: Uint<64>): Boolean; - -// ======================= -// Circuits (Transition Functions) -// ======================= - -/** - * @dev Stake function - * @notice Allows a user to stake tokens, which are locked for the configured lock period - * @param stakerId The ID of the user staking tokens - * @param amount The amount of tokens to stake - * @param currentTime The current timestamp for recording the stake start time - */ -export circuit stake( - stakerId: Uint<32>, - amount: Uint<64>, - currentTime: Uint<64> -): [] { - // Verify sufficient funds privately - const isValid = verifyStakeAmount(disclose(stakerId), disclose(amount)); - assert(isValid, "Insufficient private token balance"); - - // Update staked balance - const currentStake = stakedBalances.member(disclose(stakerId)) - ? stakedBalances.lookup(disclose(stakerId)) - : 0 as Uint<64>; - - stakedBalances.insert(disclose(stakerId), (currentStake + disclose(amount)) as Uint<64>); - - // Update total supply - totalStakedSupply = (totalStakedSupply + disclose(amount)) as Uint<64>; - - // Update stake start time - stakeStartTime = disclose(currentTime); - - // Update user status to Locked - userStatus.insert(disclose(stakerId), StakingStatus.Locked); - - nonce.increment(1); -} - -/** - * @dev Unstake function - * @notice Allows a user to unstake tokens after the lock period has passed - * @param stakerId The ID of the user unstaking tokens - * @param amount The amount of tokens to unstake - * @param currentTime The current timestamp for verifying the lock period - */ -export circuit unstake( - stakerId: Uint<32>, - amount: Uint<64>, - currentTime: Uint<64> -): [] { - // Check if lock period has passed privately - const isLockPeriodPassed = checkLockPeriod(disclose(stakerId), disclose(currentTime)); - assert(isLockPeriodPassed, "Lock-up period not completed"); - - // Check user has sufficient stake - assert(stakedBalances.member(disclose(stakerId)), "No staked balance found"); - const currentStake = stakedBalances.lookup(disclose(stakerId)); - assert(currentStake >= disclose(amount), "Insufficient staked amount"); - - // Update staked balance - stakedBalances.insert(disclose(stakerId), (currentStake - disclose(amount)) as Uint<64>); - - // Update total supply - totalStakedSupply = (totalStakedSupply - disclose(amount)) as Uint<64>; - - // Update status if balance is zero - if ((currentStake - disclose(amount)) == 0 as Uint<64>) { - userStatus.insert(disclose(stakerId), StakingStatus.NotStaked); - } else { - // Re-lock remaining stake - stakeStartTime = disclose(currentTime); - userStatus.insert(disclose(stakerId), StakingStatus.Locked); - } - - nonce.increment(1); -} - -/** - * @dev Claim rewards function - * @notice Allows a user to claim their accumulated staking rewards - * @param stakerId The ID of the user claiming rewards - * @param currentTime The current timestamp for reward calculation - */ -export circuit claimRewards( - stakerId: Uint<32>, - currentTime: Uint<64> -): [] { - // Calculate rewards privately - const rewardsToClaim = calculateRewards(disclose(stakerId), disclose(currentTime)); - - // Assert that rewards are positive - assert(rewardsToClaim > 0, "No rewards to claim"); - - // Update public reward balance - const currentRewards = rewardBalances.member(disclose(stakerId)) - ? rewardBalances.lookup(disclose(stakerId)) - : 0 as Uint<64>; - - rewardBalances.insert(disclose(stakerId), (currentRewards + disclose(rewardsToClaim)) as Uint<64>); - - nonce.increment(1); -} - -/** - * @dev Update reward rate function - * @notice Updates the global reward rate for all stakers (owner only) - * @param callerId The ID of the caller (must be the contract owner) - * @param newRewardRate The new reward rate to be applied - */ -export circuit updateRewardRate( - callerId: Uint<32>, - newRewardRate: Uint<64> -): [] { - // Access control: Only owner can update the rate - assert(ownerId == disclose(callerId), "Only contract owner can update reward rate"); - - // Update global reward rate - rewardRateValue = disclose(newRewardRate); - - nonce.increment(1); -} - -/** - * @dev Update lock period function - * @notice Updates the global lock period for all stakers (owner only) - * @param callerId The ID of the caller (must be the contract owner) - * @param newLockPeriod The new lock period duration (in time units) - */ -export circuit updateLockPeriod( - callerId: Uint<32>, - newLockPeriod: Uint<64> -): [] { - // Access control: Only owner can update the lock period - assert(ownerId == disclose(callerId), "Only contract owner can update lock period"); - - // Update public lock period - lockPeriod = disclose(newLockPeriod); - - nonce.increment(1); -} - -// ======================= -// Query Functions (Publicly readable ledger state) -// ======================= - -/** - * @dev Query stake function - * @notice Returns the total staked amount for a specified user - * @param stakerId The ID of the user to query - * @return The amount of tokens currently staked by the user, or 0 if no stake exists - */ -export circuit queryStake(stakerId: Uint<32>): Uint<64> { - return stakedBalances.member(disclose(stakerId)) - ? stakedBalances.lookup(disclose(stakerId)) - : 0 as Uint<64>; -} - -/** - * @dev Query rewards function - * @notice Returns the accumulated rewards for a specified user - * @param stakerId The ID of the user to query - * @return The amount of rewards accumulated by the user, or 0 if no rewards exist - */ -export circuit queryRewards(stakerId: Uint<32>): Uint<64> { - return rewardBalances.member(disclose(stakerId)) - ? rewardBalances.lookup(disclose(stakerId)) - : 0 as Uint<64>; -} - -/** - * @dev Query status function - * @notice Returns the current staking status for a specified user - * @param stakerId The ID of the user to query - * @return The user's staking status (NotStaked, Staked, or Locked), or NotStaked if no status exists - */ -export circuit queryStatus(stakerId: Uint<32>): StakingStatus { - return userStatus.member(disclose(stakerId)) - ? userStatus.lookup(disclose(stakerId)) - : StakingStatus.NotStaked; -} diff --git a/packages/midnight-contracts-wizard/contracts/tokenization/TokenizationLibrary.compact b/packages/midnight-contracts-wizard/contracts/tokenization/TokenizationLibrary.compact deleted file mode 100644 index 1dd34a7a5..000000000 --- a/packages/midnight-contracts-wizard/contracts/tokenization/TokenizationLibrary.compact +++ /dev/null @@ -1,23 +0,0 @@ -module TokenizationLibrary { - export {generateOwnersPK, Investor, generateCommit}; - import CompactStandardLibrary; - - struct Investor { - id: Bytes<32>; - investment: Uint<32>; - coinType: Bytes<32>; - }; - - circuit generateOwnersPK(address: Bytes<32>, sk: Bytes<32>, rand: Bytes<32>): Bytes<32>{ - return persistentHash>>([ - pad(32, "tokenless:user"), - persistentHash>>([ - address, sk, rand, - ]) - ]); - } - circuit generateCommit(data: Investor, rand: Bytes<32>): Bytes<32>{ - return persistentCommit(data, rand); - } - -} \ No newline at end of file diff --git a/packages/midnight-contracts-wizard/contracts/tokenization/tokenization.compact b/packages/midnight-contracts-wizard/contracts/tokenization/tokenization.compact deleted file mode 100644 index ff4c9b974..000000000 --- a/packages/midnight-contracts-wizard/contracts/tokenization/tokenization.compact +++ /dev/null @@ -1,362 +0,0 @@ -pragma language_version >= 0.16.0; - -import CompactStandardLibrary; -import TokenizationLibrary; - -/** - * @dev Exported types - * @notice Makes custom project types available to external consumers - * - Project: Represents a crowdfunding project with its details and state - * - ProjectStatus: Enum defining the possible states of a project - */ -export {Project, ProjectStatus}; - -/** - * @dev Project status enumeration - * @notice Defines the possible states a project can be in during its lifecycle - * - Active: Project is currently accepting investments - * - Withdrawn: Project has been withdrawn by the creator - * - Closed: Project has reached its goal or deadline and is no longer accepting investments - */ -enum ProjectStatus { - Active, - Withdrawn, - Closed -} - -/** - * @dev Protocol total value locked - * @notice Maps coin types to their qualified coin information, tracking all coins deposited into the protocol - */ -export ledger protocolTVL: Map, QualifiedCoinInfo>; - -/** - * @dev Projects registry - * @notice Maps project IDs to their project data, storing all projects created on-chain - */ -export ledger projects: Map, Project>; - -/** - * @dev Investor commitments - * @notice Merkle tree storing investor commitment hashes anonymously using zero-knowledge proofs - */ -export ledger investors: MerkleTree<100, Bytes<32>>; - - -/** - * @dev Project structure - * @notice Represents a crowdfunding project with all its details and current state - * @param id Unique identifier for the project - * @param title Project title (opaque string) - * @param desc Project description (opaque string) - * @param owner Address of the project owner/creator - * @param investmentGoal Target funding goal for the project - * @param raised Total amount raised so far - * @param investors Number of investors who have contributed - * @param duration Project duration in time units - * @param creationDate Timestamp when the project was created - * @param status Current status of the project (Active, Withdrawn, or Closed) - * @param coinType Type of coin accepted for investments - */ -struct Project { - id: Bytes<32>; - title: Opaque<"string">; - desc: Opaque<"string">; - owner: Bytes<32>; - investmentGoal: Uint<128>; - raised: Uint<128>; - investors: Uint<128>; - duration: Uint<128>; - creationDate: Uint<128>; - status: ProjectStatus; - coinType: Bytes<32>; -} - -/** - * @dev Local secret key witness - * @notice Provides the user's private secret key for generating commitments and identifiers - * @return The user's 32-byte secret key - */ -witness localSecretKey(): Bytes<32>; - -/** - * @dev Project expiration check witness - * @notice Verifies whether a project has expired based on its duration and start date - * @param duration The project's duration in time units - * @param startDate The timestamp when the project was created - * @return Boolean indicating whether the project is still valid (false if expired) - */ -witness confirmProjectExpiration(duration: Uint<128>, startDate: Uint<128>): Boolean; - -/** - * @dev Investor commitment proof witness - * @notice Finds the Merkle tree path for an investor's commitment hash to prove their investment anonymously - * @param commitment The investor's commitment hash - * @return The Merkle tree path proving the commitment exists in the investors tree - */ -witness findInvestor(commitment: Bytes<32>): MerkleTreePath<100, Bytes<32>>; - - -// ======================= -// Interaction for project creation and management -// ======================= - -/** - * @dev Create project circuit - * @notice Allows users to create a new crowdfunding project on-chain - * @param projectId Unique identifier for the new project - * @param investmentGoal Target funding goal for the project - * @param duration Project duration in time units - * @param coinType Type of coin accepted for investments - * @param currentDate Current timestamp for recording the creation date - * @param title Project title (opaque string) - * @param desc Project description (opaque string) - */ -export circuit createProject( - projectId: Bytes<32>, - investmentGoal: Uint<128>, - duration: Uint<128>, - coinType: Bytes<32>, - currentDate: Uint<128>, - title: Opaque<"string">, - desc: Opaque<"string"> -): [] { - const disclosedId = disclose(projectId); - assert (!projects.member(disclosedId), "Project with same ID already exists"); - - // Generate a unique hash representing the project owner without revealing their public key - const ownersHash = generateOwnersPK(ownPublicKey().bytes, disclose(localSecretKey()), disclosedId); - - const newProject = Project{ - ...default, - title: disclose(title), - desc: disclose(desc), - status: ProjectStatus.Active, - investmentGoal: disclose(investmentGoal), - duration: disclose(duration), - owner: ownersHash, - coinType: disclose(coinType), - creationDate: disclose(currentDate) - }; - - projects.insert(disclosedId, newProject); -} - -/** - * @dev Cancel project circuit - * @notice Allows the project owner to cancel and remove their project from the on-chain registry - * @param projectId The unique identifier of the project to cancel - */ -export circuit cancelProject(projectId: Bytes<32>): [] { - const disclosedId = disclose(projectId); - - assert (projects.member(disclosedId), "Project with specified ID does not exist"); - const projectToEnd = projects.lookup(disclosedId); - const reconstructedOwnersHash = generateOwnersPK(ownPublicKey().bytes, disclose(localSecretKey()), disclosedId); - - assert (reconstructedOwnersHash == projectToEnd.owner, "Can not end this project: You are not the owner"); - - // Remove the project from the on-chain registry - projects.remove(disclosedId); -} - -/** - * @dev Withdraw project funds circuit - * @notice Allows the project owner to withdraw funds after the project reaches its goal or closes - * @param projectId The unique identifier of the project to withdraw funds from - */ -export circuit withdrawProjectFunds(projectId: Bytes<32>): []{ - const disclosedId = disclose(projectId); - assert (projects.member(disclosedId), "Project with the specified ID does not exist"); - - const projectToWithdrawFrom = projects.lookup(disclosedId); - const reconstructedOwnersHash = generateOwnersPK(ownPublicKey().bytes, disclose(localSecretKey()), disclosedId); - - assert (reconstructedOwnersHash == projectToWithdrawFrom.owner, "Can not end this project: You are not the owner"); - assert (projectToWithdrawFrom.raised >= projectToWithdrawFrom.investmentGoal || projectToWithdrawFrom.status == ProjectStatus.Closed, "Project funds is less than the investment goal"); - - const sendResult = send( - protocolTVL.lookup(projectToWithdrawFrom.coinType), - left(ownPublicKey()), - projectToWithdrawFrom.investmentGoal - ); - - sendResult.change.is_some ? - protocolTVL.insertCoin(projectToWithdrawFrom.coinType, sendResult.change.value, left(ownPublicKey())) : - protocolTVL.remove(projectToWithdrawFrom.coinType); - - // Update the project status to Withdrawn - projects.remove(disclosedId); - - const updateProject = Project{ - ...projectToWithdrawFrom, - status: ProjectStatus.Withdrawn - }; - - projects.insert(disclosedId, updateProject); -} - -/** - * @dev End project circuit - * @notice Allows the project owner to close their project at any time and return remaining funds - * @param projectId The unique identifier of the project to close - */ -export circuit endProject(projectId: Bytes<32>): [] { - const disclosedId = disclose(projectId); - - assert (projects.member(disclosedId), "Project with specified ID does not exist"); - const projectToEnd = projects.lookup(disclosedId); - const reconstructedOwnersHash = generateOwnersPK(ownPublicKey().bytes, disclose(localSecretKey()), disclosedId); - - assert (reconstructedOwnersHash == projectToEnd.owner, "Can not end this project: You are not the owner"); - - if(projectToEnd.raised > 0){ - // Send raised funds to the project owner before closing - const sendResult = send( - protocolTVL.lookup(projectToEnd.coinType), - left(ownPublicKey()), - projectToEnd.raised - ); - - // Update protocol balance with any remaining change - sendResult.change.is_some ? - protocolTVL.insertCoin(projectToEnd.coinType, sendResult.change.value, right(kernel.self())) : - protocolTVL.remove(projectToEnd.coinType); - } - - // Update the project status to Closed - projects.insert(disclosedId, Project{ - ...projectToEnd, - status: ProjectStatus.Closed - }); -} - -/** - * @dev Update project circuit - * @notice Allows the project owner to update their project's details while it's still active - * @param projectId The unique identifier of the project to update - * @param title New project title (opaque string) - * @param desc New project description (opaque string) - * @param investmentGoal New target funding goal for the project - * @param duration New project duration in time units - */ -export circuit updateProject( - projectId: Bytes<32>, - title: Opaque<"string">, - desc: Opaque<"string">, - investmentGoal: Uint<128>, - duration: Uint<128> - ): []{ - const disclosedId = disclose(projectId); - assert (projects.member(disclosedId), "Project with the specified ID does not exist"); - const projectToUpdate = projects.lookup(disclosedId); - assert (projectToUpdate.status != ProjectStatus.Withdrawn || projectToUpdate.status != ProjectStatus.Closed, "Can not edit project: This project has ended"); - - const reconstructedOwnersHash = generateOwnersPK(ownPublicKey().bytes, disclose(localSecretKey()), disclosedId); - assert (reconstructedOwnersHash == projectToUpdate.owner, "Can not end this project: You are not the owner"); - - const updateProject = Project{ - ...projectToUpdate, - title: disclose(title), - desc: disclose(desc), - investmentGoal: disclose(investmentGoal), - duration: disclose(duration), - }; - - projects.insert(disclosedId, updateProject); -} - - -/** - * @dev Invest in project circuit - * @notice Allows users to invest in an active project by depositing coins anonymously - * @param coin The coin information containing the investment amount and type - * @param projectId The unique identifier of the project to invest in - */ -export circuit investProject(coin: CoinInfo, projectId: Bytes<32>): []{ - const disclosedCoin = disclose(coin); - const disclosedId = disclose(projectId); - assert (projects.member(disclosedId), "Project with the specified ID does not exist"); - const projectToInvest = projects.lookup(disclosedId); - assert (projectToInvest.raised < projectToInvest.investmentGoal, "Can not invest in this project: the investment objective of the project has been reached"); - const isProjectActive = confirmProjectExpiration(projectToInvest.duration, projectToInvest.creationDate); - assert (isProjectActive, "Project with specified ID is no longer active"); - assert (projectToInvest.status != ProjectStatus.Withdrawn || projectToInvest.status != ProjectStatus.Closed, "Can not invest in the project: this project is finished"); - assert (coin.color == projectToInvest.coinType, "Insufficient funds provided"); - assert (coin.value <= projectToInvest.investmentGoal, "Amount is greater than investment goal"); - receive(disclosedCoin); - - const coinToInsert = protocolTVL.member(disclosedCoin.color) ? - mergeCoinImmediate(protocolTVL.lookup(disclosedCoin.color), disclosedCoin) : - disclosedCoin; - - protocolTVL.insertCoin( - disclosedCoin.color, - coinToInsert, - right(kernel.self()) - ); - - const investor = Investor{ - id: disclose(localSecretKey()), - investment: disclosedCoin.value as Uint<32>, - coinType: disclosedCoin.color - }; - - // Create a zero-knowledge commitment of the investor’s data (amount, currency, secret ID). - // This commitment is stored in the investors Merkle Tree - const investorCommit = generateCommit(investor, disclosedId); - investors.insert(investorCommit); - - const updateProject = Project{ - ...projectToInvest, - investors: (projectToInvest.investors + 1) as Uint<128>, - raised: (projectToInvest.raised + disclosedCoin.value) as Uint<128> - }; - - projects.insert(disclosedId, updateProject); -} - -/** - * @dev Request refund circuit - * @notice Allows an investor to request a refund from an active project using zero-knowledge proof of their investment - * @param projectId The unique identifier of the project to request a refund from - * @param refundAmount The amount the investor wishes to withdraw - * @param amountDeposited The total amount the investor originally deposited - */ -export circuit requestRefund(projectId: Bytes<32>, refundAmount: Uint<32>, amountDeposited: Uint<32>): []{ - const disclosedId = disclose(projectId); - - assert (projects.member(disclosedId), "Project with the specified ID does not exist"); - const project = projects.lookup(disclosedId); - assert (project.status != ProjectStatus.Withdrawn || project.status != ProjectStatus.Closed, "Can not refund: This project has ended"); - - const investor = Investor{ - id: disclose(localSecretKey()), - investment: disclose(amountDeposited), - coinType: project.coinType - }; - - const investorsCommit = generateCommit(investor, disclosedId); - - const path = disclose(findInvestor(investorsCommit)); - - // Verify that the commitment exists in the Merkle tree of investors - assert(investors.checkRoot(merkleTreePathRoot<100, Bytes<32>>(path)), "You are not a valid investor for this project"); - assert (refundAmount <= amountDeposited, "Can not withdraw more than deposited amount"); - - const sendResult = send( - protocolTVL.lookup(project.coinType), - left(ownPublicKey()), - disclose(refundAmount) - ); -sendResult.change.is_some ? - protocolTVL.insertCoin(project.coinType, sendResult.change.value, right(kernel.self())) : - protocolTVL.remove(project.coinType); - - const updateProject = Project { - ...project, - raised: (project.raised - disclose(refundAmount)) as Uint<128> - }; - - projects.insert(disclosedId, updateProject); -} \ No newline at end of file diff --git a/packages/midnight-contracts-wizard/jest.config.ts b/packages/midnight-contracts-wizard/jest.config.ts deleted file mode 100644 index f642dcb1a..000000000 --- a/packages/midnight-contracts-wizard/jest.config.ts +++ /dev/null @@ -1,13 +0,0 @@ -import type { Config } from "jest"; - -const config: Config = { - displayName: "midnight-contracts-wizard", - preset: "../../jest.preset.js", - transform: { - "^.+\\.[tj]s$": ["ts-jest", { tsconfig: "/tsconfig.spec.json" }], - }, - moduleFileExtensions: ["ts", "js", "html"], - coverageDirectory: "../../coverage/packages/midnight-contracts-wizard", -}; - -export default config; diff --git a/packages/midnight-contracts-wizard/package.json b/packages/midnight-contracts-wizard/package.json deleted file mode 100644 index ee14e1718..000000000 --- a/packages/midnight-contracts-wizard/package.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "name": "@meshsdk/midnight-contracts-wizard", - "version": "1.9.0-beta.98", - "description": "Create a new Midnight contracts project with selected smart contracts", - "main": "dist/index.js", - "bin": { - "midnight-contracts-wizard": "./dist/index.js" - }, - "scripts": { - "build:midnight": "tsc", - "clean": "rm -rf dist", - "format": "prettier --write \"src/**/*.{ts,js,json}\"", - "dev:midnight": "tsc --watch", - "lint": "eslint", - "pack": "npm pack", - "test": "jest", - "start": "node dist/index.js", - "install-cli": "node dist/install.js", - "prepublishOnly": "npm run build" - }, - "keywords": [ - "midnight", - "contracts", - "blockchain", - "privacy", - "zk", - "zero-knowledge", - "cli", - "generator" - ], - "author": "MeshJS Team", - "license": "Apache-2.0", - "dependencies": { - "chalk": "^4.1.2", - "fs-extra": "^11.1.1", - "inquirer": "^9.2.12", - "ora": "^5.4.1" - }, - "devDependencies": { - "@meshsdk/configs": "*", - "@types/fs-extra": "^11.0.0", - "@types/inquirer": "^9.0.0", - "@types/node": "^20.19.23", - "eslint": "^8.57.0", - "jest": "^29.7.0", - "prettier": "^3.0.0", - "ts-jest": "^29.1.0", - "typescript": "^5.0.0" - }, - "engines": { - "node": ">=18.0.0" - }, - "files": [ - "dist", - "contracts", - "LICENSE", - "README.md" - ], - "repository": { - "type": "git", - "url": "https://github.com/MeshJS/mesh.git", - "directory": "packages/midnight-contracts-wizard" - }, - "bugs": { - "url": "https://github.com/MeshJS/mesh/issues" - }, - "homepage": "https://meshjs.dev/" -} diff --git a/packages/midnight-contracts-wizard/src/index.ts b/packages/midnight-contracts-wizard/src/index.ts deleted file mode 100644 index 22d7f5254..000000000 --- a/packages/midnight-contracts-wizard/src/index.ts +++ /dev/null @@ -1,562 +0,0 @@ -#!/usr/bin/env node -import path from "path"; -import chalk from "chalk"; -import fs from "fs-extra"; -import inquirer from "inquirer"; -import ora from "ora"; - -// Contract interface -interface Contract { - name: string; - description: string; - circuits: number; - files: string[]; -} - -// Contract templates -const contracts: Record = { - tokenization: { - name: "Tokenization Contract", - description: - "Complete project tokenization system with ZK privacy investment", - circuits: 7, - files: [ - "contracts/tokenization/tokenization.compact", - "contracts/tokenization/TokenizationLibrary.compact", - ], - }, - staking: { - name: "Staking Contract", - description: "Privacy-focused staking system with rewards and lock periods", - circuits: 8, - files: ["contracts/staking/staking.compact"], - }, - identity: { - name: "Identity Contracts", - description: - "Complete identity management system with cryptographic libraries", - circuits: 1, - files: [ - "contracts/identity/IdentityLibrary.compact", - "contracts/identity/registry.compact", - "contracts/identity/CryptoLibrary.compact", - ], - }, - oracle: { - name: "Oracle Contract", - description: - "Decentralized oracle system with privacy-preserving data feeds", - circuits: 7, - files: ["contracts/oracle/oracle.compact"], - }, - lendingBorrowing: { - name: "Lending & Borrowing Contract", - description: "Privacy-preserving decentralized lending protocol", - circuits: 7, - files: ["contracts/lending-borrowing/lending-borrowing.compact"], - }, -}; - -async function main(): Promise { - console.log(chalk.blue.bold("\n✨ Midnight Contracts Wizard\n")); - console.log( - chalk.gray( - "Create a new Midnight contracts project with selected smart contracts\n", - ), - ); - console.log( - chalk.yellow( - "💡 Tip: Use SPACE to select contracts, then ENTER to continue\n", - ), - ); - - // Get project name - const { projectName } = await inquirer.prompt<{ projectName: string }>([ - { - type: "input", - name: "projectName", - message: "What is your project name?", - default: "my-midnight-contracts", - validate: (input: string) => { - if (!input.trim()) { - return "Project name is required"; - } - if (!/^[a-z0-9-]+$/.test(input)) { - return "Project name must contain only lowercase letters, numbers, and hyphens"; - } - return true; - }, - }, - ]); - - // Get project directory - const { projectDir } = await inquirer.prompt<{ projectDir: string }>([ - { - type: "input", - name: "projectDir", - message: "Where should we create your project?", - default: `./${projectName}`, - validate: (input: string) => { - if (!input.trim()) { - return "Project directory is required"; - } - return true; - }, - }, - ]); - - // Select contracts - const { selectedContracts } = await inquirer.prompt<{ - selectedContracts: string[]; - }>([ - { - type: "checkbox", - name: "selectedContracts", - message: "Which contracts would you like to include?", - choices: Object.entries(contracts).map(([key, contract]) => ({ - name: `${contract.name} (${contract.circuits} ZK circuits)`, - short: contract.name, - value: key, - checked: false, - })), - validate: (input: string[]) => { - if (!input || input.length === 0) { - return "Please select at least one contract (use SPACE to select, then ENTER to continue)"; - } - return true; - }, - }, - ]); - - // Show summary - console.log(chalk.green("\n📋 Project Summary:")); - console.log(chalk.gray(`Project: ${projectName}`)); - console.log(chalk.gray(`Directory: ${projectDir}`)); - console.log(chalk.gray(`Selected contracts: ${selectedContracts.length}`)); - - selectedContracts.forEach((key) => { - const contract = contracts[key]; - if (contract) { - console.log( - chalk.blue(` • ${contract.name} (${contract.circuits} circuits)`), - ); - console.log(chalk.gray(` ${contract.description}`)); - } - }); - - const { confirm } = await inquirer.prompt<{ confirm: boolean }>([ - { - type: "confirm", - name: "confirm", - message: "Create the project with these settings?", - default: true, - }, - ]); - - if (!confirm) { - console.log(chalk.yellow("Project creation cancelled.")); - return; - } - - // Create project - const spinner = ora("Creating project...").start(); - - try { - await createProject(projectName, projectDir, selectedContracts); - spinner.succeed("Project created successfully!"); - - console.log(chalk.green("\n🎉 Your Midnight contracts project is ready!")); - console.log(chalk.gray("\n📋 Next steps:")); - console.log(chalk.blue("1) Navigate to the project folder:")); - console.log(chalk.white(` cd ${projectDir}`)); - console.log(chalk.blue("\n2) Compile your smart contracts:")); - const compileCommands = generateCompileCommands(selectedContracts); - compileCommands.forEach((command, index) => { - console.log(chalk.white(` ${command}`)); - if (index < compileCommands.length - 1) { - console.log(chalk.white("")); - } - }); - console.log( - chalk.gray("\n💡 Your contracts will be compiled to src/managed/"), - ); - console.log(chalk.gray("💡 Check the README.md for detailed instructions")); - } catch (error) { - spinner.fail("Failed to create project"); - console.error(chalk.red("Error:"), (error as Error).message); - } -} - -async function createProject( - projectName: string, - projectDir: string, - selectedContracts: string[], -): Promise { - // Create project directory - await fs.ensureDir(projectDir); - - // Create package.json - const packageJson = { - name: projectName, - version: "0.1.0", - license: "MIT", - type: "module", - main: "index.js", - module: "./dist/index.js", - types: "./dist/index.d.ts", - packageManager: "yarn@4.9.2", - exports: { - ".": { - default: "./dist/index.js", - import: "./dist/index.js", - types: "./dist/index.d.ts", - require: "./dist/index.js", - }, - }, - scripts: { - compact: generateCompactScript(selectedContracts), - build: generateBuildScript(selectedContracts), - lint: "eslint src", - typecheck: "tsc -p tsconfig.json --noEmit", - prepack: "yarn build", - }, - dependencies: { - "@midnight-ntwrk/compact-runtime": "^0.8.1", - "@midnight-ntwrk/midnight-js-contracts": "2.0.2", - "@midnight-ntwrk/midnight-js-types": "2.0.2", - }, - devDependencies: { - "@midnight-ntwrk/compact": "^0.8.1", - eslint: "^9.27.0", - jest: "^29.7.0", - typescript: "^5.8.2", - }, - }; - - await fs.writeJson(path.join(projectDir, "package.json"), packageJson, { - spaces: 2, - }); - - // Create tsconfig files - await createTsConfig(projectDir); - - // Create src directory structure - await fs.ensureDir(path.join(projectDir, "src")); - await fs.ensureDir(path.join(projectDir, "src/managed")); - - // Copy selected contract files from templates - for (const contractKey of selectedContracts) { - const contract = contracts[contractKey]; - if (!contract) continue; - for (const filePath of contract.files) { - // Get the correct path to contracts directory - const packageRoot = path.resolve(__dirname, ".."); - const sourcePath = path.join(packageRoot, filePath); - const destPath = path.join(projectDir, filePath); - - if (await fs.pathExists(sourcePath)) { - await fs.ensureDir(path.dirname(destPath)); - await fs.copy(sourcePath, destPath); - } else { - console.error( - chalk.red(`Error: Contract file not found: ${sourcePath}`), - ); - throw new Error(`Contract file not found: ${sourcePath}`); - } - } - } - - // Create .yarnrc.yml for standalone project - const yarnrcContent = `nodeLinker: node-modules -enableGlobalCache: false -`; - await fs.writeFile(path.join(projectDir, ".yarnrc.yml"), yarnrcContent); - - // Create README - await createReadme(projectDir, projectName, selectedContracts); - - // Create .gitignore - await createGitignore(projectDir); -} - -function generateCompileCommands(selectedContracts: string[]): string[] { - return selectedContracts - .map((contractKey) => { - const contract = contracts[contractKey]; - if (!contract) return []; - return contract.files.map((file) => { - const fileName = path.basename(file, ".compact"); - return `compact compile ${file} ./src/managed/${fileName}`; - }); - }) - .flat(); -} - -function generateCompactScript(selectedContracts: string[]): string { - const commands = generateCompileCommands(selectedContracts); - return commands.join(" && "); -} - -function generateBuildScript(selectedContracts: string[]): string { - const copyCommands = selectedContracts - .map((contractKey) => { - const contract = contracts[contractKey]; - if (!contract) return []; - return contract.files.map((file) => { - const fileName = path.basename(file, ".compact"); - return `test -d ./src/managed/${fileName} && cp -R ./src/managed/${fileName} ./dist/managed/`; - }); - }) - .flat(); - - const copySourceFiles = selectedContracts - .map((contractKey) => { - const contract = contracts[contractKey]; - if (!contract) return []; - return contract.files.map((file) => `cp ${file} dist`); - }) - .flat(); - - return `rm -rf dist && find src/managed -type d -empty -delete && tsc --project tsconfig.build.json && mkdir -p dist/managed && ${copyCommands.join(" && ")} && ${copySourceFiles.join(" && ")}`; -} - -async function createTsConfig(projectDir: string): Promise { - const tsconfig = { - compilerOptions: { - target: "ES2022", - module: "ESNext", - moduleResolution: "node", - allowSyntheticDefaultImports: true, - esModuleInterop: true, - allowJs: true, - strict: true, - skipLibCheck: true, - forceConsistentCasingInFileNames: true, - declaration: true, - outDir: "./dist", - rootDir: "./src", - }, - include: ["src/**/*"], - exclude: ["node_modules", "dist"], - }; - - const tsconfigBuild = { - extends: "./tsconfig.json", - compilerOptions: { - declaration: true, - declarationMap: true, - sourceMap: true, - }, - exclude: ["**/*.test.ts", "**/*.spec.ts"], - }; - - await fs.writeJson(path.join(projectDir, "tsconfig.json"), tsconfig, { - spaces: 2, - }); - await fs.writeJson( - path.join(projectDir, "tsconfig.build.json"), - tsconfigBuild, - { spaces: 2 }, - ); -} - -function generateManagedStructure(selectedContracts: string[]): string { - const managedDirs: string[] = []; - - for (const contractKey of selectedContracts) { - const contract = contracts[contractKey]; - if (!contract) continue; - - for (const filePath of contract.files) { - const fileName = path.basename(filePath, ".compact"); - managedDirs.push(fileName); - } - } - - if (managedDirs.length === 0) { - return "src/managed/\n└── (compiled contracts will appear here)"; - } - - const structure = managedDirs - .map((dir, index) => { - const isLast = index === managedDirs.length - 1; - const prefix = isLast ? "└──" : "├──"; - const indent = isLast ? " " : "│ "; - - return `${prefix} ${dir}/ # Compiled ${dir} contract -${indent}├── compiler/ # Compilation artifacts -${indent}├── contract/ # Contract bytecode -${indent}├── keys/ # Cryptographic keys -${indent}└── zkir/ # ZK proof system files`; - }) - .join("\n"); - - return `src/managed/\n${structure}`; -} - -function generateProjectStructure( - projectName: string, - selectedContracts: string[], -): string { - const contractFiles: string[] = []; - - for (const contractKey of selectedContracts) { - const contract = contracts[contractKey]; - if (!contract) continue; - - for (const filePath of contract.files) { - contractFiles.push(filePath); - } - } - - if (contractFiles.length === 0) { - return `${projectName}/ -├── contracts/ # Source contract files (.compact) -├── src/ -│ ├── managed/ # Compiled contracts (after compact compile) -│ └── index.ts # Your application code -└── package.json # Dependencies and scripts`; - } - - const contractsStructure = contractFiles - .map((file, index) => { - const isLast = index === contractFiles.length - 1; - const prefix = isLast ? "└──" : "├──"; - const relativePath = file.startsWith("contracts/") - ? file.substring("contracts/".length) - : file; - return `${prefix} ${relativePath}`; - }) - .join("\n│ "); - - return `${projectName}/ -├── contracts/ # Source contract files (.compact) -│ ${contractsStructure} -├── src/ -│ ├── managed/ # Compiled contracts (after compact compile) -│ └── index.ts # Your application code -└── package.json # Dependencies and scripts`; -} - -async function createReadme( - projectDir: string, - projectName: string, - selectedContracts: string[], -): Promise { - const selectedContractNames = selectedContracts - .map((key) => contracts[key]) - .filter((contract): contract is Contract => contract !== undefined) - .map((contract) => contract.name); - - const compileCommands = generateCompileCommands(selectedContracts); - const compileCommandsText = compileCommands.join("\n\n"); - const managedStructure = generateManagedStructure(selectedContracts); - const projectStructure = generateProjectStructure( - projectName, - selectedContracts, - ); - - const readme = `# Midnight Contracts Wizard - -A Midnight contracts project with the following smart contracts: - -${selectedContractNames.map((name) => `- ${name}`).join("\n")} - -## Quick Start - -\`\`\`bash -# Compile smart contracts (IMPORTANT!) -${compileCommandsText} -\`\`\` - -## 🔥 Compiling Smart Contracts - -**This is the most important step!** Your \`.compact\` files need to be compiled before use: - -\`\`\`bash -# Compile each contract individually: -${compileCommandsText} -\`\`\` - -### What gets generated after compilation: - -\`\`\` -${managedStructure} -\`\`\` - -## What's Included - -- **Smart Contracts**: Ready-to-compile \`.compact\` files in \`contracts/\` -- **Dependencies**: All necessary Midnight Network packages -- **Build Scripts**: Automated compilation and build process -- **TypeScript**: Full TypeScript support with type definitions -- **Standalone Project**: Includes \`.yarnrc.yml\` for independent operation - -## Available Commands - -- \`compact compile [source] [output]\` - **Compile individual smart contracts** - -## Project Structure - -\`\`\` -${projectStructure} -\`\`\` - ---- - -
-

Powered by MeshJS Team

-

Built with ❤️ on Midnight Network

-
-`; - - await fs.writeFile(path.join(projectDir, "README.md"), readme); -} - -async function createGitignore(projectDir: string): Promise { - const gitignoreContent = `# Compiled contracts (generated by compact compile) -src/managed/ - -# Node modules -node_modules/ - -# Build outputs -dist/ -build/ - -# Environment files -.env -.env.local -.env.production - -# IDE files -.vscode/ -.idea/ -*.swp -*.swo - -# OS files -.DS_Store -Thumbs.db - -# Logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# Midnight Network compilation artifacts -*.prover -*.verifier -*.zkir -`; - - await fs.writeFile(path.join(projectDir, ".gitignore"), gitignoreContent); -} - -// Run the CLI -if (require.main === module) { - main().catch(console.error); -} - -export { main }; diff --git a/packages/midnight-contracts-wizard/src/install.ts b/packages/midnight-contracts-wizard/src/install.ts deleted file mode 100644 index 7233e35dc..000000000 --- a/packages/midnight-contracts-wizard/src/install.ts +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env node -import fs from "fs"; -import path from "path"; - -// Make the main script executable -const indexPath = path.join(__dirname, "index.js"); -fs.chmodSync(indexPath, "755"); - -console.log("✅ midnight-contracts-wizard CLI is ready!"); -console.log("📦 To publish to npm:"); -console.log(" 1. npm login"); -console.log(" 2. npm publish"); -console.log(" 3. Users can then run: npx @meshsdk/midnight-contracts-wizard"); diff --git a/packages/midnight-contracts-wizard/tsconfig.json b/packages/midnight-contracts-wizard/tsconfig.json deleted file mode 100644 index 131d426d5..000000000 --- a/packages/midnight-contracts-wizard/tsconfig.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "compilerOptions": { - "outDir": "./dist", - "rootDir": "./src", - "declaration": true, - "declarationMap": true, - "sourceMap": true, - "module": "CommonJS", - "target": "ES2022", - "lib": ["ES2022"], - "moduleResolution": "node", - "esModuleInterop": true, - "skipLibCheck": true, - "strict": true, - "resolveJsonModule": true, - "allowSyntheticDefaultImports": true, - "types": ["node"] - }, - "include": ["src/**/*"], - "exclude": ["node_modules", "dist", "**/*.test.ts", "**/*.spec.ts"] -} diff --git a/packages/midnight-setup/.npmignore b/packages/midnight-setup/.npmignore deleted file mode 100644 index 667d5be59..000000000 --- a/packages/midnight-setup/.npmignore +++ /dev/null @@ -1,28 +0,0 @@ -# Development directories -packages/ -compact/ -node_modules/ -src/ - -# Build artifacts not needed -.turbo - -# Development configs -tsconfig.json -tsup.config.ts -.eslintrc* -.prettierrc* - -# Tests -*.test.ts -*.spec.ts -test/ -tests/ - -# Git -.git -.gitignore - -# Misc -*.log -.DS_Store diff --git a/packages/midnight-setup/LICENSE b/packages/midnight-setup/LICENSE deleted file mode 100644 index fc05a9754..000000000 --- a/packages/midnight-setup/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2023 MeshJS - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/packages/midnight-setup/README.md b/packages/midnight-setup/README.md deleted file mode 100644 index 3c45419d5..000000000 --- a/packages/midnight-setup/README.md +++ /dev/null @@ -1,255 +0,0 @@ -
-

The fastest way to build on Midnight Network

-

Pre-built smart contract + Complete API + Ready-to-use code snippets

- - [![npm version](https://img.shields.io/npm/v/@meshsdk/midnight-setup.svg)](https://www.npmjs.com/package/@meshsdk/midnight-setup) - [![License: MIT](https://img.shields.io/badge/License-Apache2.0-yellow.svg)](https://opensource.org/licenses/Apache2.0) - [![TypeScript](https://img.shields.io/badge/TypeScript-5.8-blue)](https://www.typescriptlang.org/) -
- ---- - -> Source repository with a full React integration example and a Compact contract: https://github.com/MeshJS/midnight-setup - ---- - -## Installation - -```bash -npm install @meshsdk/midnight-setup -``` - -**For Midnight Network projects, you'll also need these providers, if you already have them, skip this section:** - -```bash -npm install \ - @midnight-ntwrk/dapp-connector-api@3.0.0 \ - @midnight-ntwrk/midnight-js-fetch-zk-config-provider@2.0.2 \ - @midnight-ntwrk/midnight-js-http-client-proof-provider@2.0.2 \ - @midnight-ntwrk/midnight-js-indexer-public-data-provider@2.0.2 \ - @midnight-ntwrk/midnight-js-level-private-state-provider@2.0.2 \ - @midnight-ntwrk/midnight-js-network-id@2.0.2 -``` - ---- - -## Features - -- **Type-safe SDK** - Full TypeScript support -- **Provider abstraction** - Easy wallet and network integration -- **Contract state management** - Query contract and ledger states -- **Flexible contract support** - Works with any Midnight smart contract -- **Lightweight** - Only 10.4 KB package size -- **ESM & CJS** - Supports both module systems - ---- - -## Quick Start - -### 1. Setup Providers - -```typescript -import { FetchZkConfigProvider } from "@midnight-ntwrk/midnight-js-fetch-zk-config-provider"; -import { httpClientProofProvider } from "@midnight-ntwrk/midnight-js-http-client-proof-provider"; -import { indexerPublicDataProvider } from "@midnight-ntwrk/midnight-js-indexer-public-data-provider"; -import { levelPrivateStateProvider } from "@midnight-ntwrk/midnight-js-level-private-state-provider"; - -import type { MidnightSetupContractProviders } from "@meshsdk/midnight-setup"; - -export async function setupProviders(): Promise { - const wallet = window.midnight?.mnLace; - if (!wallet) { - throw new Error("Please install Lace Beta Wallet for Midnight Network"); - } - - const walletAPI = await wallet.enable(); - const walletState = await walletAPI.state(); - const uris = await wallet.serviceUriConfig(); - - return { - privateStateProvider: levelPrivateStateProvider({ - privateStateStoreName: "my-dapp-state", - }), - zkConfigProvider: new FetchZkConfigProvider( - window.location.origin, - fetch.bind(window), - ), - proofProvider: httpClientProofProvider(uris.proverServerUri), - publicDataProvider: indexerPublicDataProvider( - uris.indexerUri, - uris.indexerWsUri, - ), - walletProvider: { - coinPublicKey: walletState.coinPublicKey, - encryptionPublicKey: walletState.encryptionPublicKey, - balanceTx: (tx, newCoins) => { - return walletAPI.balanceAndProveTransaction(tx, newCoins); - }, - }, - midnightProvider: { - submitTx: (tx) => { - return walletAPI.submitTransaction(tx); - }, - }, - }; -} -``` - -### 2. Deploy a Contract - -```typescript -import { MidnightSetupAPI } from "@meshsdk/midnight-setup"; - -import { setupProviders } from "./providers"; - -async function deployContract() { - const providers = await setupProviders(); - const contractInstance = new MyContract({}); - - const api = await MidnightSetupAPI.deployContract( - providers, - contractInstance, - ); - - console.log("Contract deployed at:", api.deployedContractAddress); - return api; -} -``` - -### 3. Join Existing Contract - -```typescript -async function joinContract(contractAddress: string) { - const providers = await setupProviders(); - const contractInstance = new MyContract({}); - - const api = await MidnightSetupAPI.joinContract( - providers, - contractInstance, - contractAddress, - ); - - return api; -} -``` - -### 4. Read Contract State - -```typescript -// Get contract state -const contractState = await api.getContractState(); -console.log("Contract data:", contractState.data); - -// Get ledger state -const ledgerState = await api.getLedgerState(); -console.log("Message:", ledgerState.ledgerState?.message); -``` - ---- - -## API Reference - -### MidnightSetupAPI - -#### Static Methods - -**`deployContract(providers, contractInstance, logger?)`** - -Deploys a new smart contract to Midnight Network. - -**Parameters:** - -- `providers: MidnightSetupContractProviders` - Network and wallet providers -- `contractInstance: ContractInstance` - Your compiled contract instance -- `logger?: Logger` - Optional Pino logger - -**Returns:** `Promise` - ---- - -**`joinContract(providers, contractInstance, contractAddress, logger?)`** - -Connects to an existing deployed contract. - -**Parameters:** - -- `providers: MidnightSetupContractProviders` - Network and wallet providers -- `contractInstance: ContractInstance` - Your compiled contract instance -- `contractAddress: string` - Address of the deployed contract -- `logger?: Logger` - Optional Pino logger - -**Returns:** `Promise` - ---- - -#### Instance Methods - -**`getContractState()`** - Gets the current state of the contract - -**Returns:** `Promise` - -**`getLedgerState()`** - Gets and parses the ledger state - -**Returns:** `Promise` - ---- - -## TypeScript Types - -```typescript -import type { - ContractInstance, - ContractStateData, - DeployedContract, - DeployedMidnightSetupAPI, - LedgerStateData, - MidnightSetupContractProviders, -} from "@meshsdk/midnight-setup"; -``` - ---- - -## Requirements - -- Node.js v18 or higher -- Midnight Lace Wallet browser extension -- TypeScript (recommended) - ---- - -## Links - -- [Source Repository](https://github.com/MeshJS/midnight-setup) -- [MeshJS Website](https://meshjs.dev) -- [Midnight Network](https://midnight.network) -- [Midnight Documentation](https://docs.midnight.network) -- [npm Package](https://www.npmjs.com/package/@meshsdk/midnight-setup) - ---- - -## Contributing - -Contributions are welcome! Please visit the [source repository](https://github.com/MeshJS/midnight-setup). - ---- - -## License - -Apache2.0 © [MeshJS Team](https://github.com/MeshJS) - -See [LICENSE](./LICENSE) for more information. - ---- - -## Support - -- [Report Issues](https://github.com/MeshJS/midnight-setup/issues) -- [Discord Community](https://discord.gg/hBJNSwXE2S) -- [Twitter](https://twitter.com/meshsdk) - ---- - -
-

MeshJS Logo Powered by MeshJS Team

-

Built with ❤️ on Midnight Network

-
diff --git a/packages/midnight-setup/package.json b/packages/midnight-setup/package.json deleted file mode 100644 index 45f68a53f..000000000 --- a/packages/midnight-setup/package.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "name": "@meshsdk/midnight-setup", - "version": "1.9.0-beta.98", - "description": "Midnight Network integration SDK for MeshSDK - https://meshjs.dev/midnight", - "main": "./dist/index.cjs", - "browser": "./dist/index.js", - "module": "./dist/index.js", - "types": "./dist/index.d.ts", - "type": "module", - "exports": { - ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.js", - "require": "./dist/index.cjs" - } - }, - "files": [ - "dist/**" - ], - "scripts": { - "build:midnight": "tsup src/index.ts --format esm,cjs --dts", - "clean": "rm -rf .turbo && rm -rf dist && rm -rf node_modules", - "dev:midnight": "tsup src/index.ts --format esm,cjs --watch --dts", - "format": "prettier --check . --ignore-path ../../.gitignore", - "lint": "eslint", - "pack": "npm pack --pack-destination=./dist", - "test": "echo 'Tests for Midnight Network integration'" - }, - "dependencies": { - "@midnight-ntwrk/compact-runtime": "^0.8.1", - "@midnight-ntwrk/midnight-js-contracts": "2.0.2", - "@midnight-ntwrk/midnight-js-types": "2.0.2", - "pino": "^8.16.1", - "rxjs": "^7.8.1" - }, - "peerDependencies": { - "@midnight-ntwrk/dapp-connector-api": "^3.0.0", - "@midnight-ntwrk/midnight-js-fetch-zk-config-provider": "^2.0.2", - "@midnight-ntwrk/midnight-js-http-client-proof-provider": "^2.0.2", - "@midnight-ntwrk/midnight-js-indexer-public-data-provider": "^2.0.2", - "@midnight-ntwrk/midnight-js-level-private-state-provider": "^2.0.2", - "@midnight-ntwrk/midnight-js-network-id": "^2.0.2" - }, - "devDependencies": { - "@meshsdk/configs": "*", - "@types/ws": "^8.5.9", - "eslint": "^8.57.0", - "tsup": "^8.0.2", - "typescript": "^5.3.3" - }, - "prettier": "@meshsdk/configs/prettier", - "publishConfig": { - "access": "public" - }, - "license": "Apache-2.0", - "keywords": [ - "midnight", - "midnight-network", - "blockchain", - "smart-contracts", - "dapp", - "web3", - "compact", - "meshjs", - "cardano", - "sdk" - ] -} diff --git a/packages/midnight-setup/src/common-types.ts b/packages/midnight-setup/src/common-types.ts deleted file mode 100644 index d074cddea..000000000 --- a/packages/midnight-setup/src/common-types.ts +++ /dev/null @@ -1,72 +0,0 @@ -import type { - MidnightProvider, - PrivateStateProvider, - ProofProvider, - PublicDataProvider, - WalletProvider, - ZKConfigProvider, -} from "@midnight-ntwrk/midnight-js-types"; - -// Private state identifier for the contract -export const MidnightSetupPrivateStateId = "midnight-setup-private-state"; -export type MidnightSetupPrivateStateId = typeof MidnightSetupPrivateStateId; - -// Circuit keys type for proof provider -export type TokenCircuitKeys = string; - -// Contract providers interface with proper types -export interface MidnightSetupContractProviders { - privateStateProvider: PrivateStateProvider; - zkConfigProvider: ZKConfigProvider; - proofProvider: ProofProvider; - publicDataProvider: PublicDataProvider; - walletProvider: WalletProvider; - midnightProvider: MidnightProvider; -} - -// Deployed contract interface -export interface DeployedContract { - deployTxData: { - public: { - contractAddress: string; - }; - }; -} - -// Contract instance type - accepts any Midnight contract -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export type ContractInstance = any; - -// Contract state from public data provider -export interface QueryContractState { - data: unknown; - blockHeight?: number | bigint; - blockHash?: string | Uint8Array; -} - -// Contract state types - using unknown for flexible state data -export interface ContractStateData { - readonly address: string; - readonly data: unknown; - readonly blockHeight?: string; - readonly blockHash?: string; - readonly message?: string; - readonly error?: string; -} - -export interface LedgerStateData { - readonly address: string; - readonly ledgerState?: { - readonly message: string | null; - }; - readonly blockHeight?: string; - readonly blockHash?: string; - readonly rawData?: unknown; - readonly parseError?: string; - readonly error?: string; -} - -export type DerivedMidnightSetupContractState = { - readonly protocolTVL: unknown[]; - readonly projects: unknown[]; -}; diff --git a/packages/midnight-setup/src/index.ts b/packages/midnight-setup/src/index.ts deleted file mode 100644 index c6414a8e6..000000000 --- a/packages/midnight-setup/src/index.ts +++ /dev/null @@ -1,251 +0,0 @@ -import { ContractAddress } from "@midnight-ntwrk/compact-runtime"; -import { type Logger } from "pino"; -import { Observable } from "rxjs"; - -import { - ContractInstance, - ContractStateData, - DeployedContract, - DerivedMidnightSetupContractState, - LedgerStateData, - MidnightSetupContractProviders, - MidnightSetupPrivateStateId, - QueryContractState, -} from "./common-types.js"; - -export interface DeployedMidnightSetupAPI { - readonly deployedContractAddress: ContractAddress; - readonly state: Observable; - getContractState: () => Promise; - getLedgerState: () => Promise; -} - -export class MidnightSetupAPI implements DeployedMidnightSetupAPI { - deployedContractAddress: string; - state: Observable; - - private constructor( - private providers: MidnightSetupContractProviders, - public readonly deployedContract: DeployedContract, - private logger?: Logger, - ) { - this.deployedContractAddress = - deployedContract.deployTxData.public.contractAddress; - - this.state = new Observable((subscriber) => { - subscriber.next({ - protocolTVL: [], - projects: [], - }); - }); - } - - async getContractState(): Promise { - try { - this.logger?.info("Getting contract state...", { - address: this.deployedContractAddress, - }); - - const contractState = - (await this.providers.publicDataProvider.queryContractState( - this.deployedContractAddress, - )) as QueryContractState | null; - - if (contractState) { - this.logger?.info("Contract state retrieved successfully"); - return { - address: this.deployedContractAddress, - data: contractState.data, - blockHeight: contractState.blockHeight?.toString(), - blockHash: - typeof contractState.blockHash === "string" - ? contractState.blockHash - : contractState.blockHash?.toString(), - }; - } else { - this.logger?.warn("No contract state found"); - return { - address: this.deployedContractAddress, - data: null, - message: "No contract state found at this address", - }; - } - } catch (error) { - this.logger?.error("Failed to get contract state", { - error: error instanceof Error ? error.message : error, - }); - return { - address: this.deployedContractAddress, - data: null, - error: - error instanceof Error - ? error.message - : "Failed to get contract state", - }; - } - } - - async getLedgerState(): Promise { - try { - this.logger?.info("Getting ledger state...", { - address: this.deployedContractAddress, - }); - - const contractState = await this.getContractState(); - - if (contractState.data) { - try { - // Generic ledger state parsing - const ledgerState = contractState.data as Record; - this.logger?.info("Ledger state parsed successfully"); - - // Parse message if it exists and is a Uint8Array - let messageText: string | null = null; - if ( - ledgerState.message && - ledgerState.message instanceof Uint8Array - ) { - messageText = new TextDecoder().decode(ledgerState.message); - } - - return { - address: this.deployedContractAddress, - ledgerState: { - message: messageText, - }, - blockHeight: contractState.blockHeight, - blockHash: contractState.blockHash, - }; - } catch (parseError) { - this.logger?.warn("Failed to parse ledger state", { - error: parseError, - }); - return { - address: this.deployedContractAddress, - rawData: contractState.data, - parseError: - parseError instanceof Error - ? parseError.message - : "Failed to parse ledger state", - }; - } - } else { - return { - address: this.deployedContractAddress, - error: contractState.error || contractState.message, - }; - } - } catch (error) { - this.logger?.error("Failed to get ledger state", { - error: error instanceof Error ? error.message : error, - }); - return { - address: this.deployedContractAddress, - error: - error instanceof Error ? error.message : "Failed to get ledger state", - }; - } - } - - static async deployContract( - providers: MidnightSetupContractProviders, - contractInstance: ContractInstance, - logger?: Logger, - ): Promise { - logger?.info("Deploying contract..."); - - try { - const initialPrivateState = - await MidnightSetupAPI.getPrivateState(providers); - - const { deployContract } = await import( - "@midnight-ntwrk/midnight-js-contracts" - ); - - const deployedContract = (await deployContract(providers, { - contract: contractInstance, - initialPrivateState: initialPrivateState, - privateStateId: MidnightSetupPrivateStateId, - })) as DeployedContract; - - logger?.info("Contract deployed successfully", { - address: deployedContract.deployTxData.public.contractAddress, - }); - return new MidnightSetupAPI(providers, deployedContract, logger); - } catch (error) { - logger?.error("Failed to deploy contract", { - error: error instanceof Error ? error.message : String(error), - stack: error instanceof Error ? error.stack : undefined, - }); - throw error; - } - } - - static async joinContract( - providers: MidnightSetupContractProviders, - contractInstance: ContractInstance, - contractAddress: string, - logger?: Logger, - ): Promise { - logger?.info("Joining contract...", { contractAddress }); - - try { - const initialPrivateState = - await MidnightSetupAPI.getPrivateState(providers); - - const { findDeployedContract } = await import( - "@midnight-ntwrk/midnight-js-contracts" - ); - - const existingContract = (await findDeployedContract(providers, { - contract: contractInstance, - contractAddress: contractAddress, - privateStateId: MidnightSetupPrivateStateId, - initialPrivateState: initialPrivateState, - })) as DeployedContract; - - logger?.info("Successfully joined contract", { - address: existingContract.deployTxData.public.contractAddress, - }); - return new MidnightSetupAPI(providers, existingContract, logger); - } catch (error) { - logger?.error("Failed to join contract", { - error: error instanceof Error ? error.message : String(error), - contractAddress, - }); - throw error; - } - } - - private static async getPrivateState( - providers: MidnightSetupContractProviders, - ): Promise> { - try { - const existingPrivateState = await providers.privateStateProvider.get( - MidnightSetupPrivateStateId, - ); - - return existingPrivateState ?? {}; - } catch (error) { - console.warn( - "Error getting private state, returning empty object:", - error, - ); - return {}; - } - } -} - -export * as utils from "./utils.js"; -export * from "./common-types.js"; - -// Re-export main types for convenience -export type { - ContractStateData, - LedgerStateData, - DeployedContract, - ContractInstance, - QueryContractState, - MidnightSetupContractProviders, - TokenCircuitKeys, -} from "./common-types.js"; diff --git a/packages/midnight-setup/src/utils.ts b/packages/midnight-setup/src/utils.ts deleted file mode 100644 index e81ba00cb..000000000 --- a/packages/midnight-setup/src/utils.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { Logger } from "pino"; - -// Simple utility functions for proof server connection -export const randomNonceBytes = (length: number, logger?: Logger): Uint8Array => { - const newBytes = new Uint8Array(length); - crypto.getRandomValues(newBytes); - logger?.info("Random nonce bytes generated"); - return newBytes; -} - -export function hexStringToUint8Array(hexStr: string): Uint8Array { - // Simple hex to Uint8Array conversion - const hex = hexStr.replace(/^0x/, ''); - const bytes = new Uint8Array(hex.length / 2); - - for (let i = 0; i < hex.length; i += 2) { - bytes[i / 2] = parseInt(hex.substr(i, 2), 16); - } - - return bytes; -} - -export default { randomNonceBytes, hexStringToUint8Array }; \ No newline at end of file diff --git a/packages/midnight-setup/tsconfig.json b/packages/midnight-setup/tsconfig.json deleted file mode 100644 index ab5de2912..000000000 --- a/packages/midnight-setup/tsconfig.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "extends": "@meshsdk/configs/typescript/base.json", - "compilerOptions": { - "outDir": "./dist", - "rootDir": "./src", - "declaration": true, - "declarationMap": true, - "sourceMap": true, - "module": "ES2022", - "target": "ES2022", - "lib": ["ES2022"], - "moduleResolution": "node", - "esModuleInterop": true, - "skipLibCheck": true, - "strict": true, - "resolveJsonModule": true, - "allowSyntheticDefaultImports": true - }, - "include": ["src/**/*"], - "exclude": ["node_modules", "dist", "**/*.test.ts"] -} diff --git a/packages/midnight-setup/tsup.config.ts b/packages/midnight-setup/tsup.config.ts deleted file mode 100644 index a914f7156..000000000 --- a/packages/midnight-setup/tsup.config.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { defineConfig } from "tsup"; - -export default defineConfig({ - entry: ["src/index.ts"], - format: ["esm", "cjs"], - dts: true, - splitting: false, - sourcemap: true, - clean: true, - treeshake: true, - cjsInterop: true, - external: [ - "@midnight-ntwrk/compact-runtime", - "@midnight-ntwrk/midnight-js-contracts", - "@midnight-ntwrk/midnight-js-types", - "@midnight-ntwrk/dapp-connector-api", - "@midnight-ntwrk/midnight-js-fetch-zk-config-provider", - "@midnight-ntwrk/midnight-js-http-client-proof-provider", - "@midnight-ntwrk/midnight-js-indexer-public-data-provider", - "@midnight-ntwrk/midnight-js-level-private-state-provider", - "@midnight-ntwrk/midnight-js-network-id", - "pino", - "rxjs" - ], -}); From f18db48055b173a50cd327510fd01152eda1ed32 Mon Sep 17 00:00:00 2001 From: Jingles Date: Mon, 26 Jan 2026 00:09:30 +0800 Subject: [PATCH 6/7] clean up to fix build error --- apps/playground/package.json | 7 +- .../cardano/blockchain-providers-key.tsx | 8 +- apps/playground/src/hooks/useProviders.ts | 2 +- package-lock.json | 5538 +---------------- packages/mesh-core-csl/package.json | 1 - 5 files changed, 130 insertions(+), 5426 deletions(-) diff --git a/apps/playground/package.json b/apps/playground/package.json index 8a80064eb..0aed90c68 100644 --- a/apps/playground/package.json +++ b/apps/playground/package.json @@ -14,11 +14,12 @@ "@heroicons/react": "^2.1.3", "@mdx-js/loader": "^3.0.1", "@mdx-js/react": "^3.0.1", - "@meshsdk/bitcoin": "*", + "@meshsdk/bitcoin": "1.9.0-beta.98", "@meshsdk/contract": "*", "@meshsdk/core": "*", - "@meshsdk/hydra": "*", - "@meshsdk/react": "*", + "@meshsdk/hydra": "1.9.0-beta.98", + "@meshsdk/provider": "1.9.0-beta.98", + "@meshsdk/react": "1.9.0-beta.98", "@next/mdx": "^14.2.3", "@next/third-parties": "^14.2.5", "@nufi/dapp-client-cardano": "0.3.5", diff --git a/apps/playground/src/components/cardano/blockchain-providers-key.tsx b/apps/playground/src/components/cardano/blockchain-providers-key.tsx index f796854c1..8a3632f24 100644 --- a/apps/playground/src/components/cardano/blockchain-providers-key.tsx +++ b/apps/playground/src/components/cardano/blockchain-providers-key.tsx @@ -1,9 +1,7 @@ -import { - KoiosSupportedNetworks, - MaestroSupportedNetworks, -} from "@meshsdk/core"; - import Input from "~/components/form/input"; + +type KoiosSupportedNetworks = "api" | "preview" | "preprod" | "guild"; +type MaestroSupportedNetworks = "Mainnet" | "Preprod" | "Preview"; import InputTable from "~/components/sections/input-table"; import { useProviders } from "~/hooks/useProviders"; import Select from "../form/select"; diff --git a/apps/playground/src/hooks/useProviders.ts b/apps/playground/src/hooks/useProviders.ts index a673004d6..6b6872767 100644 --- a/apps/playground/src/hooks/useProviders.ts +++ b/apps/playground/src/hooks/useProviders.ts @@ -1,7 +1,7 @@ import { create } from "zustand"; import { persist } from "zustand/middleware"; -import { KoiosSupportedNetworks } from "@meshsdk/core"; +type KoiosSupportedNetworks = "api" | "preview" | "preprod" | "guild"; interface State { blockfrostKey: string | undefined; diff --git a/package-lock.json b/package-lock.json index 906ad2bc2..e3538c976 100644 --- a/package-lock.json +++ b/package-lock.json @@ -635,11 +635,12 @@ "@heroicons/react": "^2.1.3", "@mdx-js/loader": "^3.0.1", "@mdx-js/react": "^3.0.1", - "@meshsdk/bitcoin": "*", + "@meshsdk/bitcoin": "1.9.0-beta.98", "@meshsdk/contract": "*", "@meshsdk/core": "*", - "@meshsdk/hydra": "*", - "@meshsdk/react": "*", + "@meshsdk/hydra": "1.9.0-beta.98", + "@meshsdk/provider": "1.9.0-beta.98", + "@meshsdk/react": "1.9.0-beta.98", "@next/mdx": "^14.2.3", "@next/third-parties": "^14.2.5", "@nufi/dapp-client-cardano": "0.3.5", @@ -939,49 +940,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@apollo/client": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.14.0.tgz", - "integrity": "sha512-0YQKKRIxiMlIou+SekQqdCo0ZTHxOcES+K8vKB53cIDpwABNR0P0yRzPgsbgcj3zRJniD93S/ontsnZsCLZrxQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@graphql-typed-document-node/core": "^3.1.1", - "@wry/caches": "^1.0.0", - "@wry/equality": "^0.5.6", - "@wry/trie": "^0.5.0", - "graphql-tag": "^2.12.6", - "hoist-non-react-statics": "^3.3.2", - "optimism": "^0.18.0", - "prop-types": "^15.7.2", - "rehackt": "^0.1.0", - "symbol-observable": "^4.0.0", - "ts-invariant": "^0.10.3", - "tslib": "^2.3.0", - "zen-observable-ts": "^1.2.5" - }, - "peerDependencies": { - "graphql": "^15.0.0 || ^16.0.0", - "graphql-ws": "^5.5.5 || ^6.0.3", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc", - "subscriptions-transport-ws": "^0.9.0 || ^0.11.0" - }, - "peerDependenciesMeta": { - "graphql-ws": { - "optional": true - }, - "react": { - "optional": true - }, - "react-dom": { - "optional": true - }, - "subscriptions-transport-ws": { - "optional": true - } - } - }, "node_modules/@babel/code-frame": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", @@ -1989,22 +1947,20 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@colors/colors": { "version": "1.5.0", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "engines": { "node": ">=0.1.90" } }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@gar/promisify": { "version": "1.1.3", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@isaacs/cliui": { "version": "8.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2021,7 +1977,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@isaacs/cliui/node_modules/ansi-regex": { "version": "6.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -2033,13 +1988,11 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": { "version": "9.2.2", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2056,7 +2009,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@isaacs/cliui/node_modules/strip-ansi": { "version": "7.1.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2071,13 +2023,11 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@isaacs/string-locale-compare": { "version": "1.1.0", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@npmcli/arborist": { "version": "6.5.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2124,7 +2074,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@npmcli/config": { "version": "6.4.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2143,7 +2092,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@npmcli/disparity-colors": { "version": "3.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2155,7 +2103,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@npmcli/fs": { "version": "3.1.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2167,7 +2114,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@npmcli/git": { "version": "4.1.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2186,7 +2132,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@npmcli/installed-package-contents": { "version": "2.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2202,7 +2147,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@npmcli/map-workspaces": { "version": "3.0.4", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2217,7 +2161,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@npmcli/metavuln-calculator": { "version": "5.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2232,7 +2175,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@npmcli/move-file": { "version": "2.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2245,7 +2187,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@npmcli/name-from-folder": { "version": "2.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -2254,7 +2195,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@npmcli/node-gyp": { "version": "3.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -2263,7 +2203,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@npmcli/package-json": { "version": "4.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2281,7 +2220,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@npmcli/promise-spawn": { "version": "6.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2293,7 +2231,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@npmcli/query": { "version": "3.1.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2305,7 +2242,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@npmcli/run-script": { "version": "6.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2321,16 +2257,15 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@pkgjs/parseargs": { "version": "0.11.0", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "engines": { "node": ">=14" } }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@sigstore/bundle": { "version": "1.1.0", - "extraneous": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -2342,7 +2277,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@sigstore/protobuf-specs": { "version": "0.2.1", - "extraneous": true, "inBundle": true, "license": "Apache-2.0", "engines": { @@ -2351,7 +2285,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@sigstore/sign": { "version": "1.0.0", - "extraneous": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -2365,7 +2298,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@sigstore/tuf": { "version": "1.0.3", - "extraneous": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -2378,7 +2310,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@tootallnate/once": { "version": "2.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -2387,7 +2318,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@tufjs/canonical-json": { "version": "1.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -2396,7 +2326,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/@tufjs/models": { "version": "1.0.4", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2409,7 +2338,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/abbrev": { "version": "2.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -2418,7 +2346,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/agent-base": { "version": "6.0.2", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2430,7 +2357,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/agentkeepalive": { "version": "4.5.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2442,7 +2368,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/aggregate-error": { "version": "3.1.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2455,7 +2380,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/ansi-regex": { "version": "5.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -2464,7 +2388,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/ansi-styles": { "version": "4.3.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2479,19 +2402,16 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/aproba": { "version": "2.0.0", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/archy": { "version": "1.0.0", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/are-we-there-yet": { "version": "4.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -2500,13 +2420,11 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/balanced-match": { "version": "1.0.2", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/bin-links": { "version": "4.0.3", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2521,7 +2439,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/binary-extensions": { "version": "2.2.0", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -2530,7 +2447,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/brace-expansion": { "version": "2.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2539,7 +2455,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/builtins": { "version": "5.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2548,7 +2463,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/cacache": { "version": "17.1.4", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2571,7 +2485,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/chalk": { "version": "5.3.0", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -2583,7 +2496,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/chownr": { "version": "2.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -2592,7 +2504,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/ci-info": { "version": "4.0.0", - "extraneous": true, "funding": [ { "type": "github", @@ -2607,7 +2518,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/cidr-regex": { "version": "3.1.1", - "extraneous": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { @@ -2619,7 +2529,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/clean-stack": { "version": "2.2.0", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -2628,7 +2537,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/cli-columns": { "version": "4.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2641,7 +2549,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/cli-table3": { "version": "0.6.3", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2656,7 +2563,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/clone": { "version": "1.0.4", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -2665,7 +2571,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/cmd-shim": { "version": "6.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -2674,7 +2579,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/color-convert": { "version": "2.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2686,13 +2590,11 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/color-name": { "version": "1.1.4", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/color-support": { "version": "1.1.3", - "extraneous": true, "inBundle": true, "license": "ISC", "bin": { @@ -2701,7 +2603,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/columnify": { "version": "1.6.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2714,25 +2615,21 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/common-ancestor-path": { "version": "1.0.1", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/concat-map": { "version": "0.0.1", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/console-control-strings": { "version": "1.1.0", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/cross-spawn": { "version": "7.0.6", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2746,7 +2643,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/cross-spawn/node_modules/which": { "version": "2.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2761,7 +2657,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/cssesc": { "version": "3.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", "bin": { @@ -2773,7 +2668,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/debug": { "version": "4.3.7", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2790,7 +2684,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/defaults": { "version": "1.0.4", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2802,13 +2695,11 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/delegates": { "version": "1.0.0", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/diff": { "version": "5.2.0", - "extraneous": true, "inBundle": true, "license": "BSD-3-Clause", "engines": { @@ -2817,28 +2708,25 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/eastasianwidth": { "version": "0.2.0", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/emoji-regex": { "version": "8.0.0", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/encoding": { "version": "0.1.13", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "dependencies": { "iconv-lite": "^0.6.2" } }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/env-paths": { "version": "2.2.1", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -2847,19 +2735,16 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/err-code": { "version": "2.0.3", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/exponential-backoff": { "version": "3.1.1", - "extraneous": true, "inBundle": true, "license": "Apache-2.0" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/fastest-levenshtein": { "version": "1.0.16", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -2868,7 +2753,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/foreground-child": { "version": "3.1.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2884,7 +2768,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/fs-minipass": { "version": "3.0.3", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2896,13 +2779,11 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/fs.realpath": { "version": "1.0.0", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/function-bind": { "version": "1.1.2", - "extraneous": true, "inBundle": true, "license": "MIT", "funding": { @@ -2911,7 +2792,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/gauge": { "version": "5.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2930,7 +2810,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/glob": { "version": "10.3.10", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2952,19 +2831,16 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/graceful-fs": { "version": "4.2.11", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/has-unicode": { "version": "2.0.1", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/hasown": { "version": "2.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2976,7 +2852,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/hosted-git-info": { "version": "6.1.3", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -2988,13 +2863,11 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/http-cache-semantics": { "version": "4.1.1", - "extraneous": true, "inBundle": true, "license": "BSD-2-Clause" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/http-proxy-agent": { "version": "5.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -3008,7 +2881,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/https-proxy-agent": { "version": "5.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -3021,7 +2893,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/humanize-ms": { "version": "1.2.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -3030,9 +2901,9 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/iconv-lite": { "version": "0.6.3", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -3042,7 +2913,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/ignore-walk": { "version": "6.0.4", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3054,7 +2924,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/imurmurhash": { "version": "0.1.4", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -3063,7 +2932,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/indent-string": { "version": "4.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -3072,13 +2940,11 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/infer-owner": { "version": "1.0.4", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/inflight": { "version": "1.0.6", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3088,13 +2954,11 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/inherits": { "version": "2.0.4", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/ini": { "version": "4.1.1", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -3103,7 +2967,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/init-package-json": { "version": "5.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3121,7 +2984,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/ip-address": { "version": "9.0.5", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -3134,13 +2996,11 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/ip-address/node_modules/sprintf-js": { "version": "1.1.3", - "extraneous": true, "inBundle": true, "license": "BSD-3-Clause" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/ip-regex": { "version": "4.3.0", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -3149,7 +3009,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/is-cidr": { "version": "4.0.2", - "extraneous": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { @@ -3161,7 +3020,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/is-core-module": { "version": "2.13.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -3173,7 +3031,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -3182,19 +3039,16 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/is-lambda": { "version": "1.0.1", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/isexe": { "version": "2.0.0", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/jackspeak": { "version": "2.3.6", - "extraneous": true, "inBundle": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -3212,13 +3066,11 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/jsbn": { "version": "1.1.0", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/json-parse-even-better-errors": { "version": "3.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -3227,7 +3079,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/json-stringify-nice": { "version": "1.1.4", - "extraneous": true, "inBundle": true, "license": "ISC", "funding": { @@ -3239,25 +3090,21 @@ "engines": [ "node >= 0.2.0" ], - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/just-diff": { "version": "6.0.2", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/just-diff-apply": { "version": "5.5.0", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/libnpmaccess": { "version": "7.0.3", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3270,7 +3117,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/libnpmdiff": { "version": "5.0.21", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3290,7 +3136,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/libnpmexec": { "version": "6.0.5", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3312,7 +3157,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/libnpmfund": { "version": "4.2.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3324,7 +3168,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/libnpmhook": { "version": "9.0.4", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3337,7 +3180,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/libnpmorg": { "version": "5.0.5", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3350,7 +3192,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/libnpmpack": { "version": "5.0.21", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3365,7 +3206,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/libnpmpublish": { "version": "7.5.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3384,7 +3224,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/libnpmsearch": { "version": "6.0.3", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3396,7 +3235,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/libnpmteam": { "version": "5.0.4", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3409,7 +3247,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/libnpmversion": { "version": "4.0.3", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3425,7 +3262,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/lru-cache": { "version": "7.18.3", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -3434,7 +3270,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/make-fetch-happen": { "version": "11.1.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3460,7 +3295,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/make-fetch-happen/node_modules/minipass": { "version": "5.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -3469,7 +3303,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/minimatch": { "version": "9.0.3", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3484,7 +3317,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/minipass": { "version": "7.0.4", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -3493,7 +3325,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/minipass-collect": { "version": "1.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3505,7 +3336,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/minipass-collect/node_modules/minipass": { "version": "3.3.6", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3517,7 +3347,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/minipass-fetch": { "version": "3.0.4", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -3534,7 +3363,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/minipass-flush": { "version": "1.0.5", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3546,7 +3374,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/minipass-flush/node_modules/minipass": { "version": "3.3.6", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3558,7 +3385,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/minipass-json-stream": { "version": "1.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -3568,7 +3394,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/minipass-json-stream/node_modules/minipass": { "version": "3.3.6", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3580,7 +3405,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/minipass-pipeline": { "version": "1.2.4", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3592,7 +3416,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass": { "version": "3.3.6", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3604,7 +3427,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/minipass-sized": { "version": "1.0.3", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3616,7 +3438,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/minipass-sized/node_modules/minipass": { "version": "3.3.6", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3628,7 +3449,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/minizlib": { "version": "2.1.2", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -3641,7 +3461,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/minizlib/node_modules/minipass": { "version": "3.3.6", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3653,7 +3472,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/mkdirp": { "version": "1.0.4", - "extraneous": true, "inBundle": true, "license": "MIT", "bin": { @@ -3665,13 +3483,11 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/ms": { "version": "2.1.3", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/mute-stream": { "version": "1.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -3680,7 +3496,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/negotiator": { "version": "0.6.3", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -3689,7 +3504,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp": { "version": "9.4.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -3714,7 +3528,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/@npmcli/fs": { "version": "2.1.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3727,13 +3540,11 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/abbrev": { "version": "1.1.1", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/are-we-there-yet": { "version": "3.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3746,7 +3557,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/brace-expansion": { "version": "1.1.11", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -3756,7 +3566,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/cacache": { "version": "16.1.3", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3785,7 +3594,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/brace-expansion": { "version": "2.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -3794,7 +3602,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/glob": { "version": "8.1.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3813,7 +3620,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/minimatch": { "version": "5.1.6", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3825,7 +3631,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/fs-minipass": { "version": "2.1.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3837,7 +3642,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/gauge": { "version": "4.0.4", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3856,7 +3660,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/glob": { "version": "7.2.3", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3876,7 +3679,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/make-fetch-happen": { "version": "10.2.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3903,7 +3705,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/minimatch": { "version": "3.1.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3915,7 +3716,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/minipass": { "version": "3.3.6", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3927,7 +3727,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/minipass-fetch": { "version": "2.1.2", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -3944,7 +3743,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/nopt": { "version": "6.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3959,7 +3757,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/npmlog": { "version": "6.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3974,13 +3771,11 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/signal-exit": { "version": "3.0.7", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/ssri": { "version": "9.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -3992,7 +3787,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/unique-filename": { "version": "2.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4004,7 +3798,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/unique-slug": { "version": "3.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4016,7 +3809,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/node-gyp/node_modules/which": { "version": "2.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4031,7 +3823,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/nopt": { "version": "7.2.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4046,7 +3837,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/normalize-package-data": { "version": "5.0.0", - "extraneous": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { @@ -4061,7 +3851,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/npm-audit-report": { "version": "5.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -4070,7 +3859,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/npm-bundled": { "version": "3.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4082,7 +3870,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/npm-install-checks": { "version": "6.3.0", - "extraneous": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { @@ -4094,7 +3881,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/npm-normalize-package-bin": { "version": "3.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -4103,7 +3889,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/npm-package-arg": { "version": "10.1.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4118,7 +3903,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/npm-packlist": { "version": "7.0.4", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4130,7 +3914,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/npm-pick-manifest": { "version": "8.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4145,7 +3928,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/npm-profile": { "version": "7.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4158,7 +3940,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/npm-registry-fetch": { "version": "14.0.5", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4176,7 +3957,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/npm-registry-fetch/node_modules/minipass": { "version": "5.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -4185,7 +3965,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/npm-user-validate": { "version": "2.0.0", - "extraneous": true, "inBundle": true, "license": "BSD-2-Clause", "engines": { @@ -4194,7 +3973,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/npmlog": { "version": "7.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4209,7 +3987,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/once": { "version": "1.4.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4218,7 +3995,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/p-map": { "version": "4.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4233,7 +4009,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/pacote": { "version": "15.2.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4265,7 +4040,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/pacote/node_modules/minipass": { "version": "5.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -4274,7 +4048,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/parse-conflict-json": { "version": "3.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4288,7 +4061,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/path-is-absolute": { "version": "1.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -4297,7 +4069,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/path-key": { "version": "3.1.1", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -4306,7 +4077,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/path-scurry": { "version": "1.10.1", - "extraneous": true, "inBundle": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -4322,7 +4092,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/path-scurry/node_modules/lru-cache": { "version": "10.2.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -4331,7 +4100,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/postcss-selector-parser": { "version": "6.0.15", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4344,7 +4112,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/proc-log": { "version": "3.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -4353,7 +4120,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/promise-all-reject-late": { "version": "1.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "funding": { @@ -4362,7 +4128,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/promise-call-limit": { "version": "1.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "funding": { @@ -4371,13 +4136,11 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/promise-inflight": { "version": "1.0.1", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/promise-retry": { "version": "2.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4390,7 +4153,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/promzard": { "version": "1.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4402,7 +4164,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/qrcode-terminal": { "version": "0.12.0", - "extraneous": true, "inBundle": true, "bin": { "qrcode-terminal": "bin/qrcode-terminal.js" @@ -4410,7 +4171,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/read": { "version": "2.1.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4422,7 +4182,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/read-cmd-shim": { "version": "4.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -4431,7 +4190,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/read-package-json": { "version": "6.0.4", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4446,7 +4204,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/read-package-json-fast": { "version": "3.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4459,7 +4216,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/readable-stream": { "version": "3.6.2", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4473,7 +4229,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/retry": { "version": "0.12.0", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -4482,7 +4237,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/rimraf": { "version": "3.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4497,7 +4251,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/rimraf/node_modules/brace-expansion": { "version": "1.1.11", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4507,7 +4260,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/rimraf/node_modules/glob": { "version": "7.2.3", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4527,7 +4279,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/rimraf/node_modules/minimatch": { "version": "3.1.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4539,7 +4290,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/safe-buffer": { "version": "5.2.1", - "extraneous": true, "funding": [ { "type": "github", @@ -4559,13 +4309,12 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/safer-buffer": { "version": "2.1.2", - "extraneous": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/semver": { "version": "7.6.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4580,7 +4329,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/semver/node_modules/lru-cache": { "version": "6.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4592,13 +4340,11 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/set-blocking": { "version": "2.0.0", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/shebang-command": { "version": "2.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4610,7 +4356,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/shebang-regex": { "version": "3.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -4619,7 +4364,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/signal-exit": { "version": "4.1.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -4631,7 +4375,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/sigstore": { "version": "1.9.0", - "extraneous": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -4650,7 +4393,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/smart-buffer": { "version": "4.2.0", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -4660,7 +4402,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/socks": { "version": "2.8.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4674,7 +4415,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/socks-proxy-agent": { "version": "7.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4688,7 +4428,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/spdx-correct": { "version": "3.2.0", - "extraneous": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -4698,13 +4437,11 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/spdx-exceptions": { "version": "2.5.0", - "extraneous": true, "inBundle": true, "license": "CC-BY-3.0" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/spdx-expression-parse": { "version": "3.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4714,13 +4451,11 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/spdx-license-ids": { "version": "3.0.17", - "extraneous": true, "inBundle": true, "license": "CC0-1.0" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/ssri": { "version": "10.0.5", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4732,7 +4467,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/string_decoder": { "version": "1.3.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4741,7 +4475,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/string-width": { "version": "4.2.3", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4756,7 +4489,6 @@ "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/string-width-cjs": { "name": "string-width", "version": "4.2.3", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4770,7 +4502,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/strip-ansi": { "version": "6.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4783,7 +4514,6 @@ "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/strip-ansi-cjs": { "name": "strip-ansi", "version": "6.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4795,7 +4525,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/supports-color": { "version": "9.4.0", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -4807,7 +4536,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/tar": { "version": "6.2.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4824,7 +4552,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/tar/node_modules/fs-minipass": { "version": "2.1.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4836,7 +4563,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { "version": "3.3.6", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4848,7 +4574,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/tar/node_modules/minipass": { "version": "5.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -4857,19 +4582,16 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/text-table": { "version": "0.2.0", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/tiny-relative-date": { "version": "1.3.0", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/treeverse": { "version": "3.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -4878,7 +4600,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/tuf-js": { "version": "1.1.7", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4892,7 +4613,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/unique-filename": { "version": "3.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4904,7 +4624,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/unique-slug": { "version": "4.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4916,13 +4635,11 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/util-deprecate": { "version": "1.0.2", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/validate-npm-package-license": { "version": "3.0.4", - "extraneous": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -4932,7 +4649,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/validate-npm-package-name": { "version": "5.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4944,13 +4660,11 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/walk-up-path": { "version": "3.0.1", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/wcwidth": { "version": "1.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -4959,7 +4673,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/which": { "version": "3.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4974,7 +4687,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/wide-align": { "version": "1.1.5", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -4983,7 +4695,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/wrap-ansi": { "version": "8.1.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -5001,7 +4712,6 @@ "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/wrap-ansi-cjs": { "name": "wrap-ansi", "version": "7.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -5018,7 +4728,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { "version": "6.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -5030,7 +4739,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "6.2.1", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -5042,13 +4750,11 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": { "version": "9.2.2", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": { "version": "5.1.2", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -5065,7 +4771,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/wrap-ansi/node_modules/strip-ansi": { "version": "7.1.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -5080,13 +4785,11 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/wrappy": { "version": "1.0.2", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/write-file-atomic": { "version": "5.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5099,7 +4802,6 @@ }, "node_modules/@cardano-sdk/crypto/node_modules/npm/node_modules/yallist": { "version": "4.0.0", - "extraneous": true, "inBundle": true, "license": "ISC" }, @@ -5516,22 +5218,20 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@colors/colors": { "version": "1.5.0", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "engines": { "node": ">=0.1.90" } }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@gar/promisify": { "version": "1.1.3", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@isaacs/cliui": { "version": "8.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5548,7 +5248,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@isaacs/cliui/node_modules/ansi-regex": { "version": "6.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -5560,13 +5259,11 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": { "version": "9.2.2", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -5583,7 +5280,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@isaacs/cliui/node_modules/strip-ansi": { "version": "7.1.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -5598,13 +5294,11 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@isaacs/string-locale-compare": { "version": "1.1.0", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@npmcli/arborist": { "version": "6.5.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5651,7 +5345,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@npmcli/config": { "version": "6.4.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5670,7 +5363,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@npmcli/disparity-colors": { "version": "3.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5682,7 +5374,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@npmcli/fs": { "version": "3.1.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5694,7 +5385,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@npmcli/git": { "version": "4.1.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5713,7 +5403,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@npmcli/installed-package-contents": { "version": "2.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5729,7 +5418,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@npmcli/map-workspaces": { "version": "3.0.4", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5744,7 +5432,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@npmcli/metavuln-calculator": { "version": "5.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5759,7 +5446,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@npmcli/move-file": { "version": "2.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -5772,7 +5458,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@npmcli/name-from-folder": { "version": "2.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -5781,7 +5466,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@npmcli/node-gyp": { "version": "3.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -5790,7 +5474,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@npmcli/package-json": { "version": "4.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5808,7 +5491,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@npmcli/promise-spawn": { "version": "6.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5820,7 +5502,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@npmcli/query": { "version": "3.1.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5832,7 +5513,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@npmcli/run-script": { "version": "6.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -5848,16 +5528,15 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@pkgjs/parseargs": { "version": "0.11.0", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "engines": { "node": ">=14" } }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@sigstore/bundle": { "version": "1.1.0", - "extraneous": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -5869,7 +5548,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@sigstore/protobuf-specs": { "version": "0.2.1", - "extraneous": true, "inBundle": true, "license": "Apache-2.0", "engines": { @@ -5878,7 +5556,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@sigstore/sign": { "version": "1.0.0", - "extraneous": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -5892,7 +5569,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@sigstore/tuf": { "version": "1.0.3", - "extraneous": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -5905,7 +5581,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@tootallnate/once": { "version": "2.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -5914,7 +5589,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@tufjs/canonical-json": { "version": "1.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -5923,7 +5597,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/@tufjs/models": { "version": "1.0.4", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -5936,7 +5609,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/abbrev": { "version": "2.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -5945,7 +5617,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/agent-base": { "version": "6.0.2", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -5957,7 +5628,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/agentkeepalive": { "version": "4.5.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -5969,7 +5639,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/aggregate-error": { "version": "3.1.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -5982,7 +5651,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/ansi-regex": { "version": "5.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -5991,7 +5659,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/ansi-styles": { "version": "4.3.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6006,19 +5673,16 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/aproba": { "version": "2.0.0", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/archy": { "version": "1.0.0", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/are-we-there-yet": { "version": "4.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -6027,13 +5691,11 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/balanced-match": { "version": "1.0.2", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/bin-links": { "version": "4.0.3", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6048,7 +5710,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/binary-extensions": { "version": "2.2.0", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -6057,7 +5718,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/brace-expansion": { "version": "2.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6066,7 +5726,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/builtins": { "version": "5.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6075,7 +5734,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/cacache": { "version": "17.1.4", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6098,7 +5756,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/chalk": { "version": "5.3.0", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -6110,7 +5767,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/chownr": { "version": "2.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -6119,7 +5775,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/ci-info": { "version": "4.0.0", - "extraneous": true, "funding": [ { "type": "github", @@ -6134,7 +5789,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/cidr-regex": { "version": "3.1.1", - "extraneous": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { @@ -6146,7 +5800,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/clean-stack": { "version": "2.2.0", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -6155,7 +5808,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/cli-columns": { "version": "4.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6168,7 +5820,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/cli-table3": { "version": "0.6.3", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6183,7 +5834,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/clone": { "version": "1.0.4", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -6192,7 +5842,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/cmd-shim": { "version": "6.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -6201,7 +5850,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/color-convert": { "version": "2.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6213,13 +5861,11 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/color-name": { "version": "1.1.4", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/color-support": { "version": "1.1.3", - "extraneous": true, "inBundle": true, "license": "ISC", "bin": { @@ -6228,7 +5874,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/columnify": { "version": "1.6.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6241,25 +5886,21 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/common-ancestor-path": { "version": "1.0.1", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/concat-map": { "version": "0.0.1", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/console-control-strings": { "version": "1.1.0", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/cross-spawn": { "version": "7.0.6", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6273,7 +5914,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/cross-spawn/node_modules/which": { "version": "2.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6288,7 +5928,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/cssesc": { "version": "3.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", "bin": { @@ -6300,7 +5939,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/debug": { "version": "4.3.7", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6317,7 +5955,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/defaults": { "version": "1.0.4", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6329,13 +5966,11 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/delegates": { "version": "1.0.0", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/diff": { "version": "5.2.0", - "extraneous": true, "inBundle": true, "license": "BSD-3-Clause", "engines": { @@ -6344,28 +5979,25 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/eastasianwidth": { "version": "0.2.0", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/emoji-regex": { "version": "8.0.0", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/encoding": { "version": "0.1.13", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "dependencies": { "iconv-lite": "^0.6.2" } }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/env-paths": { "version": "2.2.1", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -6374,19 +6006,16 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/err-code": { "version": "2.0.3", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/exponential-backoff": { "version": "3.1.1", - "extraneous": true, "inBundle": true, "license": "Apache-2.0" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/fastest-levenshtein": { "version": "1.0.16", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -6395,7 +6024,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/foreground-child": { "version": "3.1.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6411,7 +6039,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/fs-minipass": { "version": "3.0.3", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6423,13 +6050,11 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/fs.realpath": { "version": "1.0.0", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/function-bind": { "version": "1.1.2", - "extraneous": true, "inBundle": true, "license": "MIT", "funding": { @@ -6438,7 +6063,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/gauge": { "version": "5.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6457,7 +6081,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/glob": { "version": "10.3.10", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6479,19 +6102,16 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/graceful-fs": { "version": "4.2.11", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/has-unicode": { "version": "2.0.1", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/hasown": { "version": "2.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6503,7 +6123,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/hosted-git-info": { "version": "6.1.3", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6515,13 +6134,11 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/http-cache-semantics": { "version": "4.1.1", - "extraneous": true, "inBundle": true, "license": "BSD-2-Clause" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/http-proxy-agent": { "version": "5.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6535,7 +6152,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/https-proxy-agent": { "version": "5.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6548,7 +6164,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/humanize-ms": { "version": "1.2.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6557,9 +6172,9 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/iconv-lite": { "version": "0.6.3", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -6569,7 +6184,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/ignore-walk": { "version": "6.0.4", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6581,7 +6195,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/imurmurhash": { "version": "0.1.4", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -6590,7 +6203,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/indent-string": { "version": "4.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -6599,13 +6211,11 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/infer-owner": { "version": "1.0.4", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/inflight": { "version": "1.0.6", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6615,13 +6225,11 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/inherits": { "version": "2.0.4", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/ini": { "version": "4.1.1", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -6630,7 +6238,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/init-package-json": { "version": "5.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6648,7 +6255,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/ip-address": { "version": "9.0.5", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6661,13 +6267,11 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/ip-address/node_modules/sprintf-js": { "version": "1.1.3", - "extraneous": true, "inBundle": true, "license": "BSD-3-Clause" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/ip-regex": { "version": "4.3.0", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -6676,7 +6280,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/is-cidr": { "version": "4.0.2", - "extraneous": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { @@ -6688,7 +6291,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/is-core-module": { "version": "2.13.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -6700,7 +6302,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -6709,19 +6310,16 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/is-lambda": { "version": "1.0.1", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/isexe": { "version": "2.0.0", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/jackspeak": { "version": "2.3.6", - "extraneous": true, "inBundle": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -6739,13 +6337,11 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/jsbn": { "version": "1.1.0", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/json-parse-even-better-errors": { "version": "3.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -6754,7 +6350,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/json-stringify-nice": { "version": "1.1.4", - "extraneous": true, "inBundle": true, "license": "ISC", "funding": { @@ -6766,25 +6361,21 @@ "engines": [ "node >= 0.2.0" ], - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/just-diff": { "version": "6.0.2", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/just-diff-apply": { "version": "5.5.0", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/libnpmaccess": { "version": "7.0.3", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6797,7 +6388,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/libnpmdiff": { "version": "5.0.21", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6817,7 +6407,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/libnpmexec": { "version": "6.0.5", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6839,7 +6428,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/libnpmfund": { "version": "4.2.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6851,7 +6439,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/libnpmhook": { "version": "9.0.4", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6864,7 +6451,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/libnpmorg": { "version": "5.0.5", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6877,7 +6463,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/libnpmpack": { "version": "5.0.21", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6892,7 +6477,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/libnpmpublish": { "version": "7.5.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6911,7 +6495,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/libnpmsearch": { "version": "6.0.3", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6923,7 +6506,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/libnpmteam": { "version": "5.0.4", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6936,7 +6518,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/libnpmversion": { "version": "4.0.3", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6952,7 +6533,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/lru-cache": { "version": "7.18.3", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -6961,7 +6541,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/make-fetch-happen": { "version": "11.1.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -6987,7 +6566,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/make-fetch-happen/node_modules/minipass": { "version": "5.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -6996,7 +6574,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/minimatch": { "version": "9.0.3", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7011,7 +6588,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/minipass": { "version": "7.0.4", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -7020,7 +6596,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/minipass-collect": { "version": "1.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7032,7 +6607,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/minipass-collect/node_modules/minipass": { "version": "3.3.6", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7044,7 +6618,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/minipass-fetch": { "version": "3.0.4", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7061,7 +6634,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/minipass-flush": { "version": "1.0.5", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7073,7 +6645,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/minipass-flush/node_modules/minipass": { "version": "3.3.6", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7085,7 +6656,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/minipass-json-stream": { "version": "1.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7095,7 +6665,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/minipass-json-stream/node_modules/minipass": { "version": "3.3.6", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7107,7 +6676,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/minipass-pipeline": { "version": "1.2.4", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7119,7 +6687,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass": { "version": "3.3.6", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7131,7 +6698,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/minipass-sized": { "version": "1.0.3", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7143,7 +6709,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/minipass-sized/node_modules/minipass": { "version": "3.3.6", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7155,7 +6720,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/minizlib": { "version": "2.1.2", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7168,7 +6732,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/minizlib/node_modules/minipass": { "version": "3.3.6", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7180,7 +6743,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/mkdirp": { "version": "1.0.4", - "extraneous": true, "inBundle": true, "license": "MIT", "bin": { @@ -7192,13 +6754,11 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/ms": { "version": "2.1.3", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/mute-stream": { "version": "1.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -7207,7 +6767,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/negotiator": { "version": "0.6.3", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -7216,7 +6775,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp": { "version": "9.4.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7241,7 +6799,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/@npmcli/fs": { "version": "2.1.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7254,13 +6811,11 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/abbrev": { "version": "1.1.1", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/are-we-there-yet": { "version": "3.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7273,7 +6828,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/brace-expansion": { "version": "1.1.11", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7283,7 +6837,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/cacache": { "version": "16.1.3", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7312,7 +6865,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/brace-expansion": { "version": "2.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7321,7 +6873,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/glob": { "version": "8.1.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7340,7 +6891,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/minimatch": { "version": "5.1.6", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7352,7 +6902,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/fs-minipass": { "version": "2.1.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7364,7 +6913,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/gauge": { "version": "4.0.4", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7383,7 +6931,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/glob": { "version": "7.2.3", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7403,7 +6950,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/make-fetch-happen": { "version": "10.2.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7430,7 +6976,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/minimatch": { "version": "3.1.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7442,7 +6987,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/minipass": { "version": "3.3.6", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7454,7 +6998,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/minipass-fetch": { "version": "2.1.2", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7471,7 +7014,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/nopt": { "version": "6.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7486,7 +7028,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/npmlog": { "version": "6.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7501,13 +7042,11 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/signal-exit": { "version": "3.0.7", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/ssri": { "version": "9.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7519,7 +7058,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/unique-filename": { "version": "2.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7531,7 +7069,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/unique-slug": { "version": "3.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7543,7 +7080,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/node-gyp/node_modules/which": { "version": "2.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7558,7 +7094,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/nopt": { "version": "7.2.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7573,7 +7108,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/normalize-package-data": { "version": "5.0.0", - "extraneous": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { @@ -7588,7 +7122,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/npm-audit-report": { "version": "5.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -7597,7 +7130,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/npm-bundled": { "version": "3.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7609,7 +7141,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/npm-install-checks": { "version": "6.3.0", - "extraneous": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { @@ -7621,7 +7152,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/npm-normalize-package-bin": { "version": "3.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -7630,7 +7160,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/npm-package-arg": { "version": "10.1.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7645,7 +7174,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/npm-packlist": { "version": "7.0.4", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7657,7 +7185,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/npm-pick-manifest": { "version": "8.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7672,7 +7199,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/npm-profile": { "version": "7.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7685,7 +7211,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/npm-registry-fetch": { "version": "14.0.5", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7703,7 +7228,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/npm-registry-fetch/node_modules/minipass": { "version": "5.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -7712,7 +7236,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/npm-user-validate": { "version": "2.0.0", - "extraneous": true, "inBundle": true, "license": "BSD-2-Clause", "engines": { @@ -7721,7 +7244,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/npmlog": { "version": "7.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7736,7 +7258,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/once": { "version": "1.4.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7745,7 +7266,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/p-map": { "version": "4.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7760,7 +7280,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/pacote": { "version": "15.2.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7792,7 +7311,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/pacote/node_modules/minipass": { "version": "5.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -7801,7 +7319,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/parse-conflict-json": { "version": "3.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7815,7 +7332,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/path-is-absolute": { "version": "1.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -7824,7 +7340,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/path-key": { "version": "3.1.1", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -7833,7 +7348,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/path-scurry": { "version": "1.10.1", - "extraneous": true, "inBundle": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -7849,7 +7363,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/path-scurry/node_modules/lru-cache": { "version": "10.2.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -7858,7 +7371,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/postcss-selector-parser": { "version": "6.0.15", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7871,7 +7383,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/proc-log": { "version": "3.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -7880,7 +7391,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/promise-all-reject-late": { "version": "1.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "funding": { @@ -7889,7 +7399,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/promise-call-limit": { "version": "1.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "funding": { @@ -7898,13 +7407,11 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/promise-inflight": { "version": "1.0.1", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/promise-retry": { "version": "2.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -7917,7 +7424,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/promzard": { "version": "1.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7929,7 +7435,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/qrcode-terminal": { "version": "0.12.0", - "extraneous": true, "inBundle": true, "bin": { "qrcode-terminal": "bin/qrcode-terminal.js" @@ -7937,7 +7442,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/read": { "version": "2.1.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7949,7 +7453,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/read-cmd-shim": { "version": "4.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -7958,7 +7461,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/read-package-json": { "version": "6.0.4", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7973,7 +7475,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/read-package-json-fast": { "version": "3.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -7986,7 +7487,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/readable-stream": { "version": "3.6.2", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8000,7 +7500,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/retry": { "version": "0.12.0", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -8009,7 +7508,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/rimraf": { "version": "3.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8024,7 +7522,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/rimraf/node_modules/brace-expansion": { "version": "1.1.11", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8034,7 +7531,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/rimraf/node_modules/glob": { "version": "7.2.3", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8054,7 +7550,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/rimraf/node_modules/minimatch": { "version": "3.1.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8066,7 +7561,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/safe-buffer": { "version": "5.2.1", - "extraneous": true, "funding": [ { "type": "github", @@ -8086,13 +7580,12 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/safer-buffer": { "version": "2.1.2", - "extraneous": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/semver": { "version": "7.6.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8107,7 +7600,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/semver/node_modules/lru-cache": { "version": "6.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8119,13 +7611,11 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/set-blocking": { "version": "2.0.0", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/shebang-command": { "version": "2.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8137,7 +7627,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/shebang-regex": { "version": "3.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -8146,7 +7635,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/signal-exit": { "version": "4.1.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -8158,7 +7646,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/sigstore": { "version": "1.9.0", - "extraneous": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -8177,7 +7664,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/smart-buffer": { "version": "4.2.0", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -8187,7 +7673,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/socks": { "version": "2.8.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8201,7 +7686,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/socks-proxy-agent": { "version": "7.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8215,7 +7699,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/spdx-correct": { "version": "3.2.0", - "extraneous": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -8225,13 +7708,11 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/spdx-exceptions": { "version": "2.5.0", - "extraneous": true, "inBundle": true, "license": "CC-BY-3.0" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/spdx-expression-parse": { "version": "3.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8241,13 +7722,11 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/spdx-license-ids": { "version": "3.0.17", - "extraneous": true, "inBundle": true, "license": "CC0-1.0" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/ssri": { "version": "10.0.5", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8259,7 +7738,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/string_decoder": { "version": "1.3.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8268,7 +7746,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/string-width": { "version": "4.2.3", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8283,7 +7760,6 @@ "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/string-width-cjs": { "name": "string-width", "version": "4.2.3", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8297,7 +7773,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/strip-ansi": { "version": "6.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8310,7 +7785,6 @@ "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/strip-ansi-cjs": { "name": "strip-ansi", "version": "6.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8322,7 +7796,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/supports-color": { "version": "9.4.0", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -8334,7 +7807,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/tar": { "version": "6.2.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8351,7 +7823,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/tar/node_modules/fs-minipass": { "version": "2.1.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8363,7 +7834,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { "version": "3.3.6", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8375,7 +7845,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/tar/node_modules/minipass": { "version": "5.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -8384,19 +7853,16 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/text-table": { "version": "0.2.0", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/tiny-relative-date": { "version": "1.3.0", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/treeverse": { "version": "3.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -8405,7 +7871,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/tuf-js": { "version": "1.1.7", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8419,7 +7884,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/unique-filename": { "version": "3.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8431,7 +7895,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/unique-slug": { "version": "4.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8443,13 +7906,11 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/util-deprecate": { "version": "1.0.2", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/validate-npm-package-license": { "version": "3.0.4", - "extraneous": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -8459,7 +7920,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/validate-npm-package-name": { "version": "5.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8471,13 +7931,11 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/walk-up-path": { "version": "3.0.1", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/wcwidth": { "version": "1.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8486,7 +7944,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/which": { "version": "3.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8501,7 +7958,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/wide-align": { "version": "1.1.5", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8510,7 +7966,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/wrap-ansi": { "version": "8.1.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8528,7 +7983,6 @@ "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/wrap-ansi-cjs": { "name": "wrap-ansi", "version": "7.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8545,7 +7999,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { "version": "6.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -8557,7 +8010,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "6.2.1", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -8569,13 +8021,11 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": { "version": "9.2.2", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": { "version": "5.1.2", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8592,7 +8042,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/wrap-ansi/node_modules/strip-ansi": { "version": "7.1.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8607,13 +8056,11 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/wrappy": { "version": "1.0.2", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/write-file-atomic": { "version": "5.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8626,7 +8073,6 @@ }, "node_modules/@cardano-sdk/input-selection/node_modules/npm/node_modules/yallist": { "version": "4.0.0", - "extraneous": true, "inBundle": true, "license": "ISC" }, @@ -8916,22 +8362,20 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@colors/colors": { "version": "1.5.0", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "engines": { "node": ">=0.1.90" } }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@gar/promisify": { "version": "1.1.3", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@isaacs/cliui": { "version": "8.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -8948,7 +8392,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@isaacs/cliui/node_modules/ansi-regex": { "version": "6.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -8960,13 +8403,11 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": { "version": "9.2.2", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8983,7 +8424,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@isaacs/cliui/node_modules/strip-ansi": { "version": "7.1.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -8998,13 +8438,11 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@isaacs/string-locale-compare": { "version": "1.1.0", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@npmcli/arborist": { "version": "6.5.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9051,7 +8489,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@npmcli/config": { "version": "6.4.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9070,7 +8507,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@npmcli/disparity-colors": { "version": "3.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9082,7 +8518,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@npmcli/fs": { "version": "3.1.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9094,7 +8529,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@npmcli/git": { "version": "4.1.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9113,7 +8547,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@npmcli/installed-package-contents": { "version": "2.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9129,7 +8562,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@npmcli/map-workspaces": { "version": "3.0.4", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9144,7 +8576,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@npmcli/metavuln-calculator": { "version": "5.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9159,7 +8590,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@npmcli/move-file": { "version": "2.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9172,7 +8602,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@npmcli/name-from-folder": { "version": "2.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -9181,7 +8610,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@npmcli/node-gyp": { "version": "3.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -9190,7 +8618,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@npmcli/package-json": { "version": "4.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9208,7 +8635,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@npmcli/promise-spawn": { "version": "6.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9220,7 +8646,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@npmcli/query": { "version": "3.1.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9232,7 +8657,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@npmcli/run-script": { "version": "6.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9248,16 +8672,15 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@pkgjs/parseargs": { "version": "0.11.0", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "engines": { "node": ">=14" } }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@sigstore/bundle": { "version": "1.1.0", - "extraneous": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -9269,7 +8692,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@sigstore/protobuf-specs": { "version": "0.2.1", - "extraneous": true, "inBundle": true, "license": "Apache-2.0", "engines": { @@ -9278,7 +8700,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@sigstore/sign": { "version": "1.0.0", - "extraneous": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -9292,7 +8713,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@sigstore/tuf": { "version": "1.0.3", - "extraneous": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -9305,7 +8725,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@tootallnate/once": { "version": "2.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -9314,7 +8733,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@tufjs/canonical-json": { "version": "1.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -9323,7 +8741,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/@tufjs/models": { "version": "1.0.4", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9336,7 +8753,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/abbrev": { "version": "2.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -9345,7 +8761,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/agent-base": { "version": "6.0.2", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9357,7 +8772,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/agentkeepalive": { "version": "4.5.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9369,7 +8783,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/aggregate-error": { "version": "3.1.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9382,7 +8795,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/ansi-regex": { "version": "5.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -9391,7 +8803,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/ansi-styles": { "version": "4.3.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9406,19 +8817,16 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/aproba": { "version": "2.0.0", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/archy": { "version": "1.0.0", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/are-we-there-yet": { "version": "4.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -9427,13 +8835,11 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/balanced-match": { "version": "1.0.2", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/bin-links": { "version": "4.0.3", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9448,7 +8854,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/binary-extensions": { "version": "2.2.0", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -9457,7 +8862,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/brace-expansion": { "version": "2.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9466,7 +8870,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/builtins": { "version": "5.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9475,7 +8878,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/cacache": { "version": "17.1.4", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9498,7 +8900,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/chalk": { "version": "5.3.0", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -9510,7 +8911,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/chownr": { "version": "2.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -9519,7 +8919,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/ci-info": { "version": "4.0.0", - "extraneous": true, "funding": [ { "type": "github", @@ -9534,7 +8933,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/cidr-regex": { "version": "3.1.1", - "extraneous": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { @@ -9546,7 +8944,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/clean-stack": { "version": "2.2.0", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -9555,7 +8952,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/cli-columns": { "version": "4.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9568,7 +8964,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/cli-table3": { "version": "0.6.3", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9583,7 +8978,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/clone": { "version": "1.0.4", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -9592,7 +8986,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/cmd-shim": { "version": "6.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -9601,7 +8994,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/color-convert": { "version": "2.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9613,13 +9005,11 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/color-name": { "version": "1.1.4", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/color-support": { "version": "1.1.3", - "extraneous": true, "inBundle": true, "license": "ISC", "bin": { @@ -9628,7 +9018,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/columnify": { "version": "1.6.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9641,25 +9030,21 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/common-ancestor-path": { "version": "1.0.1", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/concat-map": { "version": "0.0.1", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/console-control-strings": { "version": "1.1.0", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/cross-spawn": { "version": "7.0.6", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9673,7 +9058,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/cross-spawn/node_modules/which": { "version": "2.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9688,7 +9072,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/cssesc": { "version": "3.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", "bin": { @@ -9700,7 +9083,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/debug": { "version": "4.3.7", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9717,7 +9099,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/defaults": { "version": "1.0.4", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9729,13 +9110,11 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/delegates": { "version": "1.0.0", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/diff": { "version": "5.2.0", - "extraneous": true, "inBundle": true, "license": "BSD-3-Clause", "engines": { @@ -9744,28 +9123,25 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/eastasianwidth": { "version": "0.2.0", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/emoji-regex": { "version": "8.0.0", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/encoding": { "version": "0.1.13", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "dependencies": { "iconv-lite": "^0.6.2" } }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/env-paths": { "version": "2.2.1", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -9774,19 +9150,16 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/err-code": { "version": "2.0.3", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/exponential-backoff": { "version": "3.1.1", - "extraneous": true, "inBundle": true, "license": "Apache-2.0" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/fastest-levenshtein": { "version": "1.0.16", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -9795,7 +9168,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/foreground-child": { "version": "3.1.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9811,7 +9183,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/fs-minipass": { "version": "3.0.3", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9823,13 +9194,11 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/fs.realpath": { "version": "1.0.0", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/function-bind": { "version": "1.1.2", - "extraneous": true, "inBundle": true, "license": "MIT", "funding": { @@ -9838,7 +9207,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/gauge": { "version": "5.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9857,7 +9225,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/glob": { "version": "10.3.10", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9879,19 +9246,16 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/graceful-fs": { "version": "4.2.11", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/has-unicode": { "version": "2.0.1", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/hasown": { "version": "2.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9903,7 +9267,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/hosted-git-info": { "version": "6.1.3", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9915,13 +9278,11 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/http-cache-semantics": { "version": "4.1.1", - "extraneous": true, "inBundle": true, "license": "BSD-2-Clause" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/http-proxy-agent": { "version": "5.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9935,7 +9296,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/https-proxy-agent": { "version": "5.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9948,7 +9308,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/humanize-ms": { "version": "1.2.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -9957,9 +9316,9 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/iconv-lite": { "version": "0.6.3", - "extraneous": true, "inBundle": true, "license": "MIT", + "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -9969,7 +9328,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/ignore-walk": { "version": "6.0.4", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -9981,7 +9339,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/imurmurhash": { "version": "0.1.4", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -9990,7 +9347,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/indent-string": { "version": "4.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -9999,13 +9355,11 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/infer-owner": { "version": "1.0.4", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/inflight": { "version": "1.0.6", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10015,13 +9369,11 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/inherits": { "version": "2.0.4", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/ini": { "version": "4.1.1", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -10030,7 +9382,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/init-package-json": { "version": "5.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10048,7 +9399,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/ip-address": { "version": "9.0.5", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -10061,13 +9411,11 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/ip-address/node_modules/sprintf-js": { "version": "1.1.3", - "extraneous": true, "inBundle": true, "license": "BSD-3-Clause" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/ip-regex": { "version": "4.3.0", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -10076,7 +9424,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/is-cidr": { "version": "4.0.2", - "extraneous": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { @@ -10088,7 +9435,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/is-core-module": { "version": "2.13.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -10100,7 +9446,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -10109,19 +9454,16 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/is-lambda": { "version": "1.0.1", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/isexe": { "version": "2.0.0", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/jackspeak": { "version": "2.3.6", - "extraneous": true, "inBundle": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -10139,13 +9481,11 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/jsbn": { "version": "1.1.0", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/json-parse-even-better-errors": { "version": "3.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -10154,7 +9494,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/json-stringify-nice": { "version": "1.1.4", - "extraneous": true, "inBundle": true, "license": "ISC", "funding": { @@ -10166,25 +9505,21 @@ "engines": [ "node >= 0.2.0" ], - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/just-diff": { "version": "6.0.2", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/just-diff-apply": { "version": "5.5.0", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/libnpmaccess": { "version": "7.0.3", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10197,7 +9532,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/libnpmdiff": { "version": "5.0.21", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10217,7 +9551,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/libnpmexec": { "version": "6.0.5", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10239,7 +9572,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/libnpmfund": { "version": "4.2.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10251,7 +9583,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/libnpmhook": { "version": "9.0.4", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10264,7 +9595,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/libnpmorg": { "version": "5.0.5", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10277,7 +9607,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/libnpmpack": { "version": "5.0.21", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10292,7 +9621,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/libnpmpublish": { "version": "7.5.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10311,7 +9639,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/libnpmsearch": { "version": "6.0.3", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10323,7 +9650,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/libnpmteam": { "version": "5.0.4", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10336,7 +9662,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/libnpmversion": { "version": "4.0.3", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10352,7 +9677,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/lru-cache": { "version": "7.18.3", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -10361,7 +9685,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/make-fetch-happen": { "version": "11.1.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10387,7 +9710,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/make-fetch-happen/node_modules/minipass": { "version": "5.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -10396,7 +9718,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/minimatch": { "version": "9.0.3", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10411,7 +9732,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/minipass": { "version": "7.0.4", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -10420,7 +9740,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/minipass-collect": { "version": "1.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10432,7 +9751,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/minipass-collect/node_modules/minipass": { "version": "3.3.6", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10444,7 +9762,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/minipass-fetch": { "version": "3.0.4", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -10461,7 +9778,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/minipass-flush": { "version": "1.0.5", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10473,7 +9789,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/minipass-flush/node_modules/minipass": { "version": "3.3.6", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10485,7 +9800,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/minipass-json-stream": { "version": "1.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -10495,7 +9809,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/minipass-json-stream/node_modules/minipass": { "version": "3.3.6", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10507,7 +9820,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/minipass-pipeline": { "version": "1.2.4", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10519,7 +9831,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass": { "version": "3.3.6", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10531,7 +9842,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/minipass-sized": { "version": "1.0.3", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10543,7 +9853,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/minipass-sized/node_modules/minipass": { "version": "3.3.6", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10555,7 +9864,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/minizlib": { "version": "2.1.2", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -10568,7 +9876,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/minizlib/node_modules/minipass": { "version": "3.3.6", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10580,7 +9887,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/mkdirp": { "version": "1.0.4", - "extraneous": true, "inBundle": true, "license": "MIT", "bin": { @@ -10592,13 +9898,11 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/ms": { "version": "2.1.3", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/mute-stream": { "version": "1.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -10607,7 +9911,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/negotiator": { "version": "0.6.3", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -10616,7 +9919,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp": { "version": "9.4.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -10641,7 +9943,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/@npmcli/fs": { "version": "2.1.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10654,13 +9955,11 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/abbrev": { "version": "1.1.1", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/are-we-there-yet": { "version": "3.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10673,7 +9972,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/brace-expansion": { "version": "1.1.11", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -10683,7 +9981,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/cacache": { "version": "16.1.3", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10712,7 +10009,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/brace-expansion": { "version": "2.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -10721,7 +10017,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/glob": { "version": "8.1.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10740,7 +10035,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/minimatch": { "version": "5.1.6", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10752,7 +10046,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/fs-minipass": { "version": "2.1.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10764,7 +10057,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/gauge": { "version": "4.0.4", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10783,7 +10075,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/glob": { "version": "7.2.3", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10803,7 +10094,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/make-fetch-happen": { "version": "10.2.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10830,7 +10120,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/minimatch": { "version": "3.1.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10842,7 +10131,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/minipass": { "version": "3.3.6", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10854,7 +10142,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/minipass-fetch": { "version": "2.1.2", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -10871,7 +10158,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/nopt": { "version": "6.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10886,7 +10172,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/npmlog": { "version": "6.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10901,13 +10186,11 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/signal-exit": { "version": "3.0.7", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/ssri": { "version": "9.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10919,7 +10202,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/unique-filename": { "version": "2.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10931,7 +10213,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/unique-slug": { "version": "3.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10943,7 +10224,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/node-gyp/node_modules/which": { "version": "2.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10958,7 +10238,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/nopt": { "version": "7.2.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -10973,7 +10252,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/normalize-package-data": { "version": "5.0.0", - "extraneous": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { @@ -10988,7 +10266,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/npm-audit-report": { "version": "5.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -10997,7 +10274,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/npm-bundled": { "version": "3.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11009,7 +10285,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/npm-install-checks": { "version": "6.3.0", - "extraneous": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { @@ -11021,7 +10296,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/npm-normalize-package-bin": { "version": "3.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -11030,7 +10304,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/npm-package-arg": { "version": "10.1.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11045,7 +10318,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/npm-packlist": { "version": "7.0.4", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11057,7 +10329,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/npm-pick-manifest": { "version": "8.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11072,7 +10343,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/npm-profile": { "version": "7.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11085,7 +10355,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/npm-registry-fetch": { "version": "14.0.5", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11103,7 +10372,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/npm-registry-fetch/node_modules/minipass": { "version": "5.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -11112,7 +10380,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/npm-user-validate": { "version": "2.0.0", - "extraneous": true, "inBundle": true, "license": "BSD-2-Clause", "engines": { @@ -11121,7 +10388,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/npmlog": { "version": "7.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11136,7 +10402,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/once": { "version": "1.4.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11145,7 +10410,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/p-map": { "version": "4.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -11160,7 +10424,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/pacote": { "version": "15.2.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11192,7 +10455,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/pacote/node_modules/minipass": { "version": "5.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -11201,7 +10463,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/parse-conflict-json": { "version": "3.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11215,7 +10476,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/path-is-absolute": { "version": "1.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -11224,7 +10484,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/path-key": { "version": "3.1.1", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -11233,7 +10492,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/path-scurry": { "version": "1.10.1", - "extraneous": true, "inBundle": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -11249,7 +10507,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/path-scurry/node_modules/lru-cache": { "version": "10.2.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -11258,7 +10515,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/postcss-selector-parser": { "version": "6.0.15", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -11271,7 +10527,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/proc-log": { "version": "3.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -11280,7 +10535,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/promise-all-reject-late": { "version": "1.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "funding": { @@ -11289,7 +10543,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/promise-call-limit": { "version": "1.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "funding": { @@ -11298,13 +10551,11 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/promise-inflight": { "version": "1.0.1", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/promise-retry": { "version": "2.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -11317,7 +10568,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/promzard": { "version": "1.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11329,7 +10579,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/qrcode-terminal": { "version": "0.12.0", - "extraneous": true, "inBundle": true, "bin": { "qrcode-terminal": "bin/qrcode-terminal.js" @@ -11337,7 +10586,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/read": { "version": "2.1.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11349,7 +10597,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/read-cmd-shim": { "version": "4.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -11358,7 +10605,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/read-package-json": { "version": "6.0.4", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11373,7 +10619,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/read-package-json-fast": { "version": "3.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11386,7 +10631,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/readable-stream": { "version": "3.6.2", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -11400,7 +10644,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/retry": { "version": "0.12.0", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -11409,7 +10652,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/rimraf": { "version": "3.0.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11424,7 +10666,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/rimraf/node_modules/brace-expansion": { "version": "1.1.11", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -11434,7 +10675,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/rimraf/node_modules/glob": { "version": "7.2.3", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11454,7 +10694,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/rimraf/node_modules/minimatch": { "version": "3.1.2", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11466,7 +10705,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/safe-buffer": { "version": "5.2.1", - "extraneous": true, "funding": [ { "type": "github", @@ -11486,13 +10724,12 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/safer-buffer": { "version": "2.1.2", - "extraneous": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/semver": { "version": "7.6.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11507,7 +10744,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/semver/node_modules/lru-cache": { "version": "6.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11519,13 +10755,11 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/set-blocking": { "version": "2.0.0", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/shebang-command": { "version": "2.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -11537,7 +10771,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/shebang-regex": { "version": "3.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -11546,7 +10779,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/signal-exit": { "version": "4.1.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -11558,7 +10790,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/sigstore": { "version": "1.9.0", - "extraneous": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -11577,7 +10808,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/smart-buffer": { "version": "4.2.0", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -11587,7 +10817,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/socks": { "version": "2.8.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -11601,7 +10830,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/socks-proxy-agent": { "version": "7.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -11615,7 +10843,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/spdx-correct": { "version": "3.2.0", - "extraneous": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -11625,13 +10852,11 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/spdx-exceptions": { "version": "2.5.0", - "extraneous": true, "inBundle": true, "license": "CC-BY-3.0" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/spdx-expression-parse": { "version": "3.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -11641,13 +10866,11 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/spdx-license-ids": { "version": "3.0.17", - "extraneous": true, "inBundle": true, "license": "CC0-1.0" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/ssri": { "version": "10.0.5", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11659,7 +10882,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/string_decoder": { "version": "1.3.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -11668,7 +10890,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/string-width": { "version": "4.2.3", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -11683,7 +10904,6 @@ "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/string-width-cjs": { "name": "string-width", "version": "4.2.3", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -11697,7 +10917,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/strip-ansi": { "version": "6.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -11710,7 +10929,6 @@ "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/strip-ansi-cjs": { "name": "strip-ansi", "version": "6.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -11722,7 +10940,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/supports-color": { "version": "9.4.0", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -11734,7 +10951,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/tar": { "version": "6.2.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11751,7 +10967,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/tar/node_modules/fs-minipass": { "version": "2.1.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11763,7 +10978,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { "version": "3.3.6", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11775,7 +10989,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/tar/node_modules/minipass": { "version": "5.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -11784,19 +10997,16 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/text-table": { "version": "0.2.0", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/tiny-relative-date": { "version": "1.3.0", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/treeverse": { "version": "3.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "engines": { @@ -11805,7 +11015,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/tuf-js": { "version": "1.1.7", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -11819,7 +11028,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/unique-filename": { "version": "3.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11831,7 +11039,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/unique-slug": { "version": "4.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11843,13 +11050,11 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/util-deprecate": { "version": "1.0.2", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/validate-npm-package-license": { "version": "3.0.4", - "extraneous": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { @@ -11859,7 +11064,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/validate-npm-package-name": { "version": "5.0.0", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11871,13 +11075,11 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/walk-up-path": { "version": "3.0.1", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/wcwidth": { "version": "1.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -11886,7 +11088,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/which": { "version": "3.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11901,7 +11102,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/wide-align": { "version": "1.1.5", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -11910,7 +11110,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/wrap-ansi": { "version": "8.1.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -11928,7 +11127,6 @@ "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/wrap-ansi-cjs": { "name": "wrap-ansi", "version": "7.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -11945,7 +11143,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { "version": "6.0.1", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -11957,7 +11154,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "6.2.1", - "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -11969,13 +11165,11 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": { "version": "9.2.2", - "extraneous": true, "inBundle": true, "license": "MIT" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": { "version": "5.1.2", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -11992,7 +11186,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/wrap-ansi/node_modules/strip-ansi": { "version": "7.1.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -12007,13 +11200,11 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/wrappy": { "version": "1.0.2", - "extraneous": true, "inBundle": true, "license": "ISC" }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/write-file-atomic": { "version": "5.0.1", - "extraneous": true, "inBundle": true, "license": "ISC", "dependencies": { @@ -12026,7 +11217,6 @@ }, "node_modules/@cardano-sdk/key-management/node_modules/npm/node_modules/yallist": { "version": "4.0.0", - "extraneous": true, "inBundle": true, "license": "ISC" }, @@ -12145,19 +11335,6 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/@dao-xyz/borsh": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/@dao-xyz/borsh/-/borsh-5.2.4.tgz", - "integrity": "sha512-HKjOMXBQvr2riUIX/g+sLOmgDsk16zuMa0VZKMfj0XLp3MlafMxkwuBJyJk0apqUpKxywXeitgFHGFOGNkn+Kw==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@protobufjs/float": "^1.0.2", - "@protobufjs/utf8": "^1.1.0", - "@types/benchmark": "^2.1.5", - "protobufjs": "^7.5.4" - } - }, "node_modules/@emnapi/core": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz", @@ -12773,16 +11950,6 @@ "integrity": "sha512-DjIZsnL3CyP/yQ/vUYA9cjrD0a/8YXejI5ZmsaOiT16cLfZcTwaCxIN01/ys4jsy+dZCQ/9DnWFn7AEFbiMDaA==", "license": "MIT" }, - "node_modules/@graphql-typed-document-node/core": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", - "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", - "license": "MIT", - "peer": true, - "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, "node_modules/@grpc/grpc-js": { "version": "1.14.3", "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.14.3.tgz", @@ -13052,45 +12219,6 @@ } } }, - "node_modules/@inquirer/external-editor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", - "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", - "license": "MIT", - "dependencies": { - "chardet": "^2.1.1", - "iconv-lite": "^0.7.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/figures": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", - "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@internationalized/date": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.10.1.tgz", - "integrity": "sha512-oJrXtQiAXLvT9clCf1K4kxp3eKsQhIaZqxEyowkBcsvZDdZkbWrVmnGknxs5flTD0VGsxrxKgBCZty1EzoiMzA==", - "license": "Apache-2.0", - "dependencies": { - "@swc/helpers": "^0.5.0" - } - }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -13332,16 +12460,6 @@ } } }, - "node_modules/@jest/diff-sequences": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", - "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, "node_modules/@jest/environment": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", @@ -13403,16 +12521,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/get-type": { - "version": "30.1.0", - "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", - "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, "node_modules/@jest/globals": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", @@ -13429,30 +12537,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/pattern": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", - "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "jest-regex-util": "30.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/pattern/node_modules/jest-regex-util": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", - "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, "node_modules/@jest/reporters": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", @@ -13564,61 +12648,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/snapshot-utils": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.2.0.tgz", - "integrity": "sha512-0aVxM3RH6DaiLcjj/b0KrIBZhSX1373Xci4l3cW5xiUWPctZ59zQ7jj4rqcJQ/Z8JuN/4wX3FpJSa3RssVvCug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.2.0", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "natural-compare": "^1.4.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/snapshot-utils/node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.34.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/snapshot-utils/node_modules/@jest/types": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", - "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/snapshot-utils/node_modules/@sinclair/typebox": { - "version": "0.34.47", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.47.tgz", - "integrity": "sha512-ZGIBQ+XDvO5JQku9wmwtabcVTHJsgSWAHYtVuM9pBNNR5E88v6Jcj/llpmsjivig5X8A8HHOb4/mbEKPS5EvAw==", - "dev": true, - "license": "MIT" - }, "node_modules/@jest/source-map": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", @@ -13889,8 +12918,20 @@ } }, "node_modules/@meshsdk/bitcoin": { - "resolved": "packages/bitcoin", - "link": true + "version": "1.9.0-beta.98", + "resolved": "https://registry.npmjs.org/@meshsdk/bitcoin/-/bitcoin-1.9.0-beta.98.tgz", + "integrity": "sha512-pJbAE3DdnILPyUKsR3J57NWg7iFGOQhzmGZAovUv+/pLkNUdU9vavXnIcAU54r2OlrzCbuqKXVo4tpUDiLyMrA==", + "dependencies": { + "@bitcoin-js/tiny-secp256k1-asmjs": "^2.2.3", + "@meshsdk/common": "1.9.0-beta.98", + "@meshsdk/provider": "1.9.0-beta.98", + "axios": "^1.7.9", + "bip174": "^3.0.0", + "bip32": "^4.0.0", + "bip39": "^3.1.0", + "bitcoinjs-lib": "^6.1.7", + "ecpair": "^2.0.0" + } }, "node_modules/@meshsdk/common": { "resolved": "packages/mesh-common", @@ -13917,28 +12958,64 @@ "link": true }, "node_modules/@meshsdk/hydra": { - "resolved": "packages/mesh-hydra", - "link": true - }, - "node_modules/@meshsdk/midnight-contracts-wizard": { - "resolved": "packages/midnight-contracts-wizard", - "link": true - }, - "node_modules/@meshsdk/midnight-setup": { - "resolved": "packages/midnight-setup", - "link": true + "version": "1.9.0-beta.98", + "resolved": "https://registry.npmjs.org/@meshsdk/hydra/-/hydra-1.9.0-beta.98.tgz", + "integrity": "sha512-jdkEU4XQ4NT4ULC+aPY/DMt6SUHJUoHSjGk+JX8Z+p5Nt2hvD8/z/P4FHw9SGjmwJR0YeQiONzs3jX9yljEKOw==", + "dependencies": { + "@meshsdk/common": "1.9.0-beta.98", + "@meshsdk/core": "1.9.0-beta.98", + "@meshsdk/core-cst": "1.9.0-beta.98", + "axios": "^1.7.2" + } }, "node_modules/@meshsdk/provider": { - "resolved": "packages/mesh-provider", - "link": true + "version": "1.9.0-beta.98", + "resolved": "https://registry.npmjs.org/@meshsdk/provider/-/provider-1.9.0-beta.98.tgz", + "integrity": "sha512-JxFRHq7yjRzICHXYKmFX3WsM7KGfIhBrzT/CphO6ZU9eZWjPmP5sbkBx4twqLl3QlasMLmQbsQMapzqTGldqtg==", + "license": "Apache-2.0", + "dependencies": { + "@meshsdk/common": "1.9.0-beta.98", + "@meshsdk/core-cst": "1.9.0-beta.98", + "@utxorpc/sdk": "^0.6.7", + "@utxorpc/spec": "^0.16.0", + "axios": "^1.7.2", + "cbor": "^10.0.9", + "libsodium-wrappers-sumo": "0.7.15" + } }, "node_modules/@meshsdk/react": { - "resolved": "packages/mesh-react", - "link": true + "version": "1.9.0-beta.98", + "resolved": "https://registry.npmjs.org/@meshsdk/react/-/react-1.9.0-beta.98.tgz", + "integrity": "sha512-49yU0AgPLBcs1zCvMGy/T2Vb8RX9p+mmrxgBIkvk5ghUxhM/IQYM4N11hkLWGjCD9cR3yYx+ZxpP3ADTeYvg1g==", + "license": "Apache-2.0", + "dependencies": { + "@meshsdk/common": "1.9.0-beta.98", + "@meshsdk/transaction": "1.9.0-beta.98", + "@meshsdk/wallet": "1.9.0-beta.98", + "@radix-ui/react-dialog": "^1.1.2", + "@radix-ui/react-dropdown-menu": "^2.1.2", + "@radix-ui/react-icons": "^1.3.2", + "@radix-ui/react-label": "^2.1.1", + "@radix-ui/react-tooltip": "^1.1.4", + "@utxos/sdk": "0.1.0", + "class-variance-authority": "^0.7.1", + "tailwind-merge": "^2.6.0", + "tailwindcss-animate": "^1.0.7" + }, + "peerDependencies": { + "react": ">=16.0.0 <20.0.0 || >=16.0.0-rc <20.0.0-rc || >=19.0.0-rc", + "react-dom": ">=16.0.0 <20.0.0 || >=16.0.0-rc <20.0.0-rc || >=19.0.0-rc" + } }, - "node_modules/@meshsdk/svelte": { - "resolved": "packages/mesh-svelte", - "link": true + "node_modules/@meshsdk/react/node_modules/tailwind-merge": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.6.0.tgz", + "integrity": "sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } }, "node_modules/@meshsdk/transaction": { "resolved": "packages/mesh-transaction", @@ -13982,390 +13059,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@midnight-ntwrk/compact-runtime": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@midnight-ntwrk/compact-runtime/-/compact-runtime-0.8.1.tgz", - "integrity": "sha512-ZXG/iprEqTCxQC/P1oETGOR5CnsoemPsfb17eSANPRsm+11AcIOP0Tp8KJipN+GbycgxOA+fAVwLFqA1hDCgbw==", - "license": "Apache-2.0", - "dependencies": { - "@midnight-ntwrk/onchain-runtime": "^0.3.0", - "@types/object-inspect": "^1.8.1", - "object-inspect": "^1.12.3" - } - }, - "node_modules/@midnight-ntwrk/dapp-connector-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@midnight-ntwrk/dapp-connector-api/-/dapp-connector-api-3.0.0.tgz", - "integrity": "sha512-A/AhsNjibrOSaUiPhQhxANeW9178uYnzeBFBf30YCvyvWg0YWCbhQfc7dRpiL7iBoX3Sxt9mtf+Svx4ZygLajg==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@midnight-ntwrk/wallet-api": "^5.0.0", - "@midnight-ntwrk/zswap": "^4.0.0", - "ts-custom-error": "^3.3.1" - } - }, - "node_modules/@midnight-ntwrk/midnight-js-contracts": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@midnight-ntwrk/midnight-js-contracts/-/midnight-js-contracts-2.0.2.tgz", - "integrity": "sha512-L1MPw5cmMq4bA5MQrnq9SWMl2wfmwOS2oK+lLwvtiYGtvd1/JrIXxBZk1759Sf9xTtVxmMdDS4yFLd3US0en2A==", - "license": "Apache-2.0", - "dependencies": { - "@midnight-ntwrk/midnight-js-network-id": "2.0.2", - "@midnight-ntwrk/midnight-js-types": "2.0.2", - "@midnight-ntwrk/midnight-js-utils": "2.0.2" - } - }, - "node_modules/@midnight-ntwrk/midnight-js-contracts/node_modules/@midnight-ntwrk/midnight-js-network-id": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@midnight-ntwrk/midnight-js-network-id/-/midnight-js-network-id-2.0.2.tgz", - "integrity": "sha512-ogBBC5Ox2B2QZo4XxXYr3AxwgUeC4LEmLasLInjMk0p0m//8iI6NmH4/5f0pEOxDtGSuA+piuSonxuQMLM6GUg==", - "license": "Apache-2.0" - }, - "node_modules/@midnight-ntwrk/midnight-js-fetch-zk-config-provider": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@midnight-ntwrk/midnight-js-fetch-zk-config-provider/-/midnight-js-fetch-zk-config-provider-2.1.0.tgz", - "integrity": "sha512-oWztVa4A+/trjSFjEFID6pCYYip/r3JoMfjtoboby17Um/wncUTxu35dZybgmhQzM0BiGKuyq7zVVodI5bbl/Q==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@midnight-ntwrk/midnight-js-types": "2.1.0", - "cross-fetch": "^4.0.0" - } - }, - "node_modules/@midnight-ntwrk/midnight-js-fetch-zk-config-provider/node_modules/@midnight-ntwrk/midnight-js-types": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@midnight-ntwrk/midnight-js-types/-/midnight-js-types-2.1.0.tgz", - "integrity": "sha512-bU7f2gdXt1/BR2XatKNPx9o6FDq1exYcWLQg4kn78d1SX39OVD33PVOavg2mFMoeC00YpcG2T1xH0eD/CMwXgA==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "rxjs": "^7.5.0" - } - }, - "node_modules/@midnight-ntwrk/midnight-js-fetch-zk-config-provider/node_modules/cross-fetch": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.1.0.tgz", - "integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==", - "license": "MIT", - "peer": true, - "dependencies": { - "node-fetch": "^2.7.0" - } - }, - "node_modules/@midnight-ntwrk/midnight-js-fetch-zk-config-provider/node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "license": "MIT", - "peer": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/@midnight-ntwrk/midnight-js-http-client-proof-provider": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@midnight-ntwrk/midnight-js-http-client-proof-provider/-/midnight-js-http-client-proof-provider-2.1.0.tgz", - "integrity": "sha512-SubdHm4bP7syyQ1UEqsmfPoYkHhVRDlCuXS8RqR4p4ivIVeN6pE7oh0dLOM+oJtcPIM646lI8dJnuHZEfxjsAw==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@dao-xyz/borsh": "^5.1.5", - "@midnight-ntwrk/midnight-js-network-id": "2.1.0", - "@midnight-ntwrk/midnight-js-types": "2.1.0", - "cross-fetch": "^4.0.0", - "fetch-retry": "^6.0.0", - "lodash": "^4.17.21" - } - }, - "node_modules/@midnight-ntwrk/midnight-js-http-client-proof-provider/node_modules/@midnight-ntwrk/midnight-js-types": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@midnight-ntwrk/midnight-js-types/-/midnight-js-types-2.1.0.tgz", - "integrity": "sha512-bU7f2gdXt1/BR2XatKNPx9o6FDq1exYcWLQg4kn78d1SX39OVD33PVOavg2mFMoeC00YpcG2T1xH0eD/CMwXgA==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "rxjs": "^7.5.0" - } - }, - "node_modules/@midnight-ntwrk/midnight-js-http-client-proof-provider/node_modules/cross-fetch": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.1.0.tgz", - "integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==", - "license": "MIT", - "peer": true, - "dependencies": { - "node-fetch": "^2.7.0" - } - }, - "node_modules/@midnight-ntwrk/midnight-js-http-client-proof-provider/node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "license": "MIT", - "peer": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/@midnight-ntwrk/midnight-js-indexer-public-data-provider": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@midnight-ntwrk/midnight-js-indexer-public-data-provider/-/midnight-js-indexer-public-data-provider-2.1.0.tgz", - "integrity": "sha512-Hmj4wcF7WmGvLrRjz9xvMu0GPop/FxbwNumsuR+mnw7EYf3Y/6JRQeIZ0Ga+eD1VM5JaUJ8A+I8iGZMcpQ36TA==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@apollo/client": "^3.13.8", - "@midnight-ntwrk/midnight-js-network-id": "2.1.0", - "@midnight-ntwrk/midnight-js-types": "2.1.0", - "buffer": "^6.0.3", - "cross-fetch": "^4.0.0", - "graphql": "^16.8.0", - "graphql-ws": "^6.0.0", - "isomorphic-ws": "^5.0.0", - "rxjs": "^7.5.0", - "ws": "^8.14.2", - "zen-observable-ts": "^1.1.0" - } - }, - "node_modules/@midnight-ntwrk/midnight-js-indexer-public-data-provider/node_modules/@midnight-ntwrk/midnight-js-types": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@midnight-ntwrk/midnight-js-types/-/midnight-js-types-2.1.0.tgz", - "integrity": "sha512-bU7f2gdXt1/BR2XatKNPx9o6FDq1exYcWLQg4kn78d1SX39OVD33PVOavg2mFMoeC00YpcG2T1xH0eD/CMwXgA==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "rxjs": "^7.5.0" - } - }, - "node_modules/@midnight-ntwrk/midnight-js-indexer-public-data-provider/node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "peer": true - }, - "node_modules/@midnight-ntwrk/midnight-js-indexer-public-data-provider/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/@midnight-ntwrk/midnight-js-indexer-public-data-provider/node_modules/cross-fetch": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.1.0.tgz", - "integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==", - "license": "MIT", - "peer": true, - "dependencies": { - "node-fetch": "^2.7.0" - } - }, - "node_modules/@midnight-ntwrk/midnight-js-indexer-public-data-provider/node_modules/isomorphic-ws": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", - "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", - "license": "MIT", - "peer": true, - "peerDependencies": { - "ws": "*" - } - }, - "node_modules/@midnight-ntwrk/midnight-js-indexer-public-data-provider/node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "license": "MIT", - "peer": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/@midnight-ntwrk/midnight-js-level-private-state-provider": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@midnight-ntwrk/midnight-js-level-private-state-provider/-/midnight-js-level-private-state-provider-2.1.0.tgz", - "integrity": "sha512-sTRbDu1LVoghoYMOfsKmwUMhKIO56lDj+N9YGUdLE0M4HgL5Q7xi0Md7JzZmeOCQEyStVNCae1gTdEFsUD4MCQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@midnight-ntwrk/midnight-js-types": "2.1.0", - "abstract-level": "^3.0.0", - "buffer": "^6.0.3", - "fp-ts": "^2.16.1", - "io-ts": "^2.2.20", - "level": "^10.0.0", - "lodash": "^4.17.21", - "superjson": "^2.0.0" - } - }, - "node_modules/@midnight-ntwrk/midnight-js-level-private-state-provider/node_modules/@midnight-ntwrk/midnight-js-types": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@midnight-ntwrk/midnight-js-types/-/midnight-js-types-2.1.0.tgz", - "integrity": "sha512-bU7f2gdXt1/BR2XatKNPx9o6FDq1exYcWLQg4kn78d1SX39OVD33PVOavg2mFMoeC00YpcG2T1xH0eD/CMwXgA==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "rxjs": "^7.5.0" - } - }, - "node_modules/@midnight-ntwrk/midnight-js-level-private-state-provider/node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "peer": true - }, - "node_modules/@midnight-ntwrk/midnight-js-level-private-state-provider/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/@midnight-ntwrk/midnight-js-network-id": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@midnight-ntwrk/midnight-js-network-id/-/midnight-js-network-id-2.1.0.tgz", - "integrity": "sha512-uYIxvYNbrjCQW4ntJz/kKWZUeoBX4ahYaI9k37GrX02EJRPs7wJ+3iIJstTiL36JUxJUyTkePufL+lFgTadP8A==", - "license": "Apache-2.0", - "peer": true - }, - "node_modules/@midnight-ntwrk/midnight-js-types": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@midnight-ntwrk/midnight-js-types/-/midnight-js-types-2.0.2.tgz", - "integrity": "sha512-ewHBQRCvY8u0+JAGdjQ86KsyoTA3dbNBLkuZ1o5U6vU/1jFjnFA1FL9skTgdXzSKjjfwA930i+OvbaUaUzFEHQ==", - "license": "Apache-2.0", - "dependencies": { - "rxjs": "^7.5.0" - } - }, - "node_modules/@midnight-ntwrk/midnight-js-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@midnight-ntwrk/midnight-js-utils/-/midnight-js-utils-2.0.2.tgz", - "integrity": "sha512-c01Nh9BfwxwijItgrieeXtdwfOZuQd9gWMX+294rT8Pq+vydIt61+0V89TLIT7nh/1d7Z2Bu9X5+9rFzfzwylA==", - "license": "Apache-2.0" - }, - "node_modules/@midnight-ntwrk/onchain-runtime": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@midnight-ntwrk/onchain-runtime/-/onchain-runtime-0.3.0.tgz", - "integrity": "sha512-vZWPoz7MhXO5UgWZET50g7APOcT5dbAfADDcrSreeOagV8lj7JJzlnYIIhrcUaMOv+NHWxPaUcJUYUkmu9LoTA==" - }, - "node_modules/@midnight-ntwrk/wallet-api": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@midnight-ntwrk/wallet-api/-/wallet-api-5.0.0.tgz", - "integrity": "sha512-L5Z9+v+ouqTtPLoXpngtBVHZ0SmC3zLrCZbuYnd/ul6p9UbwUQ3AQeqMhclv2jhwFRNYsL0fBOqpD5dvs4SvLQ==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@midnight-ntwrk/zswap": "^4.0.0" - }, - "peerDependencies": { - "rxjs": "7.x" - } - }, - "node_modules/@midnight-ntwrk/zswap": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@midnight-ntwrk/zswap/-/zswap-4.0.0.tgz", - "integrity": "sha512-yKfzp4M/wUkqxUJv1D2SizojYdWYnF3FDeKaxPehLPOFC4BrR9KnLZsNR2Y/occ8a4yFDtQXf7bN1QvK5k7Grw==", - "peer": true - }, "node_modules/@multiformats/dns": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@multiformats/dns/-/dns-1.0.11.tgz", @@ -14982,13 +13675,6 @@ "url": "https://opencollective.com/pkgr" } }, - "node_modules/@polka/url": { - "version": "1.0.0-next.29", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", - "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", - "dev": true, - "license": "MIT" - }, "node_modules/@popperjs/core": { "version": "2.11.8", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", @@ -16022,72 +14708,6 @@ "sourcemap-codec": "^1.4.8" } }, - "node_modules/@rollup/plugin-inject": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz", - "integrity": "sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.3" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-inject/node_modules/@rollup/pluginutils": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", - "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-inject/node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@rollup/plugin-inject/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/@rollup/plugin-json": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz", @@ -16146,24 +14766,6 @@ "sourcemap-codec": "^1.4.8" } }, - "node_modules/@rollup/plugin-virtual": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-virtual/-/plugin-virtual-3.0.2.tgz", - "integrity": "sha512-10monEYsBp3scM4/ND4LNH5Rxvh3e/cVeL3jWTgZ2SrQ+BmUoQcopVQvnaMcOnykb1VkxUFuDAN+0FnpTFRy2A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, "node_modules/@rollup/pluginutils": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", @@ -16825,226 +15427,6 @@ "@sinonjs/commons": "^3.0.0" } }, - "node_modules/@standard-schema/spec": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", - "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@sveltejs/acorn-typescript": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.8.tgz", - "integrity": "sha512-esgN+54+q0NjB0Y/4BomT9samII7jGwNy/2a3wNZbT2A2RpmXsXwUt24LvLhx6jUq2gVk4cWEvcRO6MFQbOfNA==", - "license": "MIT", - "peerDependencies": { - "acorn": "^8.9.0" - } - }, - "node_modules/@sveltejs/adapter-auto": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-7.0.0.tgz", - "integrity": "sha512-ImDWaErTOCkRS4Gt+5gZuymKFBobnhChXUZ9lhUZLahUgvA4OOvRzi3sahzYgbxGj5nkA6OV0GAW378+dl/gyw==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@sveltejs/kit": "^2.0.0" - } - }, - "node_modules/@sveltejs/kit": { - "version": "2.49.3", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.49.3.tgz", - "integrity": "sha512-luTmE2Isk9GRJnitqanLoByKBiyLdfLpV2qV9a25JMxjbQt919TVqG8pibJDkxTvX9+w2k/9IL7o+/RtG++3QA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@standard-schema/spec": "^1.0.0", - "@sveltejs/acorn-typescript": "^1.0.5", - "@types/cookie": "^0.6.0", - "acorn": "^8.14.1", - "cookie": "^0.6.0", - "devalue": "^5.3.2", - "esm-env": "^1.2.2", - "kleur": "^4.1.5", - "magic-string": "^0.30.5", - "mrmime": "^2.0.0", - "sade": "^1.8.1", - "set-cookie-parser": "^2.6.0", - "sirv": "^3.0.0" - }, - "bin": { - "svelte-kit": "svelte-kit.js" - }, - "engines": { - "node": ">=18.13" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.0.0", - "@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1 || ^5.0.0 || ^6.0.0-next.0", - "svelte": "^4.0.0 || ^5.0.0-next.0", - "typescript": "^5.3.3", - "vite": "^5.0.3 || ^6.0.0 || ^7.0.0-beta.0" - }, - "peerDependenciesMeta": { - "@opentelemetry/api": { - "optional": true - }, - "typescript": { - "optional": true - } - } - }, - "node_modules/@sveltejs/kit/node_modules/kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@sveltejs/package": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/@sveltejs/package/-/package-2.3.7.tgz", - "integrity": "sha512-LYgUkde5GUYqOpXbcoCGUpEH4Ctl3Wj4u4CVZBl56dEeLW5fGHE037ZL1qlK0Ky+QD5uUfwONSeGwIOIighFMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "chokidar": "^4.0.0", - "kleur": "^4.1.5", - "sade": "^1.8.1", - "semver": "^7.5.4", - "svelte2tsx": "~0.7.16" - }, - "bin": { - "svelte-package": "svelte-package.js" - }, - "engines": { - "node": "^16.14 || >=18" - }, - "peerDependencies": { - "svelte": "^3.44.0 || ^4.0.0 || ^5.0.0-next.1" - } - }, - "node_modules/@sveltejs/package/node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@sveltejs/package/node_modules/kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@sveltejs/package/node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@sveltejs/vite-plugin-svelte": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-6.2.2.tgz", - "integrity": "sha512-9P/0sA/+lWxvRmJFGmVVoVQFeCIktv9bNju1Gc8h1Ptf/UeWCfVgpSy0CDdozVpQWfTvBZblttjrvo6ICxujdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sveltejs/vite-plugin-svelte-inspector": "^5.0.0", - "deepmerge": "^4.3.1", - "magic-string": "^0.30.21", - "obug": "^2.1.0", - "vitefu": "^1.1.1" - }, - "engines": { - "node": "^20.19 || ^22.12 || >=24" - }, - "peerDependencies": { - "svelte": "^5.0.0", - "vite": "^6.3.0 || ^7.0.0" - } - }, - "node_modules/@sveltejs/vite-plugin-svelte-inspector": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-5.0.2.tgz", - "integrity": "sha512-TZzRTcEtZffICSAoZGkPSl6Etsj2torOVrx6Uw0KpXxrec9Gg6jFWQ60Q3+LmNGfZSxHRCZL7vXVZIWmuV50Ig==", - "dev": true, - "license": "MIT", - "dependencies": { - "obug": "^2.1.0" - }, - "engines": { - "node": "^20.19 || ^22.12 || >=24" - }, - "peerDependencies": { - "@sveltejs/vite-plugin-svelte": "^6.0.0-next.0", - "svelte": "^5.0.0", - "vite": "^6.3.0 || ^7.0.0" - } - }, - "node_modules/@swc/core": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.15.8.tgz", - "integrity": "sha512-T8keoJjXaSUoVBCIjgL6wAnhADIb09GOELzKg10CjNg+vLX48P93SME6jTfte9MZIm5m+Il57H3rTSk/0kzDUw==", - "dev": true, - "hasInstallScript": true, - "license": "Apache-2.0", - "dependencies": { - "@swc/counter": "^0.1.3", - "@swc/types": "^0.1.25" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/swc" - }, - "optionalDependencies": { - "@swc/core-darwin-arm64": "1.15.8", - "@swc/core-darwin-x64": "1.15.8", - "@swc/core-linux-arm-gnueabihf": "1.15.8", - "@swc/core-linux-arm64-gnu": "1.15.8", - "@swc/core-linux-arm64-musl": "1.15.8", - "@swc/core-linux-x64-gnu": "1.15.8", - "@swc/core-linux-x64-musl": "1.15.8", - "@swc/core-win32-arm64-msvc": "1.15.8", - "@swc/core-win32-ia32-msvc": "1.15.8", - "@swc/core-win32-x64-msvc": "1.15.8" - }, - "peerDependencies": { - "@swc/helpers": ">=0.5.17" - }, - "peerDependenciesMeta": { - "@swc/helpers": { - "optional": true - } - } - }, "node_modules/@swc/counter": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", @@ -17060,23 +15442,6 @@ "tslib": "^2.8.0" } }, - "node_modules/@swc/types": { - "version": "0.1.25", - "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.25.tgz", - "integrity": "sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@swc/counter": "^0.1.3" - } - }, - "node_modules/@swc/wasm": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@swc/wasm/-/wasm-1.15.8.tgz", - "integrity": "sha512-RG2BxGbbsjtddFCo1ghKH6A/BMXbY1eMBfpysV0lJMCpI4DZOjW1BNBnxvBt7YsYmlJtmy5UXIg9/4ekBTFFaQ==", - "dev": true, - "license": "Apache-2.0" - }, "node_modules/@szmarczak/http-timer": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", @@ -17221,13 +15586,6 @@ "@types/node": "*" } }, - "node_modules/@types/benchmark": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@types/benchmark/-/benchmark-2.1.5.tgz", - "integrity": "sha512-cKio2eFB3v7qmKcvIHLUMw/dIx/8bhWPuzpzRT4unCPRTD8VdA9Zb0afxpcxOqR4PixRS7yT42FqGS8BYL8g1w==", - "license": "MIT", - "peer": true - }, "node_modules/@types/blake2b": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/@types/blake2b/-/blake2b-2.1.3.tgz", @@ -17245,13 +15603,6 @@ "@types/node": "*" } }, - "node_modules/@types/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/debug": { "version": "4.1.12", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", @@ -17342,17 +15693,6 @@ "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", "license": "MIT" }, - "node_modules/@types/inquirer": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/@types/inquirer/-/inquirer-9.0.9.tgz", - "integrity": "sha512-/mWx5136gts2Z2e5izdoRCo46lPp5TMs9R15GTSsgg/XnZyxDWVqoVU3R9lWnccKpqwsJLvRoxbCjoJtZB7DSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/through": "*", - "rxjs": "^7.2.0" - } - }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", @@ -17470,12 +15810,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/object-inspect": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@types/object-inspect/-/object-inspect-1.13.0.tgz", - "integrity": "sha512-lwGTVESDDV+XsQ1pH4UifpJ1f7OtXzQ6QBOX2Afq2bM/T3oOt8hF6exJMjjIjtEWeAN2YAo25J7HxWh97CCz9w==", - "license": "MIT" - }, "node_modules/@types/prompts": { "version": "2.4.9", "resolved": "https://registry.npmjs.org/@types/prompts/-/prompts-2.4.9.tgz", @@ -17568,16 +15902,6 @@ "minipass": "^4.0.0" } }, - "node_modules/@types/through": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/@types/through/-/through-0.0.33.tgz", - "integrity": "sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/tough-cookie": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", @@ -17598,16 +15922,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/ws": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", - "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/yargs": { "version": "17.0.35", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", @@ -18610,58 +16924,6 @@ } } }, - "node_modules/@wry/caches": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@wry/caches/-/caches-1.0.1.tgz", - "integrity": "sha512-bXuaUNLVVkD20wcGBWRyo7j9N3TxePEWFZj2Y+r9OoUzfqmavM84+mFykRicNsBqatba5JLay1t48wxaXaWnlA==", - "license": "MIT", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@wry/context": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.7.4.tgz", - "integrity": "sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@wry/equality": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.5.7.tgz", - "integrity": "sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw==", - "license": "MIT", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@wry/trie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.5.0.tgz", - "integrity": "sha512-FNoYzHawTMk/6KMQoEG5O4PuioX19UbwdQKF44yw0nLfOypfQdjtfZzo/UIJWAJ23sNIFbD1Ug9lbaDGMwbqQA==", - "license": "MIT", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@zxing/text-encoding": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz", @@ -18669,18 +16931,6 @@ "license": "(Unlicense OR Apache-2.0)", "optional": true }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "license": "MIT", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, "node_modules/abort-controller-x": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/abort-controller-x/-/abort-controller-x-0.4.3.tgz", @@ -18699,70 +16949,6 @@ "integrity": "sha512-9f1iZ2uWh92VcrU9Y8x+LdM4DLj75VE0MJB8zuF1iUnroEptStw+DQ8EQPMUdfe5k+PkB1uUfDQfWbhstH8LrQ==", "license": "MIT" }, - "node_modules/abstract-level": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/abstract-level/-/abstract-level-3.1.1.tgz", - "integrity": "sha512-CW2gKbJFTuX1feMvOrvsVMmijAOgI9kg2Ie9Dq3gOcMt/dVVoVmqNlLcEUCT13NxHFMEajcUcVBIplbyDroDiw==", - "license": "MIT", - "peer": true, - "dependencies": { - "buffer": "^6.0.3", - "is-buffer": "^2.0.5", - "level-supports": "^6.2.0", - "level-transcoder": "^1.0.1", - "maybe-combine-errors": "^1.0.0", - "module-error": "^1.0.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/abstract-level/node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "peer": true - }, - "node_modules/abstract-level/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "node_modules/acorn": { "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", @@ -18862,6 +17048,7 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, "license": "MIT", "dependencies": { "type-fest": "^0.21.3" @@ -18877,6 +17064,7 @@ "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -19133,25 +17321,6 @@ "node": ">=0.10.0" } }, - "node_modules/asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", - "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", - "dev": true, - "license": "MIT" - }, "node_modules/asn1js": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.7.tgz", @@ -19166,20 +17335,6 @@ "node": ">=12.0.0" } }, - "node_modules/assert": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", - "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "is-nan": "^1.3.2", - "object-is": "^1.1.5", - "object.assign": "^4.1.4", - "util": "^0.12.5" - } - }, "node_modules/ast-types-flow": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", @@ -19229,15 +17384,6 @@ "node": ">= 4.0.0" } }, - "node_modules/atomic-sleep": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", - "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/autoprefixer": { "version": "10.4.23", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.23.tgz", @@ -19849,50 +17995,6 @@ "node": ">=8.0.0" } }, - "node_modules/bits-ui": { - "version": "1.0.0-next.65", - "resolved": "https://registry.npmjs.org/bits-ui/-/bits-ui-1.0.0-next.65.tgz", - "integrity": "sha512-6pJ2dYP28kkYhvXKyUh22ocTyzciRrx752FJ8+oKUDQ07qnP4O/D8oAFo9pbZVU1MJ3wSMTXkpOVI/DrkJhChQ==", - "license": "MIT", - "dependencies": { - "@floating-ui/core": "^1.6.4", - "@floating-ui/dom": "^1.6.7", - "@internationalized/date": "^3.5.6", - "esm-env": "^1.1.2", - "runed": "^0.15.2", - "svelte-toolbelt": "^0.4.4" - }, - "engines": { - "node": ">=18", - "pnpm": ">=8.7.0" - }, - "funding": { - "url": "https://github.com/sponsors/huntabyte" - }, - "peerDependencies": { - "svelte": "^5.0.0-next.1" - } - }, - "node_modules/bits-ui/node_modules/@floating-ui/core": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.3.tgz", - "integrity": "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==", - "license": "MIT", - "dependencies": { - "@floating-ui/utils": "^0.2.10" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, "node_modules/blake2b": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/blake2b/-/blake2b-2.1.4.tgz", @@ -19967,166 +18069,6 @@ "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", "license": "MIT" }, - "node_modules/browser-level": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/browser-level/-/browser-level-3.0.0.tgz", - "integrity": "sha512-kGXtLh29jMwqKaskz5xeDLtCtN1KBz/DbQSqmvH7QdJiyGRC7RAM8PPg6gvUiNMa+wVnaxS9eSmEtP/f5ajOVw==", - "license": "MIT", - "peer": true, - "dependencies": { - "abstract-level": "^3.1.0" - } - }, - "node_modules/browser-resolve": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", - "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve": "^1.17.0" - } - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "node_modules/browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/browserify-rsa": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.1.tgz", - "integrity": "sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^5.2.1", - "randombytes": "^2.1.0", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/browserify-sign": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.5.tgz", - "integrity": "sha512-C2AUdAJg6rlM2W5QMp2Q4KGQMVBwR1lIimTsUnutJ8bMpW5B52pGpR2gEnNBNwijumDo5FojQ0L9JrXA8m4YEw==", - "dev": true, - "license": "ISC", - "dependencies": { - "bn.js": "^5.2.2", - "browserify-rsa": "^4.1.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.6.1", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.9", - "readable-stream": "^2.3.8", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/browserify-sign/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/browserify-sign/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/browserify-sign/node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/browserify-sign/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/browserify-sign/node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pako": "~1.0.5" - } - }, - "node_modules/browserify-zlib/node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true, - "license": "(MIT AND Zlib)" - }, "node_modules/browserslist": { "version": "4.28.1", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", @@ -20202,30 +18144,6 @@ "node-int64": "^0.4.0" } }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -20233,33 +18151,6 @@ "dev": true, "license": "MIT" }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/buffer/node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, "node_modules/builtin-modules": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", @@ -20273,13 +18164,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", - "dev": true, - "license": "MIT" - }, "node_modules/bundle-require": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-5.1.0.tgz", @@ -20654,12 +18538,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/chardet": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", - "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", - "license": "MIT" - }, "node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", @@ -20753,23 +18631,6 @@ "url": "https://polar.sh/cva" } }, - "node_modules/classic-level": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/classic-level/-/classic-level-3.0.0.tgz", - "integrity": "sha512-yGy8j8LjPbN0Bh3+ygmyYvrmskVita92pD/zCoalfcC9XxZj6iDtZTAnz+ot7GG8p9KLTG+MZ84tSA4AhkgVZQ==", - "hasInstallScript": true, - "license": "MIT", - "peer": true, - "dependencies": { - "abstract-level": "^3.1.0", - "module-error": "^1.0.1", - "napi-macros": "^2.2.2", - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/classnames": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", @@ -20799,39 +18660,6 @@ "node": ">=0.8.0" } }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "license": "MIT", - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-spinners": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", - "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", - "license": "ISC", - "engines": { - "node": ">= 12" - } - }, "node_modules/client-only": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", @@ -20889,15 +18717,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, "node_modules/clsx": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", @@ -20997,50 +18816,6 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "license": "MIT" }, - "node_modules/concurrently": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz", - "integrity": "sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.2", - "date-fns": "^2.30.0", - "lodash": "^4.17.21", - "rxjs": "^7.8.1", - "shell-quote": "^1.8.1", - "spawn-command": "0.0.2", - "supports-color": "^8.1.1", - "tree-kill": "^1.2.2", - "yargs": "^17.7.2" - }, - "bin": { - "conc": "dist/bin/concurrently.js", - "concurrently": "dist/bin/concurrently.js" - }, - "engines": { - "node": "^14.13.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" - } - }, - "node_modules/concurrently/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, "node_modules/confbox": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", @@ -21058,51 +18833,12 @@ "node": "^14.18.0 || >=16.10.0" } }, - "node_modules/console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true - }, - "node_modules/constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", - "dev": true, - "license": "MIT" - }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "license": "MIT" }, - "node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/copy-anything": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-4.0.5.tgz", - "integrity": "sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-what": "^5.2.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" - } - }, "node_modules/copy-to-clipboard": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz", @@ -21132,24 +18868,6 @@ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "license": "MIT" }, - "node_modules/create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", - "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", - "dev": true, - "license": "MIT" - }, "node_modules/create-hash": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", @@ -21249,47 +18967,6 @@ "node": ">= 8" } }, - "node_modules/crypto-browserify": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.1.tgz", - "integrity": "sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserify-cipher": "^1.0.1", - "browserify-sign": "^4.2.3", - "create-ecdh": "^4.0.4", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "diffie-hellman": "^5.0.3", - "hash-base": "~3.0.4", - "inherits": "^2.0.4", - "pbkdf2": "^3.1.2", - "public-encrypt": "^4.0.3", - "randombytes": "^2.1.0", - "randomfill": "^1.0.4" - }, - "engines": { - "node": ">= 0.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/crypto-browserify/node_modules/hash-base": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.5.tgz", - "integrity": "sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.4", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/css-background-parser": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/css-background-parser/-/css-background-parser-0.1.0.tgz", @@ -21413,23 +19090,6 @@ "dev": true, "license": "MIT" }, - "node_modules/date-fns": { - "version": "2.30.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", - "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.21.0" - }, - "engines": { - "node": ">=0.11" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" - } - }, "node_modules/dayjs": { "version": "1.11.19", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", @@ -21557,13 +19217,6 @@ } } }, - "node_modules/dedent-js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dedent-js/-/dedent-js-1.0.1.tgz", - "integrity": "sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==", - "dev": true, - "license": "MIT" - }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -21579,18 +19232,6 @@ "node": ">=0.10.0" } }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "license": "MIT", - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/defer-to-connect": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", @@ -21652,17 +19293,6 @@ "node": ">=6" } }, - "node_modules/des.js": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", - "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, "node_modules/detect-europe-js": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/detect-europe-js/-/detect-europe-js-0.1.2.tgz", @@ -21709,12 +19339,6 @@ "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", "license": "MIT" }, - "node_modules/devalue": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.1.tgz", - "integrity": "sha512-jDwizj+IlEZBunHcOuuFVBnIMPAEHvTsJj0BcIp94xYguLRVBcXO853px/MyIJvbVzWdsGvrRweIUWJw8hBP7A==", - "license": "MIT" - }, "node_modules/devlop": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", @@ -21754,25 +19378,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", - "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", - "dev": true, - "license": "MIT" - }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -21825,19 +19430,6 @@ "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" }, - "node_modules/domain-browser": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.22.0.tgz", - "integrity": "sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, "node_modules/dotenv": { "version": "16.6.1", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", @@ -23101,12 +20693,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/esm-env": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.2.tgz", - "integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==", - "license": "MIT" - }, "node_modules/espree": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", @@ -23150,15 +20736,6 @@ "node": ">=0.10" } }, - "node_modules/esrap": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/esrap/-/esrap-2.2.1.tgz", - "integrity": "sha512-GiYWG34AN/4CUyaWAgunGt0Rxvr1PTMlGC0vvEov/uOQYWne2bpN03Um+k8jT+q3op33mKouP2zeJ6OlM+qeUg==", - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - } - }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -23280,41 +20857,12 @@ "node": ">=0.10.0" } }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/eventemitter3": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", "license": "MIT" }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -23368,16 +20916,6 @@ "node": ">= 0.8.0" } }, - "node_modules/exit-x": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz", - "integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/expect": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", @@ -23453,15 +20991,6 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "license": "MIT" }, - "node_modules/fast-redact": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz", - "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/fastq": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", @@ -23481,13 +21010,6 @@ "bser": "2.1.1" } }, - "node_modules/fetch-retry": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/fetch-retry/-/fetch-retry-6.0.0.tgz", - "integrity": "sha512-BUFj1aMubgib37I3v4q78fYo63Po7t4HUPTpQ6/QE6yK6cIQrP+W43FYToeTEyg5m2Y7eFUtijUuAv/PDlWuag==", - "license": "MIT", - "peer": true - }, "node_modules/fflate": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.7.4.tgz", @@ -23847,13 +21369,6 @@ "node": ">= 18" } }, - "node_modules/fp-ts": { - "version": "2.16.11", - "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-2.16.11.tgz", - "integrity": "sha512-LaI+KaX2NFkfn1ZGHoKCmcfv7yrZsC3b8NtWsTVQeHkq4F27vI5igUuO53sxqDEa2gNQMHFPmpojDw/1zmUK7w==", - "license": "MIT", - "peer": true - }, "node_modules/fraction.js": { "version": "5.3.4", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", @@ -24373,53 +21888,6 @@ "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" } }, - "node_modules/graphql-tag": { - "version": "2.12.6", - "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", - "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", - "license": "MIT", - "peer": true, - "dependencies": { - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/graphql-ws": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/graphql-ws/-/graphql-ws-6.0.6.tgz", - "integrity": "sha512-zgfER9s+ftkGKUZgc0xbx8T7/HMO4AV5/YuYiFc+AtgcO5T0v8AxYYNQ+ltzuzDZgNkYJaFspm5MMYLjQzrkmw==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=20" - }, - "peerDependencies": { - "@fastify/websocket": "^10 || ^11", - "crossws": "~0.3", - "graphql": "^15.10.1 || ^16", - "uWebSockets.js": "^20", - "ws": "^8" - }, - "peerDependenciesMeta": { - "@fastify/websocket": { - "optional": true - }, - "crossws": { - "optional": true - }, - "uWebSockets.js": { - "optional": true - }, - "ws": { - "optional": true - } - } - }, "node_modules/handlebars": { "version": "4.7.8", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", @@ -24752,23 +22220,6 @@ "minimalistic-crypto-utils": "^1.0.1" } }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "license": "BSD-3-Clause", - "peer": true, - "dependencies": { - "react-is": "^16.7.0" - } - }, - "node_modules/hoist-non-react-statics/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "license": "MIT", - "peer": true - }, "node_modules/hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", @@ -24823,13 +22274,6 @@ "node": ">=10.19.0" } }, - "node_modules/https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", - "dev": true, - "license": "MIT" - }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -24848,22 +22292,6 @@ "node": ">=0.4" } }, - "node_modules/iconv-lite": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.1.tgz", - "integrity": "sha512-2Tth85cXwGFHfvRgZWszZSvdo+0Xsqmw8k8ZwxScfcBneNUraK+dxRxRm24nszx80Y0TVio8kKLt5sLE7ZCLlw==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -25002,63 +22430,6 @@ "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==", "license": "MIT" }, - "node_modules/inquirer": { - "version": "9.3.8", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.3.8.tgz", - "integrity": "sha512-pFGGdaHrmRKMh4WoDDSowddgjT1Vkl90atobmTeSmcPGdYiwikch/m/Ef5wRaiamHejtw0cUUMMerzDUXCci2w==", - "license": "MIT", - "dependencies": { - "@inquirer/external-editor": "^1.0.2", - "@inquirer/figures": "^1.0.3", - "ansi-escapes": "^4.3.2", - "cli-width": "^4.1.0", - "mute-stream": "1.0.0", - "ora": "^5.4.1", - "run-async": "^3.0.0", - "rxjs": "^7.8.1", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/inquirer/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/inquirer/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/inquirer/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/internal-slot": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", @@ -25073,16 +22444,6 @@ "node": ">= 0.4" } }, - "node_modules/io-ts": { - "version": "2.2.22", - "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-2.2.22.tgz", - "integrity": "sha512-FHCCztTkHoV9mdBsHpocLpdTAfh956ZQcIkWQxxS0U5HT53vtrcuYdQneEJKH6xILaLNzXVl2Cvwtoy8XNN0AA==", - "license": "MIT", - "peer": true, - "peerDependencies": { - "fp-ts": "^2.5.0" - } - }, "node_modules/ipaddr.js": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.3.0.tgz", @@ -25218,30 +22579,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "peer": true, - "engines": { - "node": ">=4" - } - }, "node_modules/is-builtin-module": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", @@ -25431,15 +22768,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/is-map": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", @@ -25458,23 +22786,6 @@ "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", "license": "MIT" }, - "node_modules/is-nan": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", - "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-negative-zero": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", @@ -25667,18 +22978,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-weakmap": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", @@ -25722,19 +23021,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-what": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-5.5.0.tgz", - "integrity": "sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" - } - }, "node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", @@ -25756,16 +23042,6 @@ "node": ">=12" } }, - "node_modules/isomorphic-timers-promises": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/isomorphic-timers-promises/-/isomorphic-timers-promises-1.0.1.tgz", - "integrity": "sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, "node_modules/isomorphic-ws": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", @@ -26705,6 +23981,7 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, "license": "MIT", "dependencies": { "universalify": "^2.0.0" @@ -26774,95 +24051,6 @@ "node": ">=0.10" } }, - "node_modules/level": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/level/-/level-10.0.0.tgz", - "integrity": "sha512-aZJvdfRr/f0VBbSRF5C81FHON47ZsC2TkGxbBezXpGGXAUEL/s6+GP73nnhAYRSCIqUNsmJjfeOF4lzRDKbUig==", - "license": "MIT", - "peer": true, - "dependencies": { - "abstract-level": "^3.1.0", - "browser-level": "^3.0.0", - "classic-level": "^3.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/level" - } - }, - "node_modules/level-supports": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-6.2.0.tgz", - "integrity": "sha512-QNxVXP0IRnBmMsJIh+sb2kwNCYcKciQZJEt+L1hPCHrKNELllXhvrlClVHXBYZVT+a7aTSM6StgNXdAldoab3w==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=16" - } - }, - "node_modules/level-transcoder": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz", - "integrity": "sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==", - "license": "MIT", - "peer": true, - "dependencies": { - "buffer": "^6.0.3", - "module-error": "^1.0.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/level-transcoder/node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "peer": true - }, - "node_modules/level-transcoder/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -26984,12 +24172,6 @@ "node": ">=8.9.0" } }, - "node_modules/locate-character": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", - "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", - "license": "MIT" - }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -27047,22 +24229,6 @@ "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==", "license": "MIT" }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/long": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", @@ -27123,6 +24289,7 @@ "version": "0.30.21", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" @@ -27213,16 +24380,6 @@ "node": ">= 0.4" } }, - "node_modules/maybe-combine-errors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/maybe-combine-errors/-/maybe-combine-errors-1.0.0.tgz", - "integrity": "sha512-eefp6IduNPT6fVdwPp+1NgD0PML1NU5P6j1Mj5nz1nidX8/sWY7119WL8vTAHgqfsY74TzW0w1XPgdYEKkGZ5A==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10" - } - }, "node_modules/md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -28097,27 +25254,6 @@ "node": ">=8.6" } }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "bin": { - "miller-rabin": "bin/miller-rabin" - } - }, - "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", - "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", - "dev": true, - "license": "MIT" - }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -28143,6 +25279,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -28301,36 +25438,6 @@ "integrity": "sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==", "license": "MIT" }, - "node_modules/module-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz", - "integrity": "sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/mrmime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", - "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -28343,15 +25450,6 @@ "integrity": "sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==", "license": "Apache-2.0 OR MIT" }, - "node_modules/mute-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", - "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", @@ -28394,13 +25492,6 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/napi-macros": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.2.2.tgz", - "integrity": "sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==", - "license": "MIT", - "peer": true - }, "node_modules/napi-postinstall": { "version": "0.3.4", "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", @@ -28621,65 +25712,6 @@ "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", "license": "MIT" }, - "node_modules/node-stdlib-browser": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-stdlib-browser/-/node-stdlib-browser-1.3.1.tgz", - "integrity": "sha512-X75ZN8DCLftGM5iKwoYLA3rjnrAEs97MkzvSd4q2746Tgpg8b8XWiBGiBG4ZpgcAqBgtgPHTiAc8ZMCvZuikDw==", - "dev": true, - "license": "MIT", - "dependencies": { - "assert": "^2.0.0", - "browser-resolve": "^2.0.0", - "browserify-zlib": "^0.2.0", - "buffer": "^5.7.1", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "create-require": "^1.1.1", - "crypto-browserify": "^3.12.1", - "domain-browser": "4.22.0", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "isomorphic-timers-promises": "^1.0.1", - "os-browserify": "^0.3.0", - "path-browserify": "^1.0.1", - "pkg-dir": "^5.0.0", - "process": "^0.11.10", - "punycode": "^1.4.1", - "querystring-es3": "^0.2.1", - "readable-stream": "^3.6.0", - "stream-browserify": "^3.0.0", - "stream-http": "^3.2.0", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.1", - "url": "^0.11.4", - "util": "^0.12.4", - "vm-browserify": "^1.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-stdlib-browser/node_modules/pkg-dir": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", - "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^5.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-stdlib-browser/node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "dev": true, - "license": "MIT" - }, "node_modules/nofilter": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", @@ -31318,23 +28350,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object-is": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", - "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -31429,26 +28444,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/obug": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", - "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", - "dev": true, - "funding": [ - "https://github.com/sponsors/sxzz", - "https://opencollective.com/debug" - ], - "license": "MIT" - }, - "node_modules/on-exit-leak-free": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", - "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==", - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -31462,6 +28457,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" @@ -31485,19 +28481,6 @@ "regex-recursion": "^5.1.1" } }, - "node_modules/optimism": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.18.1.tgz", - "integrity": "sha512-mLXNwWPa9dgFyDqkNi54sjDyNJ9/fTI6WGBLgnXku1vdKY/jovHfZT5r+aiVeFFLOz+foPNOm5YJ4mqgld2GBQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@wry/caches": "^1.0.0", - "@wry/context": "^0.7.0", - "@wry/trie": "^0.5.0", - "tslib": "^2.3.0" - } - }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -31515,36 +28498,6 @@ "node": ">= 0.8.0" } }, - "node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "license": "MIT", - "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", - "dev": true, - "license": "MIT" - }, "node_modules/own-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", @@ -31657,23 +28610,6 @@ "node": ">=6" } }, - "node_modules/parse-asn1": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.9.tgz", - "integrity": "sha512-fIYNuZ/HastSb80baGOuPRo1O9cf4baWw5WsAp7dBuUzeTD/BoaG8sVTdlPFksBE2lF21dN+A1AnrpIjSWqHHg==", - "dev": true, - "license": "ISC", - "dependencies": { - "asn1.js": "^4.10.1", - "browserify-aes": "^1.2.0", - "evp_bytestokey": "^1.0.3", - "pbkdf2": "^3.1.5", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/parse-css-color": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/parse-css-color/-/parse-css-color-0.2.1.tgz", @@ -31767,13 +28703,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "dev": true, - "license": "MIT" - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -31902,104 +28831,6 @@ "node": ">=0.10.0" } }, - "node_modules/pino": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-8.21.0.tgz", - "integrity": "sha512-ip4qdzjkAyDDZklUaZkcRFb2iA118H9SgRh8yzTkSQK8HilsOJF7rSY8HoW5+I0M46AZgX/pxbprf2vvzQCE0Q==", - "license": "MIT", - "dependencies": { - "atomic-sleep": "^1.0.0", - "fast-redact": "^3.1.1", - "on-exit-leak-free": "^2.1.0", - "pino-abstract-transport": "^1.2.0", - "pino-std-serializers": "^6.0.0", - "process-warning": "^3.0.0", - "quick-format-unescaped": "^4.0.3", - "real-require": "^0.2.0", - "safe-stable-stringify": "^2.3.1", - "sonic-boom": "^3.7.0", - "thread-stream": "^2.6.0" - }, - "bin": { - "pino": "bin.js" - } - }, - "node_modules/pino-abstract-transport": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.2.0.tgz", - "integrity": "sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==", - "license": "MIT", - "dependencies": { - "readable-stream": "^4.0.0", - "split2": "^4.0.0" - } - }, - "node_modules/pino-abstract-transport/node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/pino-abstract-transport/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/pino-abstract-transport/node_modules/readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/pino-std-serializers": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz", - "integrity": "sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==", - "license": "MIT" - }, "node_modules/pirates": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", @@ -32445,12 +29276,6 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "license": "MIT" }, - "node_modules/process-warning": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz", - "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==", - "license": "MIT" - }, "node_modules/progress-events": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/progress-events/-/progress-events-1.0.1.tgz", @@ -32527,148 +29352,6 @@ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "license": "MIT" }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", - "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", - "dev": true, - "license": "MIT" - }, - "node_modules/publint": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/publint/-/publint-0.2.12.tgz", - "integrity": "sha512-YNeUtCVeM4j9nDiTT2OPczmlyzOkIXNtdDZnSuajAxS/nZ6j3t7Vs9SUB4euQNddiltIwu7Tdd3s+hr08fAsMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "npm-packlist": "^5.1.3", - "picocolors": "^1.1.1", - "sade": "^1.8.1" - }, - "bin": { - "publint": "lib/cli.js" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://bjornlu.com/sponsor" - } - }, - "node_modules/publint/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/publint/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/publint/node_modules/ignore-walk": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz", - "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==", - "dev": true, - "license": "ISC", - "dependencies": { - "minimatch": "^5.0.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/publint/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/publint/node_modules/npm-bundled": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-2.0.1.tgz", - "integrity": "sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==", - "dev": true, - "license": "ISC", - "dependencies": { - "npm-normalize-package-bin": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/publint/node_modules/npm-normalize-package-bin": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", - "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/publint/node_modules/npm-packlist": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.3.tgz", - "integrity": "sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^8.0.1", - "ignore-walk": "^5.0.1", - "npm-bundled": "^2.0.0", - "npm-normalize-package-bin": "^2.0.0" - }, - "bin": { - "npm-packlist": "bin/index.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -32723,31 +29406,6 @@ "node": ">=16.0.0" } }, - "node_modules/qs": { - "version": "6.14.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", - "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -32768,12 +29426,6 @@ ], "license": "MIT" }, - "node_modules/quick-format-unescaped": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", - "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==", - "license": "MIT" - }, "node_modules/quick-lru": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", @@ -32795,17 +29447,6 @@ "safe-buffer": "^5.1.0" } }, - "node_modules/randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, "node_modules/react": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", @@ -33115,20 +29756,6 @@ "node": ">=8" } }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -33141,15 +29768,6 @@ "node": ">=8.10.0" } }, - "node_modules/real-require": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", - "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", - "license": "MIT", - "engines": { - "node": ">= 12.13.0" - } - }, "node_modules/recma-build-jsx": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz", @@ -33333,25 +29951,6 @@ "jsesc": "bin/jsesc" } }, - "node_modules/rehackt": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/rehackt/-/rehackt-0.1.0.tgz", - "integrity": "sha512-7kRDOuLHB87D/JESKxQoRwv4DzbIdwkAGQ7p6QKGdVlY1IZheUnVhlk/4UZlNUVxdAXpyxikE3URsG067ybVzw==", - "license": "MIT", - "peer": true, - "peerDependencies": { - "@types/react": "*", - "react": "*" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "react": { - "optional": true - } - } - }, "node_modules/rehype-recma": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/rehype-recma/-/rehype-recma-1.0.0.tgz", @@ -33551,25 +30150,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "license": "MIT", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/restore-cursor/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "license": "ISC" - }, "node_modules/reusify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", @@ -33646,15 +30226,6 @@ "fsevents": "~2.3.2" } }, - "node_modules/run-async": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", - "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -33678,21 +30249,6 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/runed": { - "version": "0.15.4", - "resolved": "https://registry.npmjs.org/runed/-/runed-0.15.4.tgz", - "integrity": "sha512-kmbpstUd7v2FdlBM+MT78IyuOVd38tq/e7MHvVb0fnVCsPSPMD/m2Xh+wUhzg9qCJgxRjBbIKu68DlH/x5VXJA==", - "funding": [ - "https://github.com/sponsors/huntabyte", - "https://github.com/sponsors/tglide" - ], - "dependencies": { - "esm-env": "^1.0.0" - }, - "peerDependencies": { - "svelte": "^5.0.0-next.1" - } - }, "node_modules/rxjs": { "version": "7.8.2", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", @@ -33702,19 +30258,6 @@ "tslib": "^2.1.0" } }, - "node_modules/sade": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", - "dev": true, - "license": "MIT", - "dependencies": { - "mri": "^1.1.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/safe-array-concat": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", @@ -33787,21 +30330,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-stable-stringify": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", - "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" - }, "node_modules/satori": { "version": "0.12.2", "resolved": "https://registry.npmjs.org/satori/-/satori-0.12.2.tgz", @@ -33839,13 +30367,6 @@ "loose-envify": "^1.1.0" } }, - "node_modules/scule": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/scule/-/scule-1.3.0.tgz", - "integrity": "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==", - "dev": true, - "license": "MIT" - }, "node_modules/search-insights": { "version": "2.17.3", "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.17.3.tgz", @@ -33895,13 +30416,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/set-cookie-parser": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", - "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", - "dev": true, - "license": "MIT" - }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -33948,13 +30462,6 @@ "node": ">= 0.4" } }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true, - "license": "MIT" - }, "node_modules/sha.js": { "version": "2.4.12", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz", @@ -33996,19 +30503,6 @@ "node": ">=8" } }, - "node_modules/shell-quote": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", - "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/shiki": { "version": "1.29.2", "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.29.2.tgz", @@ -34120,21 +30614,6 @@ "loader-utils": "^2.0.0" } }, - "node_modules/sirv": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz", - "integrity": "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@polka/url": "^1.0.0-next.24", - "mrmime": "^2.0.0", - "totalist": "^3.0.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -34151,15 +30630,6 @@ "node": ">=8" } }, - "node_modules/sonic-boom": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.8.1.tgz", - "integrity": "sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==", - "license": "MIT", - "dependencies": { - "atomic-sleep": "^1.0.0" - } - }, "node_modules/sort-object-keys": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/sort-object-keys/-/sort-object-keys-2.0.1.tgz", @@ -34285,12 +30755,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/spawn-command": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz", - "integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==", - "dev": true - }, "node_modules/spdx-correct": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", @@ -34327,15 +30791,6 @@ "dev": true, "license": "CC0-1.0" }, - "node_modules/split2": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", - "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", - "license": "ISC", - "engines": { - "node": ">= 10.x" - } - }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -34385,30 +30840,6 @@ "node": ">= 0.4" } }, - "node_modules/stream-browserify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", - "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "~2.0.4", - "readable-stream": "^3.5.0" - } - }, - "node_modules/stream-http": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", - "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", - "dev": true, - "license": "MIT", - "dependencies": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "xtend": "^4.0.2" - } - }, "node_modules/streamsearch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", @@ -34430,15 +30861,6 @@ "bare-events": "^2.2.0" } }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, "node_modules/string-length": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", @@ -34800,19 +31222,6 @@ "node": ">= 6" } }, - "node_modules/superjson": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.6.tgz", - "integrity": "sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA==", - "license": "MIT", - "peer": true, - "dependencies": { - "copy-anything": "^4" - }, - "engines": { - "node": ">=16" - } - }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -34837,157 +31246,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/svelte": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.46.1.tgz", - "integrity": "sha512-ynjfCHD3nP2el70kN5Pmg37sSi0EjOm9FgHYQdC4giWG/hzO3AatzXXJJgP305uIhGQxSufJLuYWtkY8uK/8RA==", - "license": "MIT", - "dependencies": { - "@jridgewell/remapping": "^2.3.4", - "@jridgewell/sourcemap-codec": "^1.5.0", - "@sveltejs/acorn-typescript": "^1.0.5", - "@types/estree": "^1.0.5", - "acorn": "^8.12.1", - "aria-query": "^5.3.1", - "axobject-query": "^4.1.0", - "clsx": "^2.1.1", - "devalue": "^5.5.0", - "esm-env": "^1.2.1", - "esrap": "^2.2.1", - "is-reference": "^3.0.3", - "locate-character": "^3.0.0", - "magic-string": "^0.30.11", - "zimmerframe": "^1.1.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/svelte-check": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.3.5.tgz", - "integrity": "sha512-e4VWZETyXaKGhpkxOXP+B/d0Fp/zKViZoJmneZWe/05Y2aqSKj3YN2nLfYPJBQ87WEiY4BQCQ9hWGu9mPT1a1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", - "chokidar": "^4.0.1", - "fdir": "^6.2.0", - "picocolors": "^1.0.0", - "sade": "^1.7.4" - }, - "bin": { - "svelte-check": "bin/svelte-check" - }, - "engines": { - "node": ">= 18.0.0" - }, - "peerDependencies": { - "svelte": "^4.0.0 || ^5.0.0-next.0", - "typescript": ">=5.0.0" - } - }, - "node_modules/svelte-check/node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/svelte-check/node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/svelte-check/node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/svelte-toolbelt": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/svelte-toolbelt/-/svelte-toolbelt-0.4.6.tgz", - "integrity": "sha512-k8OUvXBUifHZcAlWeY/HLg/4J0v5m2iOfOhn8fDmjt4AP8ZluaDh9eBFus9lFiLX6O5l6vKqI1dKL5wy7090NQ==", - "funding": [ - "https://github.com/sponsors/huntabyte" - ], - "dependencies": { - "clsx": "^2.1.1", - "style-to-object": "^1.0.8" - }, - "engines": { - "node": ">=18", - "pnpm": ">=8.7.0" - }, - "peerDependencies": { - "svelte": "^5.0.0-next.126" - } - }, - "node_modules/svelte/node_modules/is-reference": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", - "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.6" - } - }, - "node_modules/svelte2tsx": { - "version": "0.7.46", - "resolved": "https://registry.npmjs.org/svelte2tsx/-/svelte2tsx-0.7.46.tgz", - "integrity": "sha512-S++Vw3w47a8rBuhbz4JK0fcGea8tOoX1boT53Aib8+oUO2EKeOG+geXprJVTDfBlvR+IJdf3jIpR2RGwT6paQA==", - "dev": true, - "license": "MIT", - "dependencies": { - "dedent-js": "^1.0.1", - "scule": "^1.3.0" - }, - "peerDependencies": { - "svelte": "^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0", - "typescript": "^4.9.4 || ^5.0.0" - } - }, - "node_modules/symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10" - } - }, "node_modules/synckit": { "version": "0.11.11", "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", @@ -35236,28 +31494,6 @@ "integrity": "sha512-oB7yIimd8SuGptespDAZnNkzIz+NWaJCu2RMsbs4Wmp9zSDUM8Nhi3s2OOcqYuv3mN4hitXc8DVx+LyUmbUDiA==", "license": "ISC" }, - "node_modules/thread-stream": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.7.0.tgz", - "integrity": "sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==", - "license": "MIT", - "dependencies": { - "real-require": "^0.2.0" - } - }, - "node_modules/timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "setimmediate": "^1.0.4" - }, - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/tiny-inflate": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", @@ -35355,16 +31591,6 @@ "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==", "license": "MIT" }, - "node_modules/totalist": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", - "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -35445,19 +31671,6 @@ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", "license": "Apache-2.0" }, - "node_modules/ts-invariant": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.10.3.tgz", - "integrity": "sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/ts-jest": { "version": "29.4.6", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.6.tgz", @@ -35790,13 +32003,6 @@ "dev": true, "license": "0BSD" }, - "node_modules/tty-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", - "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", - "dev": true, - "license": "MIT" - }, "node_modules/turbo": { "version": "2.7.3", "resolved": "https://registry.npmjs.org/turbo/-/turbo-2.7.3.tgz", @@ -36366,6 +32572,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, "license": "MIT", "engines": { "node": ">= 10.0.0" @@ -36444,27 +32651,6 @@ "punycode": "^2.1.0" } }, - "node_modules/url": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.4.tgz", - "integrity": "sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^1.4.1", - "qs": "^6.12.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/url/node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "dev": true, - "license": "MIT" - }, "node_modules/use-callback-ref": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", @@ -36635,241 +32821,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/vite": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.0.tgz", - "integrity": "sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "^0.27.0", - "fdir": "^6.5.0", - "picomatch": "^4.0.3", - "postcss": "^8.5.6", - "rollup": "^4.43.0", - "tinyglobby": "^0.2.15" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^20.19.0 || >=22.12.0", - "jiti": ">=1.21.0", - "less": "^4.0.0", - "lightningcss": "^1.21.0", - "sass": "^1.70.0", - "sass-embedded": "^1.70.0", - "stylus": ">=0.54.8", - "sugarss": "^5.0.0", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "jiti": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, - "node_modules/vite-plugin-node-polyfills": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/vite-plugin-node-polyfills/-/vite-plugin-node-polyfills-0.24.0.tgz", - "integrity": "sha512-GA9QKLH+vIM8NPaGA+o2t8PDfFUl32J8rUp1zQfMKVJQiNkOX4unE51tR6ppl6iKw5yOrDAdSH7r/UIFLCVhLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rollup/plugin-inject": "^5.0.5", - "node-stdlib-browser": "^1.2.0" - }, - "funding": { - "url": "https://github.com/sponsors/davidmyersdev" - }, - "peerDependencies": { - "vite": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" - } - }, - "node_modules/vite-plugin-top-level-await": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/vite-plugin-top-level-await/-/vite-plugin-top-level-await-1.6.0.tgz", - "integrity": "sha512-bNhUreLamTIkoulCR9aDXbTbhLk6n1YE8NJUTTxl5RYskNRtzOR0ASzSjBVRtNdjIfngDXo11qOsybGLNsrdww==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rollup/plugin-virtual": "^3.0.2", - "@swc/core": "^1.12.14", - "@swc/wasm": "^1.12.14", - "uuid": "10.0.0" - }, - "peerDependencies": { - "vite": ">=2.8" - } - }, - "node_modules/vite-plugin-top-level-await/node_modules/uuid": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", - "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", - "dev": true, - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/vite-plugin-wasm": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/vite-plugin-wasm/-/vite-plugin-wasm-3.5.0.tgz", - "integrity": "sha512-X5VWgCnqiQEGb+omhlBVsvTfxikKtoOgAzQ95+BZ8gQ+VfMHIjSHr0wyvXFQCa0eKQ0fKyaL0kWcEnYqBac4lQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "vite": "^2 || ^3 || ^4 || ^5 || ^6 || ^7" - } - }, - "node_modules/vite/node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/vite/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/vite/node_modules/rollup": { - "version": "4.55.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.55.1.tgz", - "integrity": "sha512-wDv/Ht1BNHB4upNbK74s9usvl7hObDnvVzknxqY/E/O3X6rW1U1rV1aENEfJ54eFZDTNo7zv1f5N4edCluH7+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "1.0.8" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.55.1", - "@rollup/rollup-android-arm64": "4.55.1", - "@rollup/rollup-darwin-arm64": "4.55.1", - "@rollup/rollup-darwin-x64": "4.55.1", - "@rollup/rollup-freebsd-arm64": "4.55.1", - "@rollup/rollup-freebsd-x64": "4.55.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.55.1", - "@rollup/rollup-linux-arm-musleabihf": "4.55.1", - "@rollup/rollup-linux-arm64-gnu": "4.55.1", - "@rollup/rollup-linux-arm64-musl": "4.55.1", - "@rollup/rollup-linux-loong64-gnu": "4.55.1", - "@rollup/rollup-linux-loong64-musl": "4.55.1", - "@rollup/rollup-linux-ppc64-gnu": "4.55.1", - "@rollup/rollup-linux-ppc64-musl": "4.55.1", - "@rollup/rollup-linux-riscv64-gnu": "4.55.1", - "@rollup/rollup-linux-riscv64-musl": "4.55.1", - "@rollup/rollup-linux-s390x-gnu": "4.55.1", - "@rollup/rollup-linux-x64-gnu": "4.55.1", - "@rollup/rollup-linux-x64-musl": "4.55.1", - "@rollup/rollup-openbsd-x64": "4.55.1", - "@rollup/rollup-openharmony-arm64": "4.55.1", - "@rollup/rollup-win32-arm64-msvc": "4.55.1", - "@rollup/rollup-win32-ia32-msvc": "4.55.1", - "@rollup/rollup-win32-x64-gnu": "4.55.1", - "@rollup/rollup-win32-x64-msvc": "4.55.1", - "fsevents": "~2.3.2" - } - }, - "node_modules/vitefu": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.1.1.tgz", - "integrity": "sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==", - "dev": true, - "license": "MIT", - "workspaces": [ - "tests/deps/*", - "tests/projects/*", - "tests/projects/workspace/packages/*" - ], - "peerDependencies": { - "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0" - }, - "peerDependenciesMeta": { - "vite": { - "optional": true - } - } - }, - "node_modules/vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true, - "license": "MIT" - }, "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -36880,15 +32831,6 @@ "makeerror": "1.0.12" } }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "license": "MIT", - "dependencies": { - "defaults": "^1.0.3" - } - }, "node_modules/web-encoding": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/web-encoding/-/web-encoding-1.1.5.tgz", @@ -37239,16 +33181,6 @@ } } }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4" - } - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -37362,18 +33294,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/yoctocolors-cjs": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", - "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/yoga-wasm-web": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/yoga-wasm-web/-/yoga-wasm-web-0.3.3.tgz", @@ -37395,12 +33315,6 @@ "zen-observable": "0.8.15" } }, - "node_modules/zimmerframe": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.4.tgz", - "integrity": "sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==", - "license": "MIT" - }, "node_modules/zod": { "version": "3.25.76", "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", @@ -37448,1136 +33362,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "packages/bitcoin": { - "name": "@meshsdk/bitcoin", - "version": "1.9.0-beta.97", - "dependencies": { - "@bitcoin-js/tiny-secp256k1-asmjs": "^2.2.3", - "@meshsdk/common": "1.9.0-beta.97", - "@meshsdk/provider": "1.9.0-beta.97", - "axios": "^1.7.9", - "bip174": "^3.0.0", - "bip32": "^4.0.0", - "bip39": "^3.1.0", - "bitcoinjs-lib": "^6.1.7", - "ecpair": "^2.0.0" - }, - "devDependencies": { - "@meshsdk/configs": "*", - "@swc/core": "^1.10.7", - "dotenv": "^17.2.3", - "eslint": "^8.57.0", - "jest": "^30.2.0", - "ts-jest": "^29.4.5", - "tsup": "^8.0.2", - "typescript": "^5.3.3" - } - }, - "packages/bitcoin/node_modules/@jest/console": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.2.0.tgz", - "integrity": "sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "chalk": "^4.1.2", - "jest-message-util": "30.2.0", - "jest-util": "30.2.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "packages/bitcoin/node_modules/@jest/core": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-30.2.0.tgz", - "integrity": "sha512-03W6IhuhjqTlpzh/ojut/pDB2LPRygyWX8ExpgHtQA8H/3K7+1vKmcINx5UzeOX1se6YEsBsOHQ1CRzf3fOwTQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "30.2.0", - "@jest/pattern": "30.0.1", - "@jest/reporters": "30.2.0", - "@jest/test-result": "30.2.0", - "@jest/transform": "30.2.0", - "@jest/types": "30.2.0", - "@types/node": "*", - "ansi-escapes": "^4.3.2", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "exit-x": "^0.2.2", - "graceful-fs": "^4.2.11", - "jest-changed-files": "30.2.0", - "jest-config": "30.2.0", - "jest-haste-map": "30.2.0", - "jest-message-util": "30.2.0", - "jest-regex-util": "30.0.1", - "jest-resolve": "30.2.0", - "jest-resolve-dependencies": "30.2.0", - "jest-runner": "30.2.0", - "jest-runtime": "30.2.0", - "jest-snapshot": "30.2.0", - "jest-util": "30.2.0", - "jest-validate": "30.2.0", - "jest-watcher": "30.2.0", - "micromatch": "^4.0.8", - "pretty-format": "30.2.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "packages/bitcoin/node_modules/@jest/environment": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz", - "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/fake-timers": "30.2.0", - "@jest/types": "30.2.0", - "@types/node": "*", - "jest-mock": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "packages/bitcoin/node_modules/@jest/expect": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.2.0.tgz", - "integrity": "sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "expect": "30.2.0", - "jest-snapshot": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "packages/bitcoin/node_modules/@jest/expect-utils": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", - "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "packages/bitcoin/node_modules/@jest/fake-timers": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", - "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.2.0", - "@sinonjs/fake-timers": "^13.0.0", - "@types/node": "*", - "jest-message-util": "30.2.0", - "jest-mock": "30.2.0", - "jest-util": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "packages/bitcoin/node_modules/@jest/globals": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.2.0.tgz", - "integrity": "sha512-b63wmnKPaK+6ZZfpYhz9K61oybvbI1aMcIs80++JI1O1rR1vaxHUCNqo3ITu6NU0d4V34yZFoHMn/uoKr/Rwfw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "30.2.0", - "@jest/expect": "30.2.0", - "@jest/types": "30.2.0", - "jest-mock": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "packages/bitcoin/node_modules/@jest/reporters": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.2.0.tgz", - "integrity": "sha512-DRyW6baWPqKMa9CzeiBjHwjd8XeAyco2Vt8XbcLFjiwCOEKOvy82GJ8QQnJE9ofsxCMPjH4MfH8fCWIHHDKpAQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "30.2.0", - "@jest/test-result": "30.2.0", - "@jest/transform": "30.2.0", - "@jest/types": "30.2.0", - "@jridgewell/trace-mapping": "^0.3.25", - "@types/node": "*", - "chalk": "^4.1.2", - "collect-v8-coverage": "^1.0.2", - "exit-x": "^0.2.2", - "glob": "^10.3.10", - "graceful-fs": "^4.2.11", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^5.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "30.2.0", - "jest-util": "30.2.0", - "jest-worker": "30.2.0", - "slash": "^3.0.0", - "string-length": "^4.0.2", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "packages/bitcoin/node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.34.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "packages/bitcoin/node_modules/@jest/source-map": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz", - "integrity": "sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", - "callsites": "^3.1.0", - "graceful-fs": "^4.2.11" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "packages/bitcoin/node_modules/@jest/test-result": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.2.0.tgz", - "integrity": "sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "30.2.0", - "@jest/types": "30.2.0", - "@types/istanbul-lib-coverage": "^2.0.6", - "collect-v8-coverage": "^1.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "packages/bitcoin/node_modules/@jest/test-sequencer": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.2.0.tgz", - "integrity": "sha512-wXKgU/lk8fKXMu/l5Hog1R61bL4q5GCdT6OJvdAFz1P+QrpoFuLU68eoKuVc4RbrTtNnTL5FByhWdLgOPSph+Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/test-result": "30.2.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.2.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "packages/bitcoin/node_modules/@jest/transform": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", - "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.27.4", - "@jest/types": "30.2.0", - "@jridgewell/trace-mapping": "^0.3.25", - "babel-plugin-istanbul": "^7.0.1", - "chalk": "^4.1.2", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.2.0", - "jest-regex-util": "30.0.1", - "jest-util": "30.2.0", - "micromatch": "^4.0.8", - "pirates": "^4.0.7", - "slash": "^3.0.0", - "write-file-atomic": "^5.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "packages/bitcoin/node_modules/@jest/types": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", - "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "packages/bitcoin/node_modules/@sinclair/typebox": { - "version": "0.34.47", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.47.tgz", - "integrity": "sha512-ZGIBQ+XDvO5JQku9wmwtabcVTHJsgSWAHYtVuM9pBNNR5E88v6Jcj/llpmsjivig5X8A8HHOb4/mbEKPS5EvAw==", - "dev": true, - "license": "MIT" - }, - "packages/bitcoin/node_modules/@sinonjs/fake-timers": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", - "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.1" - } - }, - "packages/bitcoin/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "packages/bitcoin/node_modules/babel-jest": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.2.0.tgz", - "integrity": "sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/transform": "30.2.0", - "@types/babel__core": "^7.20.5", - "babel-plugin-istanbul": "^7.0.1", - "babel-preset-jest": "30.2.0", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.11.0 || ^8.0.0-0" - } - }, - "packages/bitcoin/node_modules/babel-plugin-istanbul": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", - "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", - "dev": true, - "license": "BSD-3-Clause", - "workspaces": [ - "test/babel-8" - ], - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-instrument": "^6.0.2", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "packages/bitcoin/node_modules/babel-plugin-jest-hoist": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.2.0.tgz", - "integrity": "sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/babel__core": "^7.20.5" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "packages/bitcoin/node_modules/babel-preset-jest": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.2.0.tgz", - "integrity": "sha512-US4Z3NOieAQumwFnYdUWKvUKh8+YSnS/gB3t6YBiz0bskpu7Pine8pPCheNxlPEW4wnUkma2a94YuW2q3guvCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "babel-plugin-jest-hoist": "30.2.0", - "babel-preset-current-node-syntax": "^1.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.11.0 || ^8.0.0-beta.1" - } - }, - "packages/bitcoin/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "packages/bitcoin/node_modules/ci-info": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", - "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "packages/bitcoin/node_modules/cjs-module-lexer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz", - "integrity": "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==", - "dev": true, - "license": "MIT" - }, - "packages/bitcoin/node_modules/dotenv": { - "version": "17.2.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.3.tgz", - "integrity": "sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "packages/bitcoin/node_modules/expect": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", - "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/expect-utils": "30.2.0", - "@jest/get-type": "30.1.0", - "jest-matcher-utils": "30.2.0", - "jest-message-util": "30.2.0", - "jest-mock": "30.2.0", - "jest-util": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "packages/bitcoin/node_modules/istanbul-lib-source-maps": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", - "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.23", - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "packages/bitcoin/node_modules/jest": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-30.2.0.tgz", - "integrity": "sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/core": "30.2.0", - "@jest/types": "30.2.0", - "import-local": "^3.2.0", - "jest-cli": "30.2.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "packages/bitcoin/node_modules/jest-changed-files": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.2.0.tgz", - "integrity": "sha512-L8lR1ChrRnSdfeOvTrwZMlnWV8G/LLjQ0nG9MBclwWZidA2N5FviRki0Bvh20WRMOX31/JYvzdqTJrk5oBdydQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "execa": "^5.1.1", - "jest-util": "30.2.0", - "p-limit": "^3.1.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "packages/bitcoin/node_modules/jest-circus": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.2.0.tgz", - "integrity": "sha512-Fh0096NC3ZkFx05EP2OXCxJAREVxj1BcW/i6EWqqymcgYKWjyyDpral3fMxVcHXg6oZM7iULer9wGRFvfpl+Tg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "30.2.0", - "@jest/expect": "30.2.0", - "@jest/test-result": "30.2.0", - "@jest/types": "30.2.0", - "@types/node": "*", - "chalk": "^4.1.2", - "co": "^4.6.0", - "dedent": "^1.6.0", - "is-generator-fn": "^2.1.0", - "jest-each": "30.2.0", - "jest-matcher-utils": "30.2.0", - "jest-message-util": "30.2.0", - "jest-runtime": "30.2.0", - "jest-snapshot": "30.2.0", - "jest-util": "30.2.0", - "p-limit": "^3.1.0", - "pretty-format": "30.2.0", - "pure-rand": "^7.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.6" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "packages/bitcoin/node_modules/jest-cli": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.2.0.tgz", - "integrity": "sha512-Os9ukIvADX/A9sLt6Zse3+nmHtHaE6hqOsjQtNiugFTbKRHYIYtZXNGNK9NChseXy7djFPjndX1tL0sCTlfpAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/core": "30.2.0", - "@jest/test-result": "30.2.0", - "@jest/types": "30.2.0", - "chalk": "^4.1.2", - "exit-x": "^0.2.2", - "import-local": "^3.2.0", - "jest-config": "30.2.0", - "jest-util": "30.2.0", - "jest-validate": "30.2.0", - "yargs": "^17.7.2" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "packages/bitcoin/node_modules/jest-config": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.2.0.tgz", - "integrity": "sha512-g4WkyzFQVWHtu6uqGmQR4CQxz/CH3yDSlhzXMWzNjDx843gYjReZnMRanjRCq5XZFuQrGDxgUaiYWE8BRfVckA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.27.4", - "@jest/get-type": "30.1.0", - "@jest/pattern": "30.0.1", - "@jest/test-sequencer": "30.2.0", - "@jest/types": "30.2.0", - "babel-jest": "30.2.0", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "deepmerge": "^4.3.1", - "glob": "^10.3.10", - "graceful-fs": "^4.2.11", - "jest-circus": "30.2.0", - "jest-docblock": "30.2.0", - "jest-environment-node": "30.2.0", - "jest-regex-util": "30.0.1", - "jest-resolve": "30.2.0", - "jest-runner": "30.2.0", - "jest-util": "30.2.0", - "jest-validate": "30.2.0", - "micromatch": "^4.0.8", - "parse-json": "^5.2.0", - "pretty-format": "30.2.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "esbuild-register": ">=3.4.0", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "esbuild-register": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "packages/bitcoin/node_modules/jest-diff": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", - "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/diff-sequences": "30.0.1", - "@jest/get-type": "30.1.0", - "chalk": "^4.1.2", - "pretty-format": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "packages/bitcoin/node_modules/jest-docblock": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz", - "integrity": "sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "detect-newline": "^3.1.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "packages/bitcoin/node_modules/jest-each": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.2.0.tgz", - "integrity": "sha512-lpWlJlM7bCUf1mfmuqTA8+j2lNURW9eNafOy99knBM01i5CQeY5UH1vZjgT9071nDJac1M4XsbyI44oNOdhlDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0", - "@jest/types": "30.2.0", - "chalk": "^4.1.2", - "jest-util": "30.2.0", - "pretty-format": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "packages/bitcoin/node_modules/jest-environment-node": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.2.0.tgz", - "integrity": "sha512-ElU8v92QJ9UrYsKrxDIKCxu6PfNj4Hdcktcn0JX12zqNdqWHB0N+hwOnnBBXvjLd2vApZtuLUGs1QSY+MsXoNA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "30.2.0", - "@jest/fake-timers": "30.2.0", - "@jest/types": "30.2.0", - "@types/node": "*", - "jest-mock": "30.2.0", - "jest-util": "30.2.0", - "jest-validate": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "packages/bitcoin/node_modules/jest-haste-map": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", - "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "anymatch": "^3.1.3", - "fb-watchman": "^2.0.2", - "graceful-fs": "^4.2.11", - "jest-regex-util": "30.0.1", - "jest-util": "30.2.0", - "jest-worker": "30.2.0", - "micromatch": "^4.0.8", - "walker": "^1.0.8" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.3" - } - }, - "packages/bitcoin/node_modules/jest-leak-detector": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.2.0.tgz", - "integrity": "sha512-M6jKAjyzjHG0SrQgwhgZGy9hFazcudwCNovY/9HPIicmNSBuockPSedAP9vlPK6ONFJ1zfyH/M2/YYJxOz5cdQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0", - "pretty-format": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "packages/bitcoin/node_modules/jest-matcher-utils": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", - "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0", - "chalk": "^4.1.2", - "jest-diff": "30.2.0", - "pretty-format": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "packages/bitcoin/node_modules/jest-message-util": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", - "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@jest/types": "30.2.0", - "@types/stack-utils": "^2.0.3", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "micromatch": "^4.0.8", - "pretty-format": "30.2.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.6" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "packages/bitcoin/node_modules/jest-mock": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", - "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "jest-util": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "packages/bitcoin/node_modules/jest-regex-util": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", - "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "packages/bitcoin/node_modules/jest-resolve": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.2.0.tgz", - "integrity": "sha512-TCrHSxPlx3tBY3hWNtRQKbtgLhsXa1WmbJEqBlTBrGafd5fiQFByy2GNCEoGR+Tns8d15GaL9cxEzKOO3GEb2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.2.0", - "jest-pnp-resolver": "^1.2.3", - "jest-util": "30.2.0", - "jest-validate": "30.2.0", - "slash": "^3.0.0", - "unrs-resolver": "^1.7.11" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "packages/bitcoin/node_modules/jest-resolve-dependencies": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.2.0.tgz", - "integrity": "sha512-xTOIGug/0RmIe3mmCqCT95yO0vj6JURrn1TKWlNbhiAefJRWINNPgwVkrVgt/YaerPzY3iItufd80v3lOrFJ2w==", - "dev": true, - "license": "MIT", - "dependencies": { - "jest-regex-util": "30.0.1", - "jest-snapshot": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "packages/bitcoin/node_modules/jest-runner": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.2.0.tgz", - "integrity": "sha512-PqvZ2B2XEyPEbclp+gV6KO/F1FIFSbIwewRgmROCMBo/aZ6J1w8Qypoj2pEOcg3G2HzLlaP6VUtvwCI8dM3oqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "30.2.0", - "@jest/environment": "30.2.0", - "@jest/test-result": "30.2.0", - "@jest/transform": "30.2.0", - "@jest/types": "30.2.0", - "@types/node": "*", - "chalk": "^4.1.2", - "emittery": "^0.13.1", - "exit-x": "^0.2.2", - "graceful-fs": "^4.2.11", - "jest-docblock": "30.2.0", - "jest-environment-node": "30.2.0", - "jest-haste-map": "30.2.0", - "jest-leak-detector": "30.2.0", - "jest-message-util": "30.2.0", - "jest-resolve": "30.2.0", - "jest-runtime": "30.2.0", - "jest-util": "30.2.0", - "jest-watcher": "30.2.0", - "jest-worker": "30.2.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "packages/bitcoin/node_modules/jest-runtime": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.2.0.tgz", - "integrity": "sha512-p1+GVX/PJqTucvsmERPMgCPvQJpFt4hFbM+VN3n8TMo47decMUcJbt+rgzwrEme0MQUA/R+1de2axftTHkKckg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "30.2.0", - "@jest/fake-timers": "30.2.0", - "@jest/globals": "30.2.0", - "@jest/source-map": "30.0.1", - "@jest/test-result": "30.2.0", - "@jest/transform": "30.2.0", - "@jest/types": "30.2.0", - "@types/node": "*", - "chalk": "^4.1.2", - "cjs-module-lexer": "^2.1.0", - "collect-v8-coverage": "^1.0.2", - "glob": "^10.3.10", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.2.0", - "jest-message-util": "30.2.0", - "jest-mock": "30.2.0", - "jest-regex-util": "30.0.1", - "jest-resolve": "30.2.0", - "jest-snapshot": "30.2.0", - "jest-util": "30.2.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "packages/bitcoin/node_modules/jest-snapshot": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.2.0.tgz", - "integrity": "sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.27.4", - "@babel/generator": "^7.27.5", - "@babel/plugin-syntax-jsx": "^7.27.1", - "@babel/plugin-syntax-typescript": "^7.27.1", - "@babel/types": "^7.27.3", - "@jest/expect-utils": "30.2.0", - "@jest/get-type": "30.1.0", - "@jest/snapshot-utils": "30.2.0", - "@jest/transform": "30.2.0", - "@jest/types": "30.2.0", - "babel-preset-current-node-syntax": "^1.2.0", - "chalk": "^4.1.2", - "expect": "30.2.0", - "graceful-fs": "^4.2.11", - "jest-diff": "30.2.0", - "jest-matcher-utils": "30.2.0", - "jest-message-util": "30.2.0", - "jest-util": "30.2.0", - "pretty-format": "30.2.0", - "semver": "^7.7.2", - "synckit": "^0.11.8" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "packages/bitcoin/node_modules/jest-util": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", - "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "packages/bitcoin/node_modules/jest-validate": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.2.0.tgz", - "integrity": "sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0", - "@jest/types": "30.2.0", - "camelcase": "^6.3.0", - "chalk": "^4.1.2", - "leven": "^3.1.0", - "pretty-format": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "packages/bitcoin/node_modules/jest-watcher": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.2.0.tgz", - "integrity": "sha512-PYxa28dxJ9g777pGm/7PrbnMeA0Jr7osHP9bS7eJy9DuAjMgdGtxgf0uKMyoIsTWAkIbUW5hSDdJ3urmgXBqxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/test-result": "30.2.0", - "@jest/types": "30.2.0", - "@types/node": "*", - "ansi-escapes": "^4.3.2", - "chalk": "^4.1.2", - "emittery": "^0.13.1", - "jest-util": "30.2.0", - "string-length": "^4.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "packages/bitcoin/node_modules/jest-worker": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", - "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@ungap/structured-clone": "^1.3.0", - "jest-util": "30.2.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.1.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "packages/bitcoin/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "packages/bitcoin/node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "packages/bitcoin/node_modules/pure-rand": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz", - "integrity": "sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ], - "license": "MIT" - }, - "packages/bitcoin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "packages/bitcoin/node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "packages/bitcoin/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "packages/bitcoin/node_modules/write-file-atomic": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "packages/configs": { "name": "@meshsdk/configs", "version": "0.0.0", @@ -38598,7 +33382,7 @@ }, "packages/mesh-common": { "name": "@meshsdk/common", - "version": "1.9.0-beta.97", + "version": "1.9.0-beta.98", "license": "Apache-2.0", "dependencies": { "bech32": "^2.0.0", @@ -38616,11 +33400,11 @@ }, "packages/mesh-contract": { "name": "@meshsdk/contract", - "version": "1.9.0-beta.97", + "version": "1.9.0-beta.98", "license": "Apache-2.0", "dependencies": { - "@meshsdk/common": "1.9.0-beta.97", - "@meshsdk/core": "1.9.0-beta.97", + "@meshsdk/common": "1.9.0-beta.98", + "@meshsdk/core": "1.9.0-beta.98", "libsodium-wrappers-sumo": "0.7.15" }, "devDependencies": { @@ -38632,14 +33416,14 @@ }, "packages/mesh-core": { "name": "@meshsdk/core", - "version": "1.9.0-beta.97", + "version": "1.9.0-beta.98", "license": "Apache-2.0", "dependencies": { - "@meshsdk/common": "1.9.0-beta.97", - "@meshsdk/core-cst": "1.9.0-beta.97", - "@meshsdk/provider": "1.9.0-beta.97", - "@meshsdk/transaction": "1.9.0-beta.97", - "@meshsdk/wallet": "1.9.0-beta.97", + "@meshsdk/common": "1.9.0-beta.98", + "@meshsdk/core-cst": "1.9.0-beta.98", + "@meshsdk/provider": "1.9.0-beta.98", + "@meshsdk/transaction": "1.9.0-beta.98", + "@meshsdk/wallet": "1.9.0-beta.98", "libsodium-wrappers-sumo": "0.7.15" }, "devDependencies": { @@ -38651,10 +33435,10 @@ }, "packages/mesh-core-csl": { "name": "@meshsdk/core-csl", - "version": "1.9.0-beta.97", + "version": "1.9.0-beta.98", "license": "Apache-2.0", "dependencies": { - "@meshsdk/common": "1.9.0-beta.97", + "@meshsdk/common": "1.9.0-beta.98", "@sidan-lab/whisky-js-browser": "^1.0.11", "@sidan-lab/whisky-js-nodejs": "^1.0.11", "@types/base32-encoding": "^1.0.2", @@ -38664,7 +33448,6 @@ }, "devDependencies": { "@meshsdk/configs": "*", - "@meshsdk/provider": "1.9.0-beta.97", "@types/json-bigint": "^1.0.4", "eslint": "^8.57.0", "ts-jest": "^29.1.4", @@ -38674,7 +33457,7 @@ }, "packages/mesh-core-cst": { "name": "@meshsdk/core-cst", - "version": "1.9.0-beta.97", + "version": "1.9.0-beta.98", "license": "Apache-2.0", "dependencies": { "@cardano-sdk/core": "^0.46.11", @@ -38685,7 +33468,7 @@ "@harmoniclabs/pair": "^1.0.0", "@harmoniclabs/plutus-data": "1.2.6", "@harmoniclabs/uplc": "1.4.1", - "@meshsdk/common": "1.9.0-beta.97", + "@meshsdk/common": "1.9.0-beta.98", "@types/base32-encoding": "^1.0.2", "base32-encoding": "^1.0.0", "bech32": "^2.0.0", @@ -38926,26 +33709,10 @@ "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", "license": "BSD-3-Clause" }, - "packages/mesh-hydra": { - "name": "@meshsdk/hydra", - "version": "1.9.0-beta.97", - "dependencies": { - "@meshsdk/common": "1.9.0-beta.97", - "@meshsdk/core": "1.9.0-beta.97", - "@meshsdk/core-cst": "1.9.0-beta.97", - "axios": "^1.7.2" - }, - "devDependencies": { - "@meshsdk/configs": "*", - "@swc/core": "^1.10.7", - "eslint": "^8.57.0", - "tsup": "^8.0.2", - "typescript": "^5.3.3" - } - }, "packages/mesh-provider": { "name": "@meshsdk/provider", "version": "1.9.0-beta.97", + "extraneous": true, "license": "Apache-2.0", "dependencies": { "@meshsdk/common": "1.9.0-beta.97", @@ -38964,53 +33731,10 @@ "typescript": "^5.3.3" } }, - "packages/mesh-react": { - "name": "@meshsdk/react", - "version": "1.9.0-beta.97", - "license": "Apache-2.0", - "dependencies": { - "@meshsdk/common": "1.9.0-beta.97", - "@meshsdk/transaction": "1.9.0-beta.97", - "@meshsdk/wallet": "1.9.0-beta.97", - "@radix-ui/react-dialog": "^1.1.2", - "@radix-ui/react-dropdown-menu": "^2.1.2", - "@radix-ui/react-icons": "^1.3.2", - "@radix-ui/react-label": "^2.1.1", - "@radix-ui/react-tooltip": "^1.1.4", - "@utxos/sdk": "0.1.0", - "class-variance-authority": "^0.7.1", - "tailwind-merge": "^2.6.0", - "tailwindcss-animate": "^1.0.7" - }, - "devDependencies": { - "@meshsdk/configs": "*", - "@types/react": "^18.2.61", - "autoprefixer": "^10.4.18", - "concurrently": "^8.0.1", - "libsodium-wrappers-sumo": "0.7.15", - "postcss": "^8.4.35", - "tailwindcss": "^3.4.1", - "tsup": "^8.0.2", - "typescript": "latest" - }, - "peerDependencies": { - "react": ">=16.0.0 <20.0.0 || >=16.0.0-rc <20.0.0-rc || >=19.0.0-rc", - "react-dom": ">=16.0.0 <20.0.0 || >=16.0.0-rc <20.0.0-rc || >=19.0.0-rc" - } - }, - "packages/mesh-react/node_modules/tailwind-merge": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.6.0.tgz", - "integrity": "sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/dcastil" - } - }, "packages/mesh-svelte": { "name": "@meshsdk/svelte", "version": "1.9.0-beta.97", + "extraneous": true, "license": "Apache-2.0", "dependencies": { "@meshsdk/core": "1.9.0-beta.97", @@ -39039,14 +33763,14 @@ }, "packages/mesh-transaction": { "name": "@meshsdk/transaction", - "version": "1.9.0-beta.97", + "version": "1.9.0-beta.98", "license": "Apache-2.0", "dependencies": { "@cardano-sdk/core": "^0.46.11", "@cardano-sdk/input-selection": "^0.14.27", "@cardano-sdk/util": "^0.17.1", - "@meshsdk/common": "1.9.0-beta.97", - "@meshsdk/core-cst": "1.9.0-beta.97", + "@meshsdk/common": "1.9.0-beta.98", + "@meshsdk/core-cst": "1.9.0-beta.98", "json-bigint": "^1.0.0", "libsodium-wrappers-sumo": "0.7.15" }, @@ -39212,12 +33936,12 @@ }, "packages/mesh-wallet": { "name": "@meshsdk/wallet", - "version": "1.9.0-beta.97", + "version": "1.9.0-beta.98", "license": "Apache-2.0", "dependencies": { - "@meshsdk/common": "1.9.0-beta.97", - "@meshsdk/core-cst": "1.9.0-beta.97", - "@meshsdk/transaction": "1.9.0-beta.97", + "@meshsdk/common": "1.9.0-beta.98", + "@meshsdk/core-cst": "1.9.0-beta.98", + "@meshsdk/transaction": "1.9.0-beta.98", "@simplewebauthn/browser": "^13.0.0", "libsodium-wrappers-sumo": "0.7.15" }, @@ -39232,6 +33956,7 @@ "packages/midnight-contracts-wizard": { "name": "@meshsdk/midnight-contracts-wizard", "version": "1.9.0-beta.97", + "extraneous": true, "license": "Apache-2.0", "dependencies": { "chalk": "^4.1.2", @@ -39257,29 +33982,10 @@ "node": ">=18.0.0" } }, - "packages/midnight-contracts-wizard/node_modules/@types/node": { - "version": "20.19.25", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, - "packages/midnight-contracts-wizard/node_modules/fs-extra": { - "version": "11.3.2", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, "packages/midnight-setup": { "name": "@meshsdk/midnight-setup", "version": "1.9.0-beta.97", + "extraneous": true, "license": "Apache-2.0", "dependencies": { "@midnight-ntwrk/compact-runtime": "^0.8.1", @@ -39306,7 +34012,7 @@ }, "scripts/mesh-cli": { "name": "meshjs", - "version": "1.9.0-beta.97", + "version": "1.9.0-beta.98", "license": "Apache-2.0", "dependencies": { "@sidan-lab/cardano-bar": "^0.0.7", diff --git a/packages/mesh-core-csl/package.json b/packages/mesh-core-csl/package.json index 1c2aabefe..e68899491 100644 --- a/packages/mesh-core-csl/package.json +++ b/packages/mesh-core-csl/package.json @@ -31,7 +31,6 @@ }, "devDependencies": { "@meshsdk/configs": "*", - "@meshsdk/provider": "1.9.0-beta.98", "@types/json-bigint": "^1.0.4", "eslint": "^8.57.0", "ts-jest": "^29.1.4", From d8da97a85fd32ba72e14a29edd5583950f64483b Mon Sep 17 00:00:00 2001 From: Jingles Date: Mon, 26 Jan 2026 00:14:19 +0800 Subject: [PATCH 7/7] fix build error at docs --- apps/docs/src/app/[package]/page.tsx | 4 ---- apps/docs/src/app/[package]/providers.tsx | 28 ----------------------- apps/docs/src/data/get-data.ts | 4 ---- apps/docs/src/data/page-routes.ts | 5 ---- 4 files changed, 41 deletions(-) delete mode 100644 apps/docs/src/app/[package]/providers.tsx diff --git a/apps/docs/src/app/[package]/page.tsx b/apps/docs/src/app/[package]/page.tsx index a3aca964a..abe931c88 100644 --- a/apps/docs/src/app/[package]/page.tsx +++ b/apps/docs/src/app/[package]/page.tsx @@ -4,7 +4,6 @@ import IntroTransaction from "./transactions"; import { useEffect } from "react"; import IntroWallets from "./wallets"; import IntroContracts from "./contracts"; -import IntroProviders from "./providers"; import IntroCommon from "./common"; import IntroCoreCsl from "./core-csl"; @@ -28,9 +27,6 @@ export default function PackagePage({ if (params.package === "contracts") { return ; } - if (params.package === "providers") { - return ; - } if (params.package === "common") { return ; } diff --git a/apps/docs/src/app/[package]/providers.tsx b/apps/docs/src/app/[package]/providers.tsx deleted file mode 100644 index 55db5c366..000000000 --- a/apps/docs/src/app/[package]/providers.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import { CodeGroup } from "@/components/Code"; -import { Prose } from "@/components/Prose"; -import Markdown from "react-markdown"; - -export default function IntroProviders() { - return ( -
- -

Providers

-

Data providers for connecting to the blockchain

- {/*

- Something -

*/} - {/*

- Getting started -

-

- To get started with Mesh, you need to install the latest version of - Mesh with npm: -

- - - npm install @meshsdk/core @meshsdk/react - */} -
-
- ); -} diff --git a/apps/docs/src/data/get-data.ts b/apps/docs/src/data/get-data.ts index 10a381f99..4efeaeb67 100644 --- a/apps/docs/src/data/get-data.ts +++ b/apps/docs/src/data/get-data.ts @@ -1,7 +1,6 @@ import data_transactions from "./mesh-transactions.json"; import data_wallets from "./mesh-wallets.json"; import data_contracts from "./mesh-contracts.json"; -import data_providers from "./mesh-providers.json"; import data_common from "./mesh-common.json"; import data_core_csl from "./mesh-core-csl.json"; @@ -16,9 +15,6 @@ export default function getData(dataSource: string) { if (dataSource == "core-csl") { data = data_core_csl; } - if (dataSource == "providers") { - data = data_providers; - } if (dataSource == "transactions") { data = data_transactions; } diff --git a/apps/docs/src/data/page-routes.ts b/apps/docs/src/data/page-routes.ts index b193c51f1..a82993d3e 100644 --- a/apps/docs/src/data/page-routes.ts +++ b/apps/docs/src/data/page-routes.ts @@ -14,11 +14,6 @@ export const pageRoutes = [ url: "/core-csl", title: "Core CSL", }, - { - id: "providers", - url: "/providers", - title: "Providers", - }, { id: "transactions", url: "/transactions",